nixos-laptop/home-manager/neovim/lspconfig.lua
2023-11-10 11:20:35 +01:00

55 lines
1.7 KiB
Lua

require("lsp-format").setup {}
local on_attach = function(client, bufnr)
local bufmap = function(keys, func)
vim.keymap.set('n', keys, func, {buffer = bufnr})
end
bufmap('<leader>r', vim.lsp.buf.rename)
bufmap('<leader>a', vim.lsp.buf.code_action)
bufmap('gd', vim.lsp.buf.definition)
bufmap('gD', vim.lsp.buf.declaration)
bufmap('gI', vim.lsp.buf.implementation)
bufmap('<leader>D', vim.lsp.buf.type_definition)
bufmap('gr', require('telescope.builtin').lsp_references)
bufmap('<leader>s', require('telescope.builtin').lsp_document_symbols)
bufmap('<leader>S',
require('telescope.builtin').lsp_dynamic_workspace_symbols)
bufmap('K', vim.lsp.buf.hover)
vim.api.nvim_buf_create_user_command(bufnr, 'Format',
function(_) vim.lsp.buf.format() end,
{})
end
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
require('neodev').setup()
require'lspconfig'.nil_ls.setup {
on_attach = on_attach,
capabilities = capabilities
}
require'lspconfig'.pyright.setup {
on_attach = on_attach,
capabilities = capabilities
}
require'lspconfig'.gopls.setup {
on_attach = on_attach,
capabilities = capabilities
}
require'lspconfig'.terraformls.setup {
on_attach = on_attach,
capabilities = capabilities
}
local luaformat = {formatCommand = "lua-format -i", formatStdin = true}
require'lspconfig'.efm.setup {
on_attach = require("lsp-format").on_attach,
init_options = {documentFormatting = true},
settings = {languages = {lua = {luaformat}}},
filetypes = {"lua"}
}