diff options
Diffstat (limited to 'lua/gabrielgio/lsp.lua')
-rw-r--r-- | lua/gabrielgio/lsp.lua | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lua/gabrielgio/lsp.lua b/lua/gabrielgio/lsp.lua new file mode 100644 index 0000000..3856db9 --- /dev/null +++ b/lua/gabrielgio/lsp.lua @@ -0,0 +1,45 @@ +local lsp_config = require("lspconfig") + +local function set_key(mode, keys, v, opts) + return vim.keymap.set(mode, keys, v, opts) +end + +local function on_attach(client, bufnr) + do + local bufopts = {noremap = true, silent = true, buffer = bufnr} + set_key("n", "gD", vim.lsp.buf.declaration, bufopts) + set_key("n", "gd", vim.lsp.buf.definition, bufopts) + set_key("n", "K", vim.lsp.buf.hover, bufopts) + set_key("n", "gi", vim.lsp.buf.implementation, bufopts) + set_key("n", "<C-s>", vim.lsp.buf.signature_help, bufopts) + set_key("n", "<space>rn", vim.lsp.buf.declaration, bufopts) + set_key("n", "<space>ca", vim.lsp.buf.code_action, bufopts) + set_key("n", "<space>f", vim.lsp.buf.formatting, bufopts) + end + return bufnr +end + +local function setup(f) + return f({capabilities = capabilities, on_attach = on_attach}) +end + +local function load_all(l) + for _, v in ipairs(l) do setup(v) end + return nil +end + +load_all({ + lsp_config.rust_analyzer.setup, + lsp_config.clangd.setup, + lsp_config.cssls.setup, + lsp_config.html.setup, + lsp_config.emmet_ls.setup, + lsp_config.lua_ls.setup, + lsp_config.pylsp.setup +}) + +lsp_config.gopls.setup({ + capabilities = capabilities, + cmd_env = {GOFLAGS = "-tags=unit,integration,e2e"}, + on_attach = on_attach +}) |