From 2b0298d182ba06731edd8b9d7cf2a4aec641e733 Mon Sep 17 00:00:00 2001 From: PFiS1737 Date: Sun, 10 May 2026 21:39:40 +0800 Subject: [PATCH] feat(lsp): update configs for codelens --- lua/lazyvim/config/keymaps.lua | 18 ++++++++++++++++++ lua/lazyvim/plugins/lsp/init.lua | 28 +++++++++++++++++++++------- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 9651e4e6..2465477f 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -161,6 +161,24 @@ if vim.lsp.inlay_hint then Snacks.toggle.inlay_hints():map("uh") end +if vim.lsp.codelens.enable then + if Snacks.toggle.codelens then + Snacks.toggle.codelens():map("cC") + else + -- TODO: remove this after codelens toggler is added to Snacks + Snacks.toggle.new({ + id = "codelens", + name = "Codelens", + get = function() + return vim.lsp.codelens.is_enabled({ bufnr = 0 }) + end, + set = function(state) + vim.lsp.codelens.enable(state, { bufnr = 0 }) + end, + }):map("cC") + end +end + -- lazygit if vim.fn.executable("lazygit") == 1 then map("n", "gg", function() Snacks.lazygit( { cwd = LazyVim.root.git() }) end, { desc = "Lazygit (Root Dir)" }) diff --git a/lua/lazyvim/plugins/lsp/init.lua b/lua/lazyvim/plugins/lsp/init.lua index 490bec3c..5eccef9c 100644 --- a/lua/lazyvim/plugins/lsp/init.lua +++ b/lua/lazyvim/plugins/lsp/init.lua @@ -45,6 +45,7 @@ return { -- provide the code lenses. codelens = { enabled = false, + exclude = {}, -- filetypes for which you don't want to enable codelens }, -- Enable this to enable the builtin LSP folding on Neovim. -- Be aware that you also will need to properly configure your LSP server to @@ -87,7 +88,6 @@ return { { "", function() return vim.lsp.buf.signature_help() end, mode = "i", desc = "Signature Help", has = "signatureHelp" }, { "ca", vim.lsp.buf.code_action, desc = "Code Action", mode = { "n", "x" }, has = "codeAction" }, { "cc", vim.lsp.codelens.run, desc = "Run Codelens", mode = { "n", "x" }, has = "codeLens" }, - { "cC", vim.lsp.codelens.refresh, desc = "Refresh & Display Codelens", mode = { "n" }, has = "codeLens" }, { "cR", function() Snacks.rename.rename_file() end, desc = "Rename File", mode ={"n"}, has = { "workspace/didRenameFiles", "workspace/willRenameFiles" } }, { "cr", vim.lsp.buf.rename, desc = "Rename", has = "rename" }, { "cA", LazyVim.lsp.action.source, desc = "Source Action", has = "codeAction" }, @@ -199,13 +199,27 @@ return { end -- code lens - if opts.codelens.enabled and vim.lsp.codelens then + if opts.codelens.enabled then Snacks.util.lsp.on({ method = "textDocument/codeLens" }, function(buffer) - vim.lsp.codelens.refresh() - vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "InsertLeave" }, { - buffer = buffer, - callback = vim.lsp.codelens.refresh, - }) + if vim.lsp.codelens.enable then + -- nvim v0.12 + if + vim.api.nvim_buf_is_valid(buffer) + and vim.bo[buffer].buftype == "" + and not vim.tbl_contains(opts.codelens.exclude, vim.bo[buffer].filetype) + then + vim.lsp.codelens.enable(true, { bufnr = buffer }) + end + else + -- nvim v0.11 + if not vim.tbl_contains(opts.codelens.exclude, vim.bo[buffer].filetype) then + vim.lsp.codelens.refresh() + vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "InsertLeave" }, { + buffer = buffer, + callback = vim.lsp.codelens.refresh, + }) + end + end end) end