nixos-laptop/home-manager/neovim/lspconfig.lua

60 lines
1.8 KiB
Lua
Raw Normal View History

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
}
require'lspconfig'.efm.setup {
on_attach = require("lsp-format").on_attach,
init_options = {documentFormatting = true},
settings = {
languages = {
lua = {{formatCommand = "lua-format -i", formatStdin = true}},
nix = {{formatCommand = "nixfmt", formatStdin = true}}
}
},
filetypes = {"lua", "nix"}
}