1
0
Fork 0

lsp: lazy load

This commit is contained in:
Felipe 2023-09-24 23:56:39 -03:00
parent 61eca53e06
commit 4116644979
Signed by: pitbuster
SSH key fingerprint: SHA256:HDYu2Pm4/TmSX8GBwV49UvFWr1Ljg8XlHxKeCpjJpOk
6 changed files with 146 additions and 121 deletions

11
.gitmodules vendored
View file

@ -7,7 +7,7 @@
url = https://github.com/rktjmp/lush.nvim url = https://github.com/rktjmp/lush.nvim
branch = main branch = main
[submodule "pack/general/start/nvim-lspconfig"] [submodule "pack/general/start/nvim-lspconfig"]
path = pack/general/start/nvim-lspconfig path = pack/general/opt/nvim-lspconfig
url = https://github.com/neovim/nvim-lspconfig url = https://github.com/neovim/nvim-lspconfig
branch = master branch = master
[submodule "pack/general/start/nvim-treesitter"] [submodule "pack/general/start/nvim-treesitter"]
@ -111,15 +111,15 @@
url = https://github.com/Saecki/crates.nvim url = https://github.com/Saecki/crates.nvim
branch = main branch = main
[submodule "pack/general/start/neotest"] [submodule "pack/general/start/neotest"]
path = pack/general/start/neotest path = pack/general/opt/neotest
url = https://github.com/nvim-neotest/neotest url = https://github.com/nvim-neotest/neotest
branch = master branch = master
[submodule "pack/general/start/neotest-rust"] [submodule "pack/general/start/neotest-rust"]
path = pack/general/start/neotest-rust path = pack/general/opt/neotest-rust
url = https://github.com/rouge8/neotest-rust url = https://github.com/rouge8/neotest-rust
branch = main branch = main
[submodule "pack/general/start/lsp_lines.nvim"] [submodule "pack/general/start/lsp_lines.nvim"]
path = pack/general/start/lsp_lines.nvim path = pack/general/opt/lsp_lines.nvim
url = https://git.sr.ht/~whynothugo/lsp_lines.nvim url = https://git.sr.ht/~whynothugo/lsp_lines.nvim
[submodule "pack/general/opt/crates.nvim"] [submodule "pack/general/opt/crates.nvim"]
path = pack/general/opt/crates.nvim path = pack/general/opt/crates.nvim
@ -132,3 +132,6 @@
path = pack/general/start/nvim-spider path = pack/general/start/nvim-spider
url = https://github.com/chrisgrieser/nvim-spider url = https://github.com/chrisgrieser/nvim-spider
branch = main branch = main
[submodule "pack/general/opt/lsp_lines.nvim"]
path = pack/general/opt/lsp_lines.nvim
url = https://git.sr.ht/~whynothugo/lsp_lines.nvim

256
init.lua
View file

