59 lines
1.8 KiB
Lua
59 lines
1.8 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
|
|
}
|
|
|
|
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"}
|
|
}
|