diff options
Diffstat (limited to 'lua/config/lsp/handlers.lua')
-rw-r--r-- | lua/config/lsp/handlers.lua | 203 |
1 files changed, 121 insertions, 82 deletions
diff --git a/lua/config/lsp/handlers.lua b/lua/config/lsp/handlers.lua index 1745f95..ba38faa 100644 --- a/lua/config/lsp/handlers.lua +++ b/lua/config/lsp/handlers.lua @@ -4,53 +4,56 @@ local M = {} -- TODO: backfill this to template M.setup = function() - local signs = { - { name = "DiagnosticSignError", text = "" }, - { name = "DiagnosticSignWarn", text = "" }, - { name = "DiagnosticSignHint", text = "" }, - { name = "DiagnosticSignInfo", text = "" }, - } - - for _, sign in ipairs(signs) do - vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) - end - - local config = { - -- disable virtual text - virtual_text = false, - -- show signs - signs = { - active = signs, - }, - update_in_insert = true, - underline = true, - severity_sort = true, - float = { - focusable = false, - style = "minimal", - border = "rounded", - source = "always", - header = "", - prefix = "", - }, - } - - vim.diagnostic.config(config) - - vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { - border = "rounded", - }) - - vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { - border = "rounded", - }) + local signs = { + { name = "DiagnosticSignError", text = "" }, + { name = "DiagnosticSignWarn", text = "" }, + { name = "DiagnosticSignHint", text = "" }, + { name = "DiagnosticSignInfo", text = "" }, + } + + for _, sign in ipairs(signs) do + vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) + end + + local config = { + -- disable virtual text + virtual_text = false, + -- show signs + signs = { + active = signs, + }, + update_in_insert = true, + underline = true, + severity_sort = true, + float = { + focusable = false, + style = "minimal", + border = "rounded", + source = "always", + header = "", + prefix = "", + }, + } + + vim.diagnostic.config(config) + + vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { + border = "rounded", + }) + + vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( + vim.lsp.handlers.signature_help, + { + border = "rounded", + } + ) end local function lsp_highlight_document(client) - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec( - [[ + -- Set autocommands conditional on server_capabilities + if client.resolved_capabilities.document_highlight then + vim.api.nvim_exec( + [[ let ftToIgnore = ['html'] augroup lsp_document_highlight autocmd! * <buffer> @@ -58,74 +61,110 @@ local function lsp_highlight_document(client) autocmd CursorMoved <buffer> if index(ftToIgnore, &ft) < 0 | lua vim.lsp.buf.clear_references() augroup END ]], - false - ) - end + false + ) + end end local function lsp_keymaps(bufnr) - local opts = { noremap = true, silent = true } - vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>f", "<cmd>lua vim.diagnostic.open_float()<CR>", opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "gl", "<cmd>lua vim.diagnostic.open_float()<CR>", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>q", "<cmd>lua vim.diagnostic.setloclist()<CR>", opts) - vim.cmd([[ command! Format execute 'lua vim.lsp.buf.formatting()' ]]) + local opts = { noremap = true, silent = true } + vim.api.nvim_buf_set_keymap( + bufnr, + "n", + "gD", + "<cmd>lua vim.lsp.buf.declaration()<CR>", + opts + ) + vim.api.nvim_buf_set_keymap( + bufnr, + "n", + "gd", + "<cmd>lua vim.lsp.buf.definition()<CR>", + opts + ) + vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts) + vim.api.nvim_buf_set_keymap( + bufnr, + "n", + "gi", + "<cmd>lua vim.lsp.buf.implementation()<CR>", + opts + ) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts) + vim.api.nvim_buf_set_keymap( + bufnr, + "n", + "gr", + "<cmd>lua vim.lsp.buf.references()<CR>", + opts + ) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>f", "<cmd>lua vim.diagnostic.open_float()<CR>", opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts) + vim.api.nvim_buf_set_keymap( + bufnr, + "n", + "gl", + "<cmd>lua vim.diagnostic.open_float()<CR>", + opts + ) + vim.api.nvim_buf_set_keymap( + bufnr, + "n", + "<leader>q", + "<cmd>lua vim.diagnostic.setloclist()<CR>", + opts + ) + vim.cmd [[ command! Format execute 'lua vim.lsp.buf.formatting()' ]] end M.on_attach = function(client, bufnr) - if client.name == "tsserver" then - client.resolved_capabilities.document_formatting = false - end - lsp_keymaps(bufnr) - lsp_highlight_document(client) + if client.name == "tsserver" then + client.resolved_capabilities.document_formatting = false + end + lsp_keymaps(bufnr) + lsp_highlight_document(client) end local capabilities = vim.lsp.protocol.make_client_capabilities() local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") if not status_ok then - return + return end M.capabilities = cmp_nvim_lsp.update_capabilities(capabilities) function M.enable_format_on_save() - vim.cmd([[ + vim.cmd [[ augroup format_on_save autocmd! autocmd BufWritePre * lua vim.lsp.buf.formatting() augroup end - ]]) - vim.notify("Enabled format on save") + ]] + vim.notify "Enabled format on save" end function M.disable_format_on_save() - M.remove_augroup("format_on_save") - vim.notify("Disabled format on save") + M.remove_augroup "format_on_save" + vim.notify "Disabled format on save" end function M.toggle_format_on_save() - if vim.fn.exists("#format_on_save#BufWritePre") == 0 then - M.enable_format_on_save() - else - M.disable_format_on_save() - end + if vim.fn.exists "#format_on_save#BufWritePre" == 0 then + M.enable_format_on_save() + else + M.disable_format_on_save() + end end function M.remove_augroup(name) - if vim.fn.exists("#" .. name) == 1 then - vim.cmd("au! " .. name) - end + if vim.fn.exists("#" .. name) == 1 then + vim.cmd("au! " .. name) + end end -vim.cmd([[ command! LspToggleAutoFormat execute 'lua require("user.lsp.handlers").toggle_format_on_save()' ]]) +vim.cmd [[ command! LspToggleAutoFormat execute 'lua require("user.lsp.handlers").toggle_format_on_save()' ]] return M |