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('rn', vim.lsp.buf.rename) nmap('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('sd', telescope_func("diagnostics")) nmap('ds', telescope_func("lsp_document_symbols")) nmap('as', telescope_func("lsp_dynamic_workspace_symbols")) nmap("i", vim.diagnostic.open_float) nmap('K', vim.lsp.buf.hover) nmap('', vim.lsp.buf.signature_help) nmap('gI', require('telescope.builtin').lsp_implementations) nmap('gD', vim.lsp.buf.declaration) nmap('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