@ -1,47 +1,41 @@
vim.loader.enable() vim.loader.enable()
---- Aliases ----
local cmd = vim.cmd
local g = vim.g
local opt = vim.opt
local opt_local = vim.opt_local
---- General Config ---- ---- General Config ----
opt.mouse = "a" vim.opt.mouse = "a"
opt.tabstop = 2 vim.opt.tabstop = 2
opt.shiftwidth = 2 vim.opt.shiftwidth = 2
opt.number = true vim.opt.number = true
opt.breakindent = true vim.opt.breakindent = true
opt.showmatch = true vim.opt.showmatch = true
opt.ignorecase = true vim.opt.ignorecase = true
opt.smartcase = true vim.opt.smartcase = true
opt.joinspaces = false vim.opt.joinspaces = false
opt.showmode = false vim.opt.showmode = false
opt.hidden = true vim.opt.hidden = true
opt.backup = false vim.opt.backup = false
opt.writebackup = false vim.opt.writebackup = false
opt.swapfile = false vim.opt.swapfile = false
opt.shortmess:append({ I = true }) vim.opt.shortmess:append({ I = true })
-- whichwrap -- left/right keys can traverse up/down -- whichwrap -- left/right keys can traverse up/down
opt.whichwrap:append("<,>,[,]") vim.opt.whichwrap:append("<,>,[,]")
opt.cmdheight = 2 vim.opt.cmdheight = 2
opt.showcmd = true vim.opt.showcmd = true
opt.splitright = true vim.opt.splitright = true
opt.splitbelow = true vim.opt.splitbelow = true
g.mapleader = " " vim.g.mapleader = " "
---- Terminal ---- ---- Terminal ----
vim.api.nvim_create_autocmd({ "TermOpen" }, { vim.api.nvim_create_autocmd({ "TermOpen" }, {
callback = function() callback = function()
opt_local.number = false vim.opt_local.number = false
end, end,
}) })
---- Theming ---- ---- Theming ----
opt.termguicolors = true vim.opt.termguicolors = true
opt.background = "dark" vim.opt.background = "dark"
g.gruvbox_italic = true vim.g.gruvbox_italic = true
cmd.colorscheme("gruvbox") vim.cmd.colorscheme("gruvbox")
opt.listchars = { vim.opt.listchars = {
eol = "", eol = "",
tab = "▶▹", tab = "▶▹",
nbsp = "", nbsp = "",
@ -188,17 +182,17 @@ vim.filetype.add({ extension = { kdl = "kdl" } })
vim.api.nvim_create_autocmd({ "FileType" }, { vim.api.nvim_create_autocmd({ "FileType" }, {
pattern = "markdown", pattern = "markdown",
callback = function() callback = function()
opt_local.textwidth = 85 vim.opt_local.textwidth = 85
opt_local.spell = true vim.opt_local.spell = true
end, end,
}) })
-- YAML -- -- YAML --
vim.api.nvim_create_autocmd({ "FileType" }, { vim.api.nvim_create_autocmd({ "FileType" }, {
pattern = "yaml", pattern = "yaml",
callback = function() callback = function()
opt_local.softtabstop = 2 vim.opt_local.softtabstop = 2
opt_local.expandtab = true vim.opt_local.expandtab = true
opt_local.foldmethod = "indent" vim.opt_local.foldmethod = "indent"
end, end,
}) })
@ -271,77 +265,112 @@ cmp.setup({
}), }),
}) })
---- LSP ---- ---- LSP ----
local lsp = require("lspconfig") vim.g.lsp_loaded = false
vim.api.nvim_create_autocmd({ "FileType" }, {
-- Use an on_attach function to only map the following keys pattern = {
-- after the language server attaches to the current buffer "c",
local on_lsp_attach = function(_client, _bufnr) "cpp",
vim.keymap.set("n", "gD", vim.lsp.buf.declaration) "dot",
vim.keymap.set("n", "gd", vim.lsp.buf.definition) "go",
vim.keymap.set("n", "K", vim.lsp.buf.hover) "javascript",
vim.keymap.set("n", "gi", vim.lsp.buf.implementation) "json",
vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help) "latex",
vim.keymap.set("n", "<Leader>D", vim.lsp.buf.type_definition) "lua",
vim.keymap.set("n", "<Leader>rn", vim.lsp.buf.rename) "markdown",
vim.keymap.set("n", "<Leader>ca", vim.lsp.buf.code_action) "python",
vim.keymap.set("n", "gr", vim.lsp.buf.references) "rust",
vim.keymap.set("n", "<Leader>e", vim.diagnostic.open_float) "terraform",
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev) "tex",
vim.keymap.set("n", "]d", vim.diagnostic.goto_next) "toml",
vim.keymap.set("n", "<Leader>q", vim.diagnostic.setloclist) "typescript",
vim.keymap.set("n", "<F3>", function()
vim.lsp.buf.format({ async = true })
end)
end
-- Use a loop to conveniently call 'setup' on multiple servers and
-- map buffer local keybindings when the language server attaches
local servers = {
clangd = {},
dotls = {},
eslint = {},
gopls = {},
jsonls = {},
kotlin_language_server = {},
lua_ls = {
settings = {
Lua = {
runtime = { version = "LuaJIT" },
diagnostics = {
globals = { "vim" },
unusedLocalExclude = { "_*" },
},
workspace = {
checkThirdParty = false,
library = vim.api.nvim_get_runtime_file("", true),
},
telemetry = { enable = false },
},
},
}, },
marksman = {}, callback = function()
pylsp = {}, if vim.g.lsp_loaded == true then
rust_analyzer = {}, return
taplo = {}, end
texlab = {}, vim.g.lsp_loaded = true
tflint = {}, vim.cmd("packadd nvim-lspconfig")
tsserver = {}, vim.cmd("packadd lsp_lines.nvim")
}
local capabilities = require('cmp_nvim_lsp').default_capabilities() local lsp = require("lspconfig")
lsp.util.default_config = vim.tbl_deep_extend("force", lsp.util.default_config, { capabilities = capabilities }) -- Use an on_attach function to only map the following keys
for server, add_to_config in pairs(servers) do -- after the language server attaches to the current buffer
local config = { local on_lsp_attach = function(_client, _bufnr)
on_attach = on_lsp_attach, vim.keymap.set("n", "gD", vim.lsp.buf.declaration)
flags = { vim.keymap.set("n", "gd", vim.lsp.buf.definition)
debounce_text_changes = 150, vim.keymap.set("n", "K", vim.lsp.buf.hover)
}, vim.keymap.set("n", "gi", vim.lsp.buf.implementation)
} vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help)
for k, v in pairs(add_to_config) do vim.keymap.set("n", "<Leader>D", vim.lsp.buf.type_definition)
config[k] = v vim.keymap.set("n", "<Leader>rn", vim.lsp.buf.rename)
vim.keymap.set("n", "<Leader>ca", vim.lsp.buf.code_action)
vim.keymap.set("n", "gr", vim.lsp.buf.references)
vim.keymap.set("n", "<Leader>e", vim.diagnostic.open_float)
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev)
vim.keymap.set("n", "]d", vim.diagnostic.goto_next)
vim.keymap.set("n", "<Leader>q", vim.diagnostic.setloclist)
vim.keymap.set("n", "<F3>", function()
vim.lsp.buf.format({ async = true })
end)
end
-- Use a loop to conveniently call 'setup' on multiple servers and
-- map buffer local keybindings when the language server attaches
local servers = {
clangd = {},
dotls = {},
eslint = {},
gopls = {},
jsonls = {},
kotlin_language_server = {},
lua_ls = {
settings = {
Lua = {
runtime = { version = "LuaJIT" },
diagnostics = {
globals = { "vim" },
unusedLocalExclude = { "_*" },
},
workspace = {
checkThirdParty = false,
library = vim.api.nvim_get_runtime_file("", true),
},
telemetry = { enable = false },
},
},
},
marksman = {},
pylsp = {},
rust_analyzer = {},
taplo = {},
texlab = {},
tflint = {},
tsserver = {},
}
local capabilities = require('cmp_nvim_lsp').default_capabilities()
lsp.util.default_config = vim.tbl_deep_extend("force", lsp.util.default_config, { capabilities = capabilities })
for server, add_to_config in pairs(servers) do
local config = {
on_attach = on_lsp_attach,
flags = {
debounce_text_changes = 150,
},
}
for k, v in pairs(add_to_config) do
config[k] = v
end
lsp[server].setup(config)
end
---- lsp_lines
require("lsp_lines").setup()
-- Disable virtual_text since it's redundant due to lsp_lines.
vim.diagnostic.config({
virtual_text = false,
})
end end
lsp[server].setup(config) })
end
-- Auto format on save -- Auto format on save
vim.api.nvim_create_autocmd({ "BufWritePre" }, { vim.api.nvim_create_autocmd({ "BufWritePre" }, {
@ -356,7 +385,7 @@ vim.api.nvim_create_autocmd({ "BufWritePre" }, {
if lsp_format then if lsp_format then
vim.lsp.buf.format({ async = false }) vim.lsp.buf.format({ async = false })
else else
cmd("Format") vim.cmd("Format")
end end
end, end,
}) })
@ -485,9 +514,9 @@ require("gitsigns").setup({
---- Comment.nvim ---- Comment.nvim
require("Comment").setup() require("Comment").setup()
---- vim-markdown ---- vim-markdown
g.vim_markdown_no_default_key_mappings = 1 vim.g.vim_markdown_no_default_key_mappings = 1
g.vim_markdown_folding_disabled = 1 vim.g.vim_markdown_folding_disabled = 1
g.vim_markdown_toml_frontmatter = 1 vim.g.vim_markdown_toml_frontmatter = 1
---- Telescope ---- Telescope
local telescope = require("telescope") local telescope = require("telescope")
telescope.setup({ telescope.setup({
@ -603,13 +632,6 @@ vim.api.nvim_create_autocmd({ "FileType" }, {
end end
}) })
---- lsp_lines
require("lsp_lines").setup()
-- Disable virtual_text since it's redundant due to lsp_lines.
vim.diagnostic.config({
virtual_text = false,
})
---- nvim-surround ---- nvim-surround
require("nvim-surround").setup() require("nvim-surround").setup()