78 lines
2.1 KiB
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
|