neovim-dotfiles/lua/plugins/lspconfig.lua
Dario48true e3d3ab6680 new config
2025-02-03 10:21:51 +01:00

39 lines
1.5 KiB
Lua

return {
"neovim/nvim-lspconfig",
dependencies = {
{'hrsh7th/cmp-nvim-lsp'},
{'hrsh7th/nvim-cmp'},
},
config = function()
-- Reserve a space in the gutter
-- This will avoid an annoying layout shift in the screen
vim.opt.signcolumn = 'yes'
-- Add cmp_nvim_lsp capabilities settings to lspconfig
-- This should be executed before you configure any language server
local lspconfig_defaults = require('lspconfig').util.default_config
lspconfig_defaults.capabilities = vim.tbl_deep_extend(
'force',
lspconfig_defaults.capabilities,
require('cmp_nvim_lsp').default_capabilities()
)
vim.api.nvim_create_autocmd('LspAttach', {
desc = 'LSP actions',
callback = function(event)
local opts = {buffer = event.buf}
vim.keymap.set('n', 'K', function () vim.lsp.buf.hover() end, opts)
vim.keymap.set('n', 'gd', function () vim.lsp.buf.definition() end, opts)
vim.keymap.set('n', 'gD', function () vim.lsp.buf.declaration() end, opts)
vim.keymap.set('n', 'gi', function () vim.lsp.buf.implementation() end, opts)
vim.keymap.set('n', 'go', function () vim.lsp.buf.type_definition() end, opts)
vim.keymap.set('n', 'gr', function () vim.lsp.buf.references() end, opts)
vim.keymap.set('n', 'gs', function () vim.lsp.buf.signature_help() end, opts)
vim.keymap.set('n', '<F2>', function () vim.lsp.buf.rename() end, opts)
vim.keymap.set({'n', 'x'}, '<F3>', function () vim.lsp.buf.format({async = true}) end, opts)
vim.keymap.set('n', '<F4>', function () vim.lsp.buf.code_action() end, opts)
end,
})
end
}