diff --git a/vim/.vim/lua/config/lsp.lua b/vim/.vim/lua/config/lsp.lua index 5dfa4f5..d464009 100644 --- a/vim/.vim/lua/config/lsp.lua +++ b/vim/.vim/lua/config/lsp.lua @@ -21,6 +21,23 @@ vim.opt.spelllang = { "en_us" } local lspconfig = require("lspconfig") local configs = require("lspconfig.configs") +vim.lsp.handlers["window/showMessage"] = function(_, result, ctx) + local client = vim.lsp.get_client_by_id(ctx.client_id) + local lvl = ({ + "ERROR", + "WARN", + "INFO", + "DEBUG", + })[result.type] + notify({ result.message }, lvl, { + title = "LSP | " .. client.name, + timeout = 1000, + keep = function() + return lvl == "ERROR" or lvl == "WARN" + end, + }) +end + if use_google() then configs.ciderlsp = { default_config = { @@ -73,45 +90,6 @@ if use_google() then } end --- 3. Set up CiderLSP -local on_attach = function(client, bufnr) - vim.b["is_cider_lsp_attached"] = "no" - require("lualine").refresh() - - vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") - if vim.lsp.formatexpr then -- Neovim v0.6.0+ only. - vim.api.nvim_buf_set_option(bufnr, "formatexpr", "v:lua.vim.lsp.formatexpr") - end - if vim.lsp.tagfunc then - vim.api.nvim_buf_set_option(bufnr, "tagfunc", "v:lua.vim.lsp.tagfunc") - end - - if client.server_capabilities.document_highlight then - vim.api.nvim_command("autocmd CursorHold lua vim.lsp.buf.document_highlight()") - vim.api.nvim_command("autocmd CursorHoldI lua vim.lsp.buf.document_highlight()") - vim.api.nvim_command("autocmd CursorMoved lua vim.lsp.util.buf_clear_references()") - end - - lsp_status.on_attach(client) - - local opts = { noremap = true, silent = true } - vim.api.nvim_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) - vim.api.nvim_set_keymap("n", "ca", "lua vim.lsp.buf.code_action()", opts) - vim.api.nvim_set_keymap("n", "L", "lua vim.lsp.buf.hover()", opts) - vim.api.nvim_set_keymap("n", "g0", "lua vim.lsp.buf.document_symbol()", opts) - vim.api.nvim_set_keymap("n", "gW", "lua vim.lsp.buf.workspace_symbol()", opts) - vim.api.nvim_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) - vim.api.nvim_set_keymap("n", "gD", "tab split | lua vim.lsp.buf.definition()", opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) - vim.api.nvim_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) - vim.api.nvim_set_keymap("n", "gI", "lua vim.lsp.buf.implementation()", opts) - vim.api.nvim_set_keymap("n", "gR", "lua vim.lsp.buf.references()", opts) -- diagnostics controls references - vim.api.nvim_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", opts) - vim.api.nvim_set_keymap("i", "", "lua vim.lsp.buf.signature_help()", opts) - - vim.api.nvim_set_keymap("n", "gt", "lua vim.lsp.buf.type_definition()", opts) -end - local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()) capabilities["codeLens"] = { dynamicRegistration = false } capabilities.textDocument.publishDiagnostics = { @@ -187,26 +165,50 @@ local conditionalSources = { }, } -vim.lsp.handlers["window/showMessage"] = function(_, result, ctx) - local client = vim.lsp.get_client_by_id(ctx.client_id) - local lvl = ({ - "ERROR", - "WARN", - "INFO", - "DEBUG", - })[result.type] - notify({ result.message }, lvl, { - title = "LSP | " .. client.name, - timeout = 1000, - keep = function() - return lvl == "ERROR" or lvl == "WARN" - end, - }) +local my_on_attach = function(client, bufnr) + require("lualine").refresh() + + vim.api.nvim_command("autocmd CursorHold lua vim.lsp.buf.document_highlight()") + vim.api.nvim_command("autocmd CursorHoldI lua vim.lsp.buf.document_highlight()") + vim.api.nvim_command("autocmd CursorMoved lua vim.lsp.util.buf_clear_references()") + + vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") + if vim.lsp.formatexpr then -- Neovim v0.6.0+ only. + vim.api.nvim_buf_set_option(bufnr, "formatexpr", "v:lua.vim.lsp.formatexpr") + end + if vim.lsp.tagfunc then + vim.api.nvim_buf_set_option(bufnr, "tagfunc", "v:lua.vim.lsp.tagfunc") + end + + lsp_status.on_attach(client) + + local opts = { noremap = true, silent = true } + vim.api.nvim_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) + vim.api.nvim_set_keymap("n", "ca", "lua vim.lsp.buf.code_action()", opts) + vim.api.nvim_set_keymap("n", "L", "lua vim.lsp.buf.hover()", opts) + vim.api.nvim_set_keymap("n", "g0", "lua vim.lsp.buf.document_symbol()", opts) + vim.api.nvim_set_keymap("n", "gW", "lua vim.lsp.buf.workspace_symbol()", opts) + vim.api.nvim_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) + vim.api.nvim_set_keymap("n", "gD", "tab split | lua vim.lsp.buf.definition()", opts) + -- vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) + vim.api.nvim_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) + vim.api.nvim_set_keymap("n", "gI", "lua vim.lsp.buf.implementation()", opts) + vim.api.nvim_set_keymap("n", "gR", "lua vim.lsp.buf.references()", opts) -- diagnostics controls references + vim.api.nvim_set_keymap("n", "", "lua vim.lsp.buf.signature_help()", opts) + vim.api.nvim_set_keymap("i", "", "lua vim.lsp.buf.signature_help()", opts) + + vim.api.nvim_set_keymap("n", "gt", "lua vim.lsp.buf.type_definition()", opts) end if use_google() then require("cmp_nvim_ciderlsp").setup() + -- 3. Set up CiderLSP + local cider_on_attach = function(client, bufnr) + my_on_attach(client, bufnr) + vim.b["is_cider_lsp_attached"] = "no" + end + local cider_lsp_handlers = { ["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { underline = true, @@ -224,25 +226,19 @@ if use_google() then end end - cider_lsp_handlers["workspace/diagnostic/refresh"] = function(_, result, ctx) - notify("result:" .. result, "info", { timeout = 900 }) - notify("ctx:" .. ctx, "info", { timeout = 900 }) - end - capabilities = require("cmp_nvim_ciderlsp").update_capabilities(capabilities) capabilities.workspace.codeLens = { refreshSupport = true } capabilities.workspace.diagnostics = { refreshSupport = true } - lspconfig.ciderlsp.setup({ - capabilities = capabilities, - on_attach = on_attach, - handlers = cider_lsp_handlers, - }) lspconfig.analysislsp.setup({ capabilities = capabilities, - on_attach = on_attach, + }) + table.insert(conditionalSources, { name = "analysislsp" }) + lspconfig.ciderlsp.setup({ + capabilities = capabilities, + on_attach = cider_on_attach, + handlers = cider_lsp_handlers, }) table.insert(conditionalSources, { name = "nvim_ciderlsp", priority = 9 }) - table.insert(conditionalSources, { name = "analysislsp" }) else table.insert(conditionalSources, { name = "cmp_tabnine" }) end diff --git a/vim/.vim/lua/config/trouble.lua b/vim/.vim/lua/config/trouble.lua index 49cd1fe..cc47d12 100644 --- a/vim/.vim/lua/config/trouble.lua +++ b/vim/.vim/lua/config/trouble.lua @@ -1,7 +1,8 @@ vim.diagnostic.config({ virtual_lines = true, - virtual_text = false, + virtual_text = true, severity_sort = true, + update_in_insert = true, }) -- Diagnostics @@ -28,4 +29,4 @@ vim.api.nvim_set_keymap("n", "xq", "Trouble quickfix", opts) vim.api.nvim_set_keymap("n", "[g", "lua vim.diagnostic.goto_prev()", opts) vim.api.nvim_set_keymap("n", "]g", "lua vim.diagnostic.goto_next()", opts) --- vim.cmd [[autocmd! CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]] +vim.cmd([[autocmd! CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]]) diff --git a/vim/.vim/lua/plugins/base.lua b/vim/.vim/lua/plugins/base.lua index ceca58a..94544f0 100644 --- a/vim/.vim/lua/plugins/base.lua +++ b/vim/.vim/lua/plugins/base.lua @@ -8,7 +8,6 @@ return { "will133/vim-dirdiff", "renerocksai/calendar-vim", "google/vim-searchindex", - -- 'apalmer1377/factorus', "hrsh7th/vim-vsnip", "kosayoda/nvim-lightbulb", "tpope/vim-surround", diff --git a/vim/.vim/lua/plugins/lsp-lens.lua b/vim/.vim/lua/plugins/lsp-lens.lua new file mode 100644 index 0000000..83ef9d9 --- /dev/null +++ b/vim/.vim/lua/plugins/lsp-lens.lua @@ -0,0 +1,20 @@ +return { + "VidocqH/lsp-lens.nvim", + event = "BufEnter", + config = function() + vim.cmd([[autocmd BufEnter,CursorHold,InsertLeave lua vim.lsp.codelens.refresh()]]) + + require("lsp-lens").setup({ + enable = true, + include_declaration = false, -- Reference include declaration + sections = { -- Enable / Disable specific request + definition = false, + references = true, + implementation = true, + }, + ignore_filetype = { + "prisma", + }, + }) + end, +}