diff --git a/lua/setup/lsp.lua b/lua/setup/lsp.lua index 0575b56..a1ead13 100644 --- a/lua/setup/lsp.lua +++ b/lua/setup/lsp.lua @@ -33,6 +33,54 @@ require("mason-lspconfig").setup({ }, }) +local on_attach = function() + vim.api.nvim_create_autocmd("LspAttach", { + desc = "LSP actions", + callback = function() + local bufmap = function(mode, lhs, rhs) + local opts = { buffer = true } + vim.keymap.set(mode, lhs, rhs, opts) + end + + -- Displays hover information about the symbol under the cursor + bufmap("n", "K", "lua vim.lsp.buf.hover()") + + -- Jump to the definition + bufmap("n", "gd", "lua vim.lsp.buf.definition()") + + -- Jump to declaration + bufmap("n", "gD", "lua vim.lsp.buf.declaration()") + + -- Lists all the implementations for the symbol under the cursor + bufmap("n", "gi", "lua vim.lsp.buf.implementation()") + + -- Jumps to the definition of the type symbol + bufmap("n", "go", "lua vim.lsp.buf.type_definition()") + + -- Lists all the references + bufmap("n", "gr", "lua vim.lsp.buf.references()") + + -- Displays a function's signature information + bufmap("n", "gs", "lua vim.lsp.buf.signature_help()") + + -- Renames all references to the symbol under the cursor + bufmap("n", "", "lua vim.lsp.buf.rename()") + + -- Selects a code action available at the current cursor position + bufmap("n", "", "lua vim.lsp.buf.code_action()") + + -- Show diagnostics in a floating window + bufmap("n", "gl", "lua vim.diagnostic.open_float()") + + -- Move to the previous diagnostic + bufmap("n", "nd", "lua vim.diagnostic.goto_prev()") + + -- Move to the next diagnostic + bufmap("n", "nd", "lua vim.diagnostic.goto_next()") + end, + }) +end + local lspconfig = require("lspconfig") require("mason-lspconfig").setup_handlers({ @@ -55,6 +103,7 @@ require("mason-lspconfig").setup_handlers({ ["lua_ls"] = function() lspconfig.lua_ls.setup({ capabilities = lsp_capabilities, + on_attach = on_attach, settings = require("config.lsp.servers.lua").settings, }) end,