cleanup lsp module

This commit is contained in:
Vladan Popovic 2024-09-17 16:36:40 +02:00
parent d7f591fd26
commit c0e15e1141
1 changed files with 19 additions and 47 deletions

View File

@ -1,6 +1,4 @@
local on_attach = function(client, bufnr) local common_on_attach = function(client, bufnr)
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
-- Mappings. -- Mappings.
vim.keymap.set("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>") vim.keymap.set("n", "K", "<Cmd>lua vim.lsp.buf.hover()<CR>")
vim.keymap.set("n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>") vim.keymap.set("n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>")
@ -9,11 +7,11 @@ local on_attach = function(client, bufnr)
vim.keymap.set("n", "<leader>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>") vim.keymap.set("n", "<leader>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>")
vim.keymap.set("n", "<leader>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>") vim.keymap.set("n", "<leader>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>")
vim.keymap.set("n", "<leader>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>") vim.keymap.set("n", "<leader>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>")
vim.keymap.set("n", "<leader>r", "<cmd>lua vim.lsp.buf.rename()<CR>")
-- Autoformat on save.
if client.supports_method("textDocument/formatting") then if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", { vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr, buffer = bufnr,
callback = function() callback = function()
vim.lsp.buf.format() vim.lsp.buf.format()
@ -21,7 +19,7 @@ local on_attach = function(client, bufnr)
}) })
end end
-- use vim's default coloring -- Use vim's default coloring.
client.server_capabilities.semanticTokensProvider = nil client.server_capabilities.semanticTokensProvider = nil
for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do
vim.api.nvim_set_hl(0, group, {}) vim.api.nvim_set_hl(0, group, {})
@ -40,16 +38,15 @@ local servers = {
"ocamllsp", "ocamllsp",
"pyright", "pyright",
"rnix", "rnix",
"ruff_lsp",
"terraformls", "terraformls",
"vimls", "vimls",
} }
for _, lsp in ipairs(servers) do for _, lsp in ipairs(servers) do
nvim_lsp[lsp].setup { capabilities = capabilities, on_attach = on_attach } nvim_lsp[lsp].setup { capabilities = capabilities, on_attach = common_on_attach }
end end
nvim_lsp.rust_analyzer.setup({ nvim_lsp.rust_analyzer.setup({
on_attach = on_attach, on_attach = common_on_attach,
capabilities = capabilities, capabilities = capabilities,
settings = { settings = {
["rust-analyzer"] = { ["rust-analyzer"] = {
@ -74,26 +71,21 @@ nvim_lsp.rust_analyzer.setup({
} }
}) })
vim.g.code_action_menu_window_border = 'single' nvim_lsp.ruff.setup({
on_attach = function (client)
-- symbols-outline.nvim common_on_attach(client)
vim.g.symbols_outline = { client.server_capabilities.renameProvider = false
highlight_hovered_item = true, client.server_capabilities.hoverProvider = false
show_guides = true, end,
auto_preview = false, -- experimental init_options = {
position = 'right', settings = {
keymaps = { -- Any extra CLI arguments for `ruff` go here.
close = "<Esc>", args = {}
goto_location = "<Cr>", }
focus_location = "o",
hover_symbol = "<C-space>",
rename_symbol = "r",
code_actions = "a"
}, },
lsp_blacklist = {} })
}
-- LSP Enable diagnostics -- LSP diagnostics.
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.handlers["textDocument/publishDiagnostics"] =
vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
virtual_text = false, virtual_text = false,
@ -101,23 +93,3 @@ vim.lsp.handlers["textDocument/publishDiagnostics"] =
signs = true, signs = true,
update_in_insert = false update_in_insert = false
}) })
-- Send diagnostics to quickfix list
do
local method = "textDocument/publishDiagnostics"
local default_handler = vim.lsp.handlers[method]
vim.lsp.handlers[method] = function(err, method, result, client_id, bufnr, config)
default_handler(err, method, result, client_id, bufnr, config)
local diagnostics = vim.diagnostic.get()
local qflist = {}
for bufnr, diagnostic in pairs(diagnostics) do
for _, d in ipairs(diagnostic) do
d.bufnr = bufnr
d.lnum = d.range.start.line + 1
d.col = d.range.start.character + 1
d.text = d.message
table.insert(qflist, d)
end
end
end
end