1
0
Fork 0
dotfiles/.config/nvim/lua/lsp/init.lua

78 lines
2.1 KiB
Lua

local servers = {
ansiblels = {},
bashls = {},
clangd = {},
cmake = {},
csharp_ls = {},
eslint = {},
gopls = {},
hls = {},
jdtls = {},
jsonls = {},
pyright = require('lsp.pyright'),
kotlin_language_server = {},
lua_ls = require('lsp.lua_ls'),
ruff = {},
ruby_lsp = {},
rust_analyzer = {},
svls = {},
ts_ls = {},
yamlls = require('lsp.yamlls'),
}
vim.lsp.set_log_level('WARN')
local on_attach = function(_, bufnr)
local nmap = function(keys, func)
vim.keymap.set('n', keys, func, { buffer = bufnr })
end
nmap('<leader>rn', vim.lsp.buf.rename)
nmap('<leader>w', vim.lsp.buf.code_action)
local telescope_func = function(name)
return function()
require('telescope.builtin')[name]({
show_line = false
})
end
end
nmap('gd', telescope_func("lsp_definitions"))
nmap('gr', telescope_func("lsp_references"))
nmap('gt', telescope_func("lsp_type_definitions"))
-- nmap('gd', vim.lsp.buf.definition)
-- nmap('gr', vim.lsp.buf.references)
-- nmap('gt', vim.lsp.buf.type_definition)
nmap('<leader>sd', telescope_func("diagnostics"))
nmap('<leader>ds', telescope_func("lsp_document_symbols"))
nmap('<leader>as', telescope_func("lsp_dynamic_workspace_symbols"))
nmap("<leader>i", vim.diagnostic.open_float)
nmap('K', vim.lsp.buf.hover)
nmap('<C-k>', vim.lsp.buf.signature_help)
nmap('gI', require('telescope.builtin').lsp_implementations)
nmap('gD', vim.lsp.buf.declaration)
nmap('<leader>F', vim.lsp.buf.format)
end
local capabilities = vim.tbl_deep_extend('keep', require('cmp_nvim_lsp').default_capabilities(),
vim.lsp.protocol.make_client_capabilities())
capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true
}
for server_name, config in pairs(servers) do
vim.lsp.config(server_name, vim.tbl_deep_extend('keep', {
capabilities = capabilities,
on_attach = on_attach,
}, config))
vim.lsp.enable(server_name)
end