From 5985ca0cf1a0c1ddee8b2b718c730f988cec7001 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 25 Sep 2025 07:35:59 +0200 Subject: [PATCH 001/171] fix(treesitter): create buffer-local textobjects keymaps only when available. Closes #6508 --- lua/lazyvim/plugins/treesitter.lua | 74 +++++++++++++++++------------- 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 8ad15924..78f1b3b2 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -128,38 +128,19 @@ return { "nvim-treesitter/nvim-treesitter-textobjects", branch = "main", event = "VeryLazy", - opts = {}, - keys = function() - local moves = { - goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer", ["]a"] = "@parameter.inner" }, - goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer", ["]A"] = "@parameter.inner" }, - goto_previous_start = { ["[f"] = "@function.outer", ["[c"] = "@class.outer", ["[a"] = "@parameter.inner" }, - goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer", ["[A"] = "@parameter.inner" }, - } - local ret = {} ---@type LazyKeysSpec[] - for method, keymaps in pairs(moves) do - for key, query in pairs(keymaps) do - local desc = query:gsub("@", ""):gsub("%..*", "") - desc = desc:sub(1, 1):upper() .. desc:sub(2) - desc = (key:sub(1, 1) == "[" and "Prev " or "Next ") .. desc - desc = desc .. (key:sub(2, 2) == key:sub(2, 2):upper() and " End" or " Start") - ret[#ret + 1] = { - key, - function() - -- don't use treesitter if in diff mode and the key is one of the c/C keys - if vim.wo.diff and key:find("[cC]") then - return vim.cmd("normal! " .. key) - end - require("nvim-treesitter-textobjects.move")[method](query, "textobjects") - end, - desc = desc, - mode = { "n", "x", "o" }, - silent = true, - } - end - end - return ret - end, + opts = { + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + -- LazyVim extention to create buffer-local keymaps + keys = { + goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer", ["]a"] = "@parameter.inner" }, + goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer", ["]A"] = "@parameter.inner" }, + goto_previous_start = { ["[f"] = "@function.outer", ["[c"] = "@class.outer", ["[a"] = "@parameter.inner" }, + goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer", ["[A"] = "@parameter.inner" }, + }, + }, + }, config = function(_, opts) local TS = require("nvim-treesitter-textobjects") if not TS.setup then @@ -167,6 +148,35 @@ return { return end TS.setup(opts) + + vim.api.nvim_create_autocmd("FileType", { + group = vim.api.nvim_create_augroup("lazyvim_treesitter_textobjects", { clear = true }), + callback = function(ev) + if not (vim.tbl_get(opts, "move", "enable") and LazyVim.treesitter.have(ev.match, "textobjects")) then + return + end + ---@type table> + local moves = vim.tbl_get(opts, "move", "keys") or {} + + for method, keymaps in pairs(moves) do + for key, query in pairs(keymaps) do + local desc = query:gsub("@", ""):gsub("%..*", "") + desc = desc:sub(1, 1):upper() .. desc:sub(2) + desc = (key:sub(1, 1) == "[" and "Prev " or "Next ") .. desc + desc = desc .. (key:sub(2, 2) == key:sub(2, 2):upper() and " End" or " Start") + if not (vim.wo.diff and key:find("[cC]")) then + vim.keymap.set({ "n", "x", "o" }, key, function() + require("nvim-treesitter-textobjects.move")[method](query, "textobjects") + end, { + buffer = ev.buf, + desc = desc, + silent = true, + }) + end + end + end + end, + }) end, }, From 1d404815f0600b841dcc0d19e0a2e46bb8156f6b Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Thu, 25 Sep 2025 05:37:13 +0000 Subject: [PATCH 002/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index dbeb4819..8e59c6cb 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 September 23 +*LazyVim.txt* For Neovim Last change: 2025 September 25 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 3b0296358508da1eb258c8716df163dd04fa6449 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 25 Sep 2025 10:31:16 +0200 Subject: [PATCH 003/171] feat(copilot): added `copilot-native` extra to setup native inline completions in Neovim --- .../plugins/extras/ai/copilot-native.lua | 49 +++++++++++++++++++ lua/lazyvim/util/lualine.lua | 36 ++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/ai/copilot-native.lua diff --git a/lua/lazyvim/plugins/extras/ai/copilot-native.lua b/lua/lazyvim/plugins/extras/ai/copilot-native.lua new file mode 100644 index 00000000..8bcb9bfe --- /dev/null +++ b/lua/lazyvim/plugins/extras/ai/copilot-native.lua @@ -0,0 +1,49 @@ +---@diagnostic disable: missing-fields +if lazyvim_docs then + -- Native inline completions don't support being shown as regular completions + vim.g.ai_cmp = false +end + +if LazyVim.has_extra("ai.copilot-native") then + if not vim.lsp.inline_completion then + LazyVim.error("You need Neovim >= 0.12 to use the `ai.copilot-native` extra.") + return {} + end + if LazyVim.has_extra("ai.copilot") then + LazyVim.error("Please disable the `ai.copilot` extra if you want to use `ai.copilot-native`") + return {} + end +end + +vim.g.ai_cmp = false + +return { + desc = "Native Copilot LSP integration. Requires Neovim >= 0.12", + -- copilot-language-server + { + "neovim/nvim-lspconfig", + opts = { + servers = { + copilot = {}, + }, + setup = { + copilot = function(_, opts) + vim.lsp.inline_completion.enable() + LazyVim.cmp.actions.ai_accept = function() + return vim.lsp.inline_completion.get() + end + end, + }, + }, + }, + + -- lualine + { + "nvim-lualine/lualine.nvim", + optional = true, + event = "VeryLazy", + opts = function(_, opts) + table.insert(opts.sections.lualine_x, 2, LazyVim.lualine.lsp("copilot")) + end, + }, +} diff --git a/lua/lazyvim/util/lualine.lua b/lua/lazyvim/util/lualine.lua index a6aa24f3..af4b55f7 100644 --- a/lua/lazyvim/util/lualine.lua +++ b/lua/lazyvim/util/lualine.lua @@ -22,6 +22,42 @@ function M.status(icon, status) } end +--- Status indicator for LSP server activity +---@param server string +---@param opts? { methods?: string[], icon?: string } +function M.lsp(server, opts) + opts = opts or {} + local methods = opts.methods or { "textDocument/completion", "textDocument/inlineCompletion" } + local pending = {} ---@type table + vim.api.nvim_create_autocmd("LspRequest", { + group = vim.api.nvim_create_augroup("lazyvim.lualine.lsp." .. server, { clear = true }), + callback = function(args) + ---@class LspRequestData + ---@field client_id number + ---@field request { bufnr: number, method: string, type: "pending" | "cancel" | "complete" | string } + ---@field request_id number + local data = args.data + local client = vim.lsp.get_client_by_id(data.client_id) + if client and client.name == server and vim.tbl_contains(methods, data.request.method) then + pending[data.request_id] = data.request.type == "pending" or nil + end + end, + }) + return { + function() + return opts.icon + or LazyVim.config.icons.kinds[server:sub(1, 1):upper() .. server:sub(2)] + or LazyVim.config.icons.diagnostics.Hint + end, + cond = function() + return #vim.lsp.get_clients({ name = server, bufnr = 0 }) > 0 + end, + color = function() + return { fg = Snacks.util.color(vim.tbl_isempty(pending) and "Special" or "DiagnosticWarn") } + end, + } +end + ---@param name string ---@param icon? string function M.cmp_source(name, icon) From 9913e1665d783d9c4407633bc33475d403aff433 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 25 Sep 2025 11:11:40 +0200 Subject: [PATCH 004/171] feat(copilot-native): better lualine status --- .../plugins/extras/ai/copilot-native.lua | 26 ++++++++++++-- lua/lazyvim/util/lualine.lua | 36 ------------------- 2 files changed, 23 insertions(+), 39 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-native.lua b/lua/lazyvim/plugins/extras/ai/copilot-native.lua index 8bcb9bfe..85cd0d30 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-native.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-native.lua @@ -16,6 +16,7 @@ if LazyVim.has_extra("ai.copilot-native") then end vim.g.ai_cmp = false +local status = {} ---@type table return { desc = "Native Copilot LSP integration. Requires Neovim >= 0.12", @@ -24,10 +25,22 @@ return { "neovim/nvim-lspconfig", opts = { servers = { - copilot = {}, + copilot = { + handlers = { + didChangeStatus = function(err, res, ctx) + if err then + return + end + status[ctx.client_id] = res.kind ~= "Normal" and "error" or res.busy and "pending" or "ok" + if res.status == "Error" then + LazyVim.error("Please use `:LspCopilotSignIn` to sign in to Copilot") + end + end, + }, + }, }, setup = { - copilot = function(_, opts) + copilot = function() vim.lsp.inline_completion.enable() LazyVim.cmp.actions.ai_accept = function() return vim.lsp.inline_completion.get() @@ -43,7 +56,14 @@ return { optional = true, event = "VeryLazy", opts = function(_, opts) - table.insert(opts.sections.lualine_x, 2, LazyVim.lualine.lsp("copilot")) + table.insert( + opts.sections.lualine_x, + 2, + LazyVim.lualine.status(LazyVim.config.icons.kinds.Copilot, function() + local clients = vim.lsp.get_clients({ name = "copilot", bufnr = 0 }) + return #clients > 0 and status[clients[1].id] or nil + end) + ) end, }, } diff --git a/lua/lazyvim/util/lualine.lua b/lua/lazyvim/util/lualine.lua index af4b55f7..a6aa24f3 100644 --- a/lua/lazyvim/util/lualine.lua +++ b/lua/lazyvim/util/lualine.lua @@ -22,42 +22,6 @@ function M.status(icon, status) } end ---- Status indicator for LSP server activity ----@param server string ----@param opts? { methods?: string[], icon?: string } -function M.lsp(server, opts) - opts = opts or {} - local methods = opts.methods or { "textDocument/completion", "textDocument/inlineCompletion" } - local pending = {} ---@type table - vim.api.nvim_create_autocmd("LspRequest", { - group = vim.api.nvim_create_augroup("lazyvim.lualine.lsp." .. server, { clear = true }), - callback = function(args) - ---@class LspRequestData - ---@field client_id number - ---@field request { bufnr: number, method: string, type: "pending" | "cancel" | "complete" | string } - ---@field request_id number - local data = args.data - local client = vim.lsp.get_client_by_id(data.client_id) - if client and client.name == server and vim.tbl_contains(methods, data.request.method) then - pending[data.request_id] = data.request.type == "pending" or nil - end - end, - }) - return { - function() - return opts.icon - or LazyVim.config.icons.kinds[server:sub(1, 1):upper() .. server:sub(2)] - or LazyVim.config.icons.diagnostics.Hint - end, - cond = function() - return #vim.lsp.get_clients({ name = server, bufnr = 0 }) > 0 - end, - color = function() - return { fg = Snacks.util.color(vim.tbl_isempty(pending) and "Special" or "DiagnosticWarn") } - end, - } -end - ---@param name string ---@param icon? string function M.cmp_source(name, icon) From 6bd630cec6f905665691d593dc5d0fb3d54f560c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 25 Sep 2025 12:30:50 +0200 Subject: [PATCH 005/171] feat(copilot-native): added keymaps to cycle suggestions --- lua/lazyvim/plugins/extras/ai/copilot-native.lua | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-native.lua b/lua/lazyvim/plugins/extras/ai/copilot-native.lua index 85cd0d30..a4c8005b 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-native.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-native.lua @@ -37,6 +37,21 @@ return { end end, }, + -- stylua: ignore + keys = { + { + "", + function() vim.lsp.inline_completion.select({ count = 1 }) end, + desc = "Next Copilot Suggestion", + mode = { "i", "n" }, + }, + { + "", + function() vim.lsp.inline_completion.select({ count = -1 }) end, + desc = "Next Copilot Suggestion", + mode = { "i", "n" }, + }, + }, }, }, setup = { From c83df9e68dd41f5a3f7df5a7048169ee286a7da8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 25 Sep 2025 15:30:28 +0200 Subject: [PATCH 006/171] feat(copilot-native): added experimental support for next edit suggestions. check the docs to enable --- lua/lazyvim/config/keymaps.lua | 1 + .../plugins/extras/ai/copilot-native.lua | 68 ++++++++++++++++++- lua/lazyvim/util/cmp.lua | 1 + 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 938a2333..752aa602 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -49,6 +49,7 @@ map("n", "bD", ":bd", { desc = "Delete Buffer and Window" }) map({ "i", "n", "s" }, "", function() vim.cmd("noh") LazyVim.cmp.actions.snippet_stop() + LazyVim.cmp.actions.ai_stop() return "" end, { expr = true, desc = "Escape and Clear hlsearch" }) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-native.lua b/lua/lazyvim/plugins/extras/ai/copilot-native.lua index a4c8005b..b4a61b20 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-native.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-native.lua @@ -2,6 +2,9 @@ if lazyvim_docs then -- Native inline completions don't support being shown as regular completions vim.g.ai_cmp = false + + -- Set to `true` in your `options.lua` to enable experimental support for Next Edit Suggestions + vim.g.copilot_nes = false end if LazyVim.has_extra("ai.copilot-native") then @@ -57,8 +60,41 @@ return { setup = { copilot = function() vim.lsp.inline_completion.enable() + + -- Only trigger NES updates: + -- * when leaving insert mode + -- * when text is changed (in normal mode) + -- * when accepting a next edit suggestion + local nes_update = Snacks.util.debounce(function() + return vim.g.copilot_nes and require("copilot-lsp.nes").request_nes("copilot") + end, { ms = 100 }) + + vim.api.nvim_create_autocmd({ "InsertLeave", "TextChanged" }, { + group = vim.api.nvim_create_augroup("lazyvim.copilot-native.complete", { clear = true }), + callback = nes_update, + }) + + -- Accept inline suggestions or next edits LazyVim.cmp.actions.ai_accept = function() - return vim.lsp.inline_completion.get() + if vim.b.nes_state then + local nes = require("copilot-lsp.nes") + + -- Try to jump to the start of the suggestion edit. + if nes.walk_cursor_start_edit() then + return true + end + + -- apply the pending suggestion and jump to the end of the edit. + if nes.apply_pending_nes() then + nes.walk_cursor_end_edit() + nes_update() -- trigger new nes update after accept + return true + end + end + if vim.lsp.inline_completion.get() then + -- nes_update() -- ensure nes update is triggered after inline completion + return true + end end end, }, @@ -81,4 +117,34 @@ return { ) end, }, + + vim.g.copilot_nes + and { + "copilotlsp-nvim/copilot-lsp", + init = function() + vim.api.nvim_create_autocmd("BufEnter", { + callback = function(ev) + local buf = ev.buf + local client = vim.lsp.get_clients({ name = "copilot", bufnr = buf })[1] + if not client then + return + end + client:notify("textDocument/didFocus", { + textDocument = { + uri = vim.uri_from_bufnr(buf), + }, + }) + end, + }) + + LazyVim.cmp.actions.ai_stop = function() + require("copilot-lsp.nes").clear() + end + end, + keys = { + -- nes is also useful in normal mode + { "", LazyVim.cmp.map({ "ai_accept" }, ""), mode = { "n" }, expr = true }, + }, + } + or nil, } diff --git a/lua/lazyvim/util/cmp.lua b/lua/lazyvim/util/cmp.lua index 0641c892..2637b0d3 100644 --- a/lua/lazyvim/util/cmp.lua +++ b/lua/lazyvim/util/cmp.lua @@ -18,6 +18,7 @@ M.actions = { vim.snippet.stop() end end, + ai_stop = function() end, } ---@param actions string[] From af6e2505b54270c30145e8f4191b865870537287 Mon Sep 17 00:00:00 2001 From: robin Date: Fri, 26 Sep 2025 06:36:14 +0200 Subject: [PATCH 007/171] fix(catppuccin): follow-up on api change (#6505) ## Description https://github.com/catppuccin/nvim/pull/931 will change the api for accessing the bufferline integration. im making this follow up pr so it wont have to be done through a user :) (sorry about https://github.com/LazyVim/LazyVim/pull/6354) ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/colorscheme.lua | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/lua/lazyvim/plugins/colorscheme.lua b/lua/lazyvim/plugins/colorscheme.lua index 4c41d492..0e19c87f 100644 --- a/lua/lazyvim/plugins/colorscheme.lua +++ b/lua/lazyvim/plugins/colorscheme.lua @@ -13,6 +13,14 @@ return { lazy = true, name = "catppuccin", opts = { + lsp_styles = { + underlines = { + errors = { "undercurl" }, + hints = { "undercurl" }, + warnings = { "undercurl" }, + information = { "undercurl" }, + }, + }, integrations = { aerial = true, alpha = true, @@ -28,26 +36,14 @@ return { leap = true, lsp_trouble = true, mason = true, - markdown = true, mini = true, - native_lsp = { - enabled = true, - underlines = { - errors = { "undercurl" }, - hints = { "undercurl" }, - warnings = { "undercurl" }, - information = { "undercurl" }, - }, - }, navic = { enabled = true, custom_bg = "lualine" }, neotest = true, neotree = true, noice = true, notify = true, - semantic_tokens = true, snacks = true, telescope = true, - treesitter = true, treesitter_context = true, which_key = true, }, @@ -58,7 +54,7 @@ return { optional = true, opts = function(_, opts) if (vim.g.colors_name or ""):find("catppuccin") then - opts.highlights = require("catppuccin.groups.integrations.bufferline").get_theme() + opts.highlights = require("catppuccin.special.bufferline").get_theme() end end, }, From c467282a8352d9ec067b07a00463d850bb4146b3 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Fri, 26 Sep 2025 04:37:07 +0000 Subject: [PATCH 008/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 8e59c6cb..8d0a76e9 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 September 25 +*LazyVim.txt* For Neovim Last change: 2025 September 26 ============================================================================== Table of Contents *LazyVim-table-of-contents* From ed637bb0f7f418de069a4d5a7ed8a7b3b93eb425 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 26 Sep 2025 12:14:33 +0200 Subject: [PATCH 009/171] feat(copilot-native): removed experimental **nes** support with `copilot_lsp` for now, since it's not the best experience right now --- .../plugins/extras/ai/copilot-native.lua | 61 ------------------- 1 file changed, 61 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-native.lua b/lua/lazyvim/plugins/extras/ai/copilot-native.lua index b4a61b20..71a6a3ae 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-native.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-native.lua @@ -2,9 +2,6 @@ if lazyvim_docs then -- Native inline completions don't support being shown as regular completions vim.g.ai_cmp = false - - -- Set to `true` in your `options.lua` to enable experimental support for Next Edit Suggestions - vim.g.copilot_nes = false end if LazyVim.has_extra("ai.copilot-native") then @@ -61,36 +58,8 @@ return { copilot = function() vim.lsp.inline_completion.enable() - -- Only trigger NES updates: - -- * when leaving insert mode - -- * when text is changed (in normal mode) - -- * when accepting a next edit suggestion - local nes_update = Snacks.util.debounce(function() - return vim.g.copilot_nes and require("copilot-lsp.nes").request_nes("copilot") - end, { ms = 100 }) - - vim.api.nvim_create_autocmd({ "InsertLeave", "TextChanged" }, { - group = vim.api.nvim_create_augroup("lazyvim.copilot-native.complete", { clear = true }), - callback = nes_update, - }) - -- Accept inline suggestions or next edits LazyVim.cmp.actions.ai_accept = function() - if vim.b.nes_state then - local nes = require("copilot-lsp.nes") - - -- Try to jump to the start of the suggestion edit. - if nes.walk_cursor_start_edit() then - return true - end - - -- apply the pending suggestion and jump to the end of the edit. - if nes.apply_pending_nes() then - nes.walk_cursor_end_edit() - nes_update() -- trigger new nes update after accept - return true - end - end if vim.lsp.inline_completion.get() then -- nes_update() -- ensure nes update is triggered after inline completion return true @@ -117,34 +86,4 @@ return { ) end, }, - - vim.g.copilot_nes - and { - "copilotlsp-nvim/copilot-lsp", - init = function() - vim.api.nvim_create_autocmd("BufEnter", { - callback = function(ev) - local buf = ev.buf - local client = vim.lsp.get_clients({ name = "copilot", bufnr = buf })[1] - if not client then - return - end - client:notify("textDocument/didFocus", { - textDocument = { - uri = vim.uri_from_bufnr(buf), - }, - }) - end, - }) - - LazyVim.cmp.actions.ai_stop = function() - require("copilot-lsp.nes").clear() - end - end, - keys = { - -- nes is also useful in normal mode - { "", LazyVim.cmp.map({ "ai_accept" }, ""), mode = { "n" }, expr = true }, - }, - } - or nil, } From 92b7fcf7b156600b86952bf6f2c777adc68fd0b8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 12:16:12 +0200 Subject: [PATCH 010/171] chore(main): release 15.4.0 (#6515) :robot: I have created a release *beep* *boop* --- ## [15.4.0](https://github.com/LazyVim/LazyVim/compare/v15.3.0...v15.4.0) (2025-09-26) ### Features * **copilot-native:** added experimental support for next edit suggestions. check the docs to enable ([c83df9e](https://github.com/LazyVim/LazyVim/commit/c83df9e68dd41f5a3f7df5a7048169ee286a7da8)) * **copilot-native:** added keymaps to cycle suggestions ([6bd630c](https://github.com/LazyVim/LazyVim/commit/6bd630cec6f905665691d593dc5d0fb3d54f560c)) * **copilot-native:** better lualine status ([9913e16](https://github.com/LazyVim/LazyVim/commit/9913e1665d783d9c4407633bc33475d403aff433)) * **copilot-native:** removed experimental **nes** support with `copilot_lsp` for now, since it's not the best experience right now ([ed637bb](https://github.com/LazyVim/LazyVim/commit/ed637bb0f7f418de069a4d5a7ed8a7b3b93eb425)) * **copilot:** added `copilot-native` extra to setup native inline completions in Neovim ([3b02963](https://github.com/LazyVim/LazyVim/commit/3b0296358508da1eb258c8716df163dd04fa6449)) ### Bug Fixes * **catppuccin:** follow-up on api change ([#6505](https://github.com/LazyVim/LazyVim/issues/6505)) ([af6e250](https://github.com/LazyVim/LazyVim/commit/af6e2505b54270c30145e8f4191b865870537287)) * **treesitter:** create buffer-local textobjects keymaps only when available. Closes [#6508](https://github.com/LazyVim/LazyVim/issues/6508) ([5985ca0](https://github.com/LazyVim/LazyVim/commit/5985ca0cf1a0c1ddee8b2b718c730f988cec7001)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 17 +++++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index b0e2e610..8a820181 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.3.0" + ".": "15.4.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b8c6724..abe4b7c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [15.4.0](https://github.com/LazyVim/LazyVim/compare/v15.3.0...v15.4.0) (2025-09-26) + + +### Features + +* **copilot-native:** added experimental support for next edit suggestions. check the docs to enable ([c83df9e](https://github.com/LazyVim/LazyVim/commit/c83df9e68dd41f5a3f7df5a7048169ee286a7da8)) +* **copilot-native:** added keymaps to cycle suggestions ([6bd630c](https://github.com/LazyVim/LazyVim/commit/6bd630cec6f905665691d593dc5d0fb3d54f560c)) +* **copilot-native:** better lualine status ([9913e16](https://github.com/LazyVim/LazyVim/commit/9913e1665d783d9c4407633bc33475d403aff433)) +* **copilot-native:** removed experimental **nes** support with `copilot_lsp` for now, since it's not the best experience right now ([ed637bb](https://github.com/LazyVim/LazyVim/commit/ed637bb0f7f418de069a4d5a7ed8a7b3b93eb425)) +* **copilot:** added `copilot-native` extra to setup native inline completions in Neovim ([3b02963](https://github.com/LazyVim/LazyVim/commit/3b0296358508da1eb258c8716df163dd04fa6449)) + + +### Bug Fixes + +* **catppuccin:** follow-up on api change ([#6505](https://github.com/LazyVim/LazyVim/issues/6505)) ([af6e250](https://github.com/LazyVim/LazyVim/commit/af6e2505b54270c30145e8f4191b865870537287)) +* **treesitter:** create buffer-local textobjects keymaps only when available. Closes [#6508](https://github.com/LazyVim/LazyVim/issues/6508) ([5985ca0](https://github.com/LazyVim/LazyVim/commit/5985ca0cf1a0c1ddee8b2b718c730f988cec7001)) + ## [15.3.0](https://github.com/LazyVim/LazyVim/compare/v15.2.0...v15.3.0) (2025-09-23) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 1d288cd2..39c719cf 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.3.0" -- x-release-please-version +M.version = "15.4.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From e9bc6074d1ea69e921a6195d1dc34333eaa310f8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 26 Sep 2025 15:55:32 +0200 Subject: [PATCH 011/171] fix(ai.copilot): disable copilot lsp if installed. copilot.lua needs its own version of the LSP --- lua/lazyvim/plugins/extras/ai/copilot.lua | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lua/lazyvim/plugins/extras/ai/copilot.lua b/lua/lazyvim/plugins/extras/ai/copilot.lua index 7c326499..3b5d2275 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot.lua @@ -25,6 +25,17 @@ return { }, }, + -- copilot-language-server + { + "neovim/nvim-lspconfig", + opts = { + servers = { + -- copilot.lua only works with its own copilot lsp server + copilot = { enabled = false }, + }, + }, + }, + -- add ai_accept action { "zbirenbaum/copilot.lua", From b25ea9c153e76d11579731e1d5529f275a36f91d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 26 Sep 2025 15:56:03 +0200 Subject: [PATCH 012/171] feat(ai.copilot-native): let sidekick.nvim handle some things if available --- .../plugins/extras/ai/copilot-native.lua | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-native.lua b/lua/lazyvim/plugins/extras/ai/copilot-native.lua index 71a6a3ae..310fbd81 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-native.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-native.lua @@ -26,17 +26,6 @@ return { opts = { servers = { copilot = { - handlers = { - didChangeStatus = function(err, res, ctx) - if err then - return - end - status[ctx.client_id] = res.kind ~= "Normal" and "error" or res.busy and "pending" or "ok" - if res.status == "Error" then - LazyVim.error("Please use `:LspCopilotSignIn` to sign in to Copilot") - end - end, - }, -- stylua: ignore keys = { { @@ -57,13 +46,25 @@ return { setup = { copilot = function() vim.lsp.inline_completion.enable() - -- Accept inline suggestions or next edits LazyVim.cmp.actions.ai_accept = function() - if vim.lsp.inline_completion.get() then - -- nes_update() -- ensure nes update is triggered after inline completion - return true - end + return vim.lsp.inline_completion.get() + end + + if not LazyVim.has_extra("ai.sidekick") then + vim.lsp.config("copilot", { + handlers = { + didChangeStatus = function(err, res, ctx) + if err then + return + end + status[ctx.client_id] = res.kind ~= "Normal" and "error" or res.busy and "pending" or "ok" + if res.status == "Error" then + LazyVim.error("Please use `:LspCopilotSignIn` to sign in to Copilot") + end + end, + }, + }) end end, }, @@ -76,6 +77,9 @@ return { optional = true, event = "VeryLazy", opts = function(_, opts) + if LazyVim.has_extra("ai.sidekick") then + return + end table.insert( opts.sections.lualine_x, 2, From 30a325d67184a80006dc55352d9663cdf01082d5 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 26 Sep 2025 15:57:00 +0200 Subject: [PATCH 013/171] feat(ai): added completion hooks for next edit suggestions --- lua/lazyvim/config/keymaps.lua | 1 - lua/lazyvim/plugins/extras/coding/blink.lua | 4 ++-- lua/lazyvim/plugins/extras/coding/nvim-cmp.lua | 2 +- lua/lazyvim/util/cmp.lua | 1 - 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 752aa602..938a2333 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -49,7 +49,6 @@ map("n", "bD", ":bd", { desc = "Delete Buffer and Window" }) map({ "i", "n", "s" }, "", function() vim.cmd("noh") LazyVim.cmp.actions.snippet_stop() - LazyVim.cmp.actions.ai_stop() return "" end, { expr = true, desc = "Escape and Clear hlsearch" }) diff --git a/lua/lazyvim/plugins/extras/coding/blink.lua b/lua/lazyvim/plugins/extras/coding/blink.lua index 207b1940..790808b1 100644 --- a/lua/lazyvim/plugins/extras/coding/blink.lua +++ b/lua/lazyvim/plugins/extras/coding/blink.lua @@ -122,12 +122,12 @@ return { if opts.keymap.preset == "super-tab" then -- super-tab opts.keymap[""] = { require("blink.cmp.keymap.presets").get("super-tab")[""][1], - LazyVim.cmp.map({ "snippet_forward", "ai_accept" }), + LazyVim.cmp.map({ "snippet_forward", "ai_nes", "ai_accept" }), "fallback", } else -- other presets opts.keymap[""] = { - LazyVim.cmp.map({ "snippet_forward", "ai_accept" }), + LazyVim.cmp.map({ "snippet_forward", "ai_nes", "ai_accept" }), "fallback", } end diff --git a/lua/lazyvim/plugins/extras/coding/nvim-cmp.lua b/lua/lazyvim/plugins/extras/coding/nvim-cmp.lua index 54bfbf7c..fab56250 100644 --- a/lua/lazyvim/plugins/extras/coding/nvim-cmp.lua +++ b/lua/lazyvim/plugins/extras/coding/nvim-cmp.lua @@ -52,7 +52,7 @@ return { fallback() end, [""] = function(fallback) - return LazyVim.cmp.map({ "snippet_forward", "ai_accept" }, fallback)() + return LazyVim.cmp.map({ "snippet_forward", "ai_nes", "ai_accept" }, fallback)() end, }), sources = cmp.config.sources({ diff --git a/lua/lazyvim/util/cmp.lua b/lua/lazyvim/util/cmp.lua index 2637b0d3..0641c892 100644 --- a/lua/lazyvim/util/cmp.lua +++ b/lua/lazyvim/util/cmp.lua @@ -18,7 +18,6 @@ M.actions = { vim.snippet.stop() end end, - ai_stop = function() end, } ---@param actions string[] From dbfe20996ce62d6b0048245ab4e304610548da04 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 27 Sep 2025 18:41:34 +0200 Subject: [PATCH 014/171] feat(extras): added extra for `sidekick.nvim` (Copilot LSP integration) --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/ai/sidekick.lua diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua new file mode 100644 index 00000000..54974b6e --- /dev/null +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -0,0 +1,49 @@ +return { + desc = "Next edit suggestions with the Copilot LSP server", + + -- copilot-language-server + { + "neovim/nvim-lspconfig", + opts = { + servers = { + copilot = {}, + }, + }, + }, + + -- lualine + { + "nvim-lualine/lualine.nvim", + optional = true, + event = "VeryLazy", + opts = function(_, opts) + table.insert( + opts.sections.lualine_x, + 2, + LazyVim.lualine.status(LazyVim.config.icons.kinds.Copilot, function() + local status = require("sidekick.status").get() + if status then + return status.kind == "Error" and "error" or status.busy and "pending" or "ok" + end + end) + ) + end, + }, + + { + "folke/sidekick.nvim", + opts = function() + -- Accept inline suggestions or next edits + LazyVim.cmp.actions.ai_nes = function() + local Nes = require("sidekick.nes") + if Nes.have() and (Nes.jump() or Nes.apply()) then + return true + end + end + end, + keys = { + -- nes is also useful in normal mode + { "", LazyVim.cmp.map({ "ai_nes" }, ""), mode = { "n" }, expr = true }, + }, + }, +} From eee364552e8afb893f4b3f47b9c0582ca390878b Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sat, 27 Sep 2025 16:42:47 +0000 Subject: [PATCH 015/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 8d0a76e9..a071f54a 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 September 26 +*LazyVim.txt* For Neovim Last change: 2025 September 27 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 060e6dfaf7d4157b1a144df7d83179640dc52400 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 18:54:19 +0200 Subject: [PATCH 016/171] chore(main): release 15.5.0 (#6533) :robot: I have created a release *beep* *boop* --- ## [15.5.0](https://github.com/LazyVim/LazyVim/compare/v15.4.0...v15.5.0) (2025-09-27) ### Features * **ai.copilot-native:** let sidekick.nvim handle some things if available ([b25ea9c](https://github.com/LazyVim/LazyVim/commit/b25ea9c153e76d11579731e1d5529f275a36f91d)) * **ai:** added completion hooks for next edit suggestions ([30a325d](https://github.com/LazyVim/LazyVim/commit/30a325d67184a80006dc55352d9663cdf01082d5)) * **extras:** added extra for `sidekick.nvim` (Copilot LSP integration) ([dbfe209](https://github.com/LazyVim/LazyVim/commit/dbfe20996ce62d6b0048245ab4e304610548da04)) ### Bug Fixes * **ai.copilot:** disable copilot lsp if installed. copilot.lua needs its own version of the LSP ([e9bc607](https://github.com/LazyVim/LazyVim/commit/e9bc6074d1ea69e921a6195d1dc34333eaa310f8)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 8a820181..46b8d23f 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.4.0" + ".": "15.5.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index abe4b7c0..1be2a770 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [15.5.0](https://github.com/LazyVim/LazyVim/compare/v15.4.0...v15.5.0) (2025-09-27) + + +### Features + +* **ai.copilot-native:** let sidekick.nvim handle some things if available ([b25ea9c](https://github.com/LazyVim/LazyVim/commit/b25ea9c153e76d11579731e1d5529f275a36f91d)) +* **ai:** added completion hooks for next edit suggestions ([30a325d](https://github.com/LazyVim/LazyVim/commit/30a325d67184a80006dc55352d9663cdf01082d5)) +* **extras:** added extra for `sidekick.nvim` (Copilot LSP integration) ([dbfe209](https://github.com/LazyVim/LazyVim/commit/dbfe20996ce62d6b0048245ab4e304610548da04)) + + +### Bug Fixes + +* **ai.copilot:** disable copilot lsp if installed. copilot.lua needs its own version of the LSP ([e9bc607](https://github.com/LazyVim/LazyVim/commit/e9bc6074d1ea69e921a6195d1dc34333eaa310f8)) + ## [15.4.0](https://github.com/LazyVim/LazyVim/compare/v15.3.0...v15.4.0) (2025-09-26) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 39c719cf..fde5e4a6 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.4.0" -- x-release-please-version +M.version = "15.5.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From b8899781516da71ba0f63afa93fb4a6b25dff144 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 27 Sep 2025 19:53:14 +0200 Subject: [PATCH 017/171] feat(sidekick): fancier lualine component --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 28 +++++++++++++++------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index 54974b6e..574938f7 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -17,16 +17,26 @@ return { optional = true, event = "VeryLazy", opts = function(_, opts) - table.insert( - opts.sections.lualine_x, - 2, - LazyVim.lualine.status(LazyVim.config.icons.kinds.Copilot, function() + local icons = { + Error = { " ", "DiagnosticError" }, + Inactive = { " ", "MsgArea" }, + Warning = { " ", "DiagnosticWarn" }, + Normal = { LazyVim.config.icons.kinds.Copilot, "Special" }, + } + table.insert(opts.sections.lualine_x, 2, { + function() local status = require("sidekick.status").get() - if status then - return status.kind == "Error" and "error" or status.busy and "pending" or "ok" - end - end) - ) + return status and vim.tbl_get(icons, status.kind, 1) + end, + cond = function() + return require("sidekick.status").get() ~= nil + end, + color = function() + local status = require("sidekick.status").get() + local hl = status and (status.busy and "DiagnosticWarn" or vim.tbl_get(icons, status.kind, 2)) + return { fg = Snacks.util.color(hl) } + end, + }) end, }, From 5d18a46b6a7bb5b946a6c87b9a45a2738c9ec9c3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 29 Sep 2025 23:12:20 +0200 Subject: [PATCH 018/171] feat(sidekick): added keymaps to work with AI cli tools --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index 574938f7..fbb9e446 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -54,6 +54,39 @@ return { keys = { -- nes is also useful in normal mode { "", LazyVim.cmp.map({ "ai_nes" }, ""), mode = { "n" }, expr = true }, + { "a", "", desc = "+ai", mode = { "n", "v" } }, + { + "aa", + function() + require("sidekick.cli").toggle() + end, + mode = { "n" }, + desc = "Sidekick Toggle", + }, + { + "as", + function() + require("sidekick.cli").select_tool() + end, + mode = { "n" }, + desc = "Sidekick Select Tool", + }, + { + "", + function() + require("sidekick.cli").focus() + end, + mode = { "n", "x", "i", "t" }, + desc = "Sidekick Switch Focus", + }, + { + "ap", + function() + require("sidekick.cli").select_prompt() + end, + desc = "Sidekick Ask Prompt", + mode = { "n", "v" }, + }, }, }, } From 44e37974164f52f718531ece7901f32f69a626e7 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:13:28 +0000 Subject: [PATCH 019/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index a071f54a..cb52ac56 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 September 27 +*LazyVim.txt* For Neovim Last change: 2025 September 29 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 3d3739b4b8943b5e7143d37f60bb0adbb6cf82f3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 30 Sep 2025 00:03:40 +0200 Subject: [PATCH 020/171] fix(sidekick): changed keymap to open new tool --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index fbb9e446..5af64c63 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -64,12 +64,12 @@ return { desc = "Sidekick Toggle", }, { - "as", + "an", function() require("sidekick.cli").select_tool() end, mode = { "n" }, - desc = "Sidekick Select Tool", + desc = "Sidekick New Tool", }, { "", From 089d0a5ac1ab85238804e017ac1ef0dc0a8341f0 Mon Sep 17 00:00:00 2001 From: Jonathan Pollak Date: Tue, 30 Sep 2025 07:48:46 +0300 Subject: [PATCH 021/171] fix(copilot-native): change Copilot-native's `` description to "Prev Suggestion" (#6553) ## Description The description for both `` and `` in the `copilot-native` extra are described as `Next Copilot Suggestion`. The PR changes the description of `` to be `Prev Copilot Suggestion` ## Related Issue(s) ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/ai/copilot-native.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-native.lua b/lua/lazyvim/plugins/extras/ai/copilot-native.lua index 310fbd81..5b936885 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-native.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-native.lua @@ -37,7 +37,7 @@ return { { "", function() vim.lsp.inline_completion.select({ count = -1 }) end, - desc = "Next Copilot Suggestion", + desc = "Prev Copilot Suggestion", mode = { "i", "n" }, }, }, From aa8115848dd6a823162150f6170401a77a0f9262 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Tue, 30 Sep 2025 04:49:39 +0000 Subject: [PATCH 022/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index cb52ac56..f4206577 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 September 29 +*LazyVim.txt* For Neovim Last change: 2025 September 30 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 22851dce979c4cac379c6795ca7885c83c1c7eaf Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 30 Sep 2025 15:42:15 +0200 Subject: [PATCH 023/171] fix(config): clipboard:get() --- lua/lazyvim/config/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index fde5e4a6..96aa3246 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -335,7 +335,7 @@ function M.init() M._options.foldexpr = vim.o.foldexpr -- defer built-in clipboard handling: "xsel" and "pbcopy" can be slow - lazy_clipboard = vim.opt.clipboard + lazy_clipboard = vim.opt.clipboard:get() vim.opt.clipboard = "" if vim.g.deprecation_warnings == false then From 4ebcd611b2c81de9badba26146ee86ed4020cee5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 30 Sep 2025 16:43:00 +0200 Subject: [PATCH 024/171] chore(main): release 15.6.0 (#6536) :robot: I have created a release *beep* *boop* --- ## [15.6.0](https://github.com/LazyVim/LazyVim/compare/v15.5.0...v15.6.0) (2025-09-30) ### Features * **sidekick:** added keymaps to work with AI cli tools ([5d18a46](https://github.com/LazyVim/LazyVim/commit/5d18a46b6a7bb5b946a6c87b9a45a2738c9ec9c3)) * **sidekick:** fancier lualine component ([b889978](https://github.com/LazyVim/LazyVim/commit/b8899781516da71ba0f63afa93fb4a6b25dff144)) ### Bug Fixes * **config:** clipboard:get() ([22851dc](https://github.com/LazyVim/LazyVim/commit/22851dce979c4cac379c6795ca7885c83c1c7eaf)) * **copilot-native:** change Copilot-native's `` description to "Prev Suggestion" ([#6553](https://github.com/LazyVim/LazyVim/issues/6553)) ([089d0a5](https://github.com/LazyVim/LazyVim/commit/089d0a5ac1ab85238804e017ac1ef0dc0a8341f0)) * **sidekick:** changed keymap to open new tool ([3d3739b](https://github.com/LazyVim/LazyVim/commit/3d3739b4b8943b5e7143d37f60bb0adbb6cf82f3)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 15 +++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 46b8d23f..e40520b5 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.5.0" + ".": "15.6.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 1be2a770..48d578c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [15.6.0](https://github.com/LazyVim/LazyVim/compare/v15.5.0...v15.6.0) (2025-09-30) + + +### Features + +* **sidekick:** added keymaps to work with AI cli tools ([5d18a46](https://github.com/LazyVim/LazyVim/commit/5d18a46b6a7bb5b946a6c87b9a45a2738c9ec9c3)) +* **sidekick:** fancier lualine component ([b889978](https://github.com/LazyVim/LazyVim/commit/b8899781516da71ba0f63afa93fb4a6b25dff144)) + + +### Bug Fixes + +* **config:** clipboard:get() ([22851dc](https://github.com/LazyVim/LazyVim/commit/22851dce979c4cac379c6795ca7885c83c1c7eaf)) +* **copilot-native:** change Copilot-native's `` description to "Prev Suggestion" ([#6553](https://github.com/LazyVim/LazyVim/issues/6553)) ([089d0a5](https://github.com/LazyVim/LazyVim/commit/089d0a5ac1ab85238804e017ac1ef0dc0a8341f0)) +* **sidekick:** changed keymap to open new tool ([3d3739b](https://github.com/LazyVim/LazyVim/commit/3d3739b4b8943b5e7143d37f60bb0adbb6cf82f3)) + ## [15.5.0](https://github.com/LazyVim/LazyVim/compare/v15.4.0...v15.5.0) (2025-09-27) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 96aa3246..4c04eb36 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.5.0" -- x-release-please-version +M.version = "15.6.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 2f76d572a2b172e5e7e236d3e972443242c36b66 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 30 Sep 2025 18:10:36 +0200 Subject: [PATCH 025/171] fix(stylua): stylua is now also an LSP. Disable it since we use the CLI tool. --- lua/lazyvim/plugins/lsp/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazyvim/plugins/lsp/init.lua b/lua/lazyvim/plugins/lsp/init.lua index 2fe3ae97..5d93c399 100644 --- a/lua/lazyvim/plugins/lsp/init.lua +++ b/lua/lazyvim/plugins/lsp/init.lua @@ -71,6 +71,7 @@ return { ---@alias lazyvim.lsp.Config vim.lsp.Config|{mason?:boolean, enabled?:boolean} ---@type table servers = { + stylua = { enabled = false }, lua_ls = { -- mason = false, -- set to false if you don't want this server to be installed with mason -- Use this to add any additional keymaps From 23b1da170f6367fafe0be47b9c141770ed75a78e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 1 Oct 2025 19:04:14 +0200 Subject: [PATCH 026/171] fix(copilot-native): schedule inline_completion.enable --- lua/lazyvim/plugins/extras/ai/copilot-native.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-native.lua b/lua/lazyvim/plugins/extras/ai/copilot-native.lua index 5b936885..a93e077a 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-native.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-native.lua @@ -45,7 +45,9 @@ return { }, setup = { copilot = function() - vim.lsp.inline_completion.enable() + vim.schedule(function() + vim.lsp.inline_completion.enable() + end) -- Accept inline suggestions or next edits LazyVim.cmp.actions.ai_accept = function() return vim.lsp.inline_completion.get() From 2df7988b1e9abcc2e3a882c38ea96b4da8b6edec Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Wed, 1 Oct 2025 17:05:13 +0000 Subject: [PATCH 027/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index f4206577..2b34a330 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 September 30 +*LazyVim.txt* For Neovim Last change: 2025 October 01 ============================================================================== Table of Contents *LazyVim-table-of-contents* From aabc03f88d30b0424926d9d894adc5c91eb84ec2 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 1 Oct 2025 19:05:47 +0200 Subject: [PATCH 028/171] fix(sidekick): better keymaps --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index 5af64c63..ba8a3368 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -64,12 +64,12 @@ return { desc = "Sidekick Toggle", }, { - "an", + "as", function() - require("sidekick.cli").select_tool() + require("sidekick.cli").select() end, mode = { "n" }, - desc = "Sidekick New Tool", + desc = "Sidekick Select", }, { "", @@ -82,9 +82,9 @@ return { { "ap", function() - require("sidekick.cli").select_prompt() + require("sidekick.cli").prompt() end, - desc = "Sidekick Ask Prompt", + desc = "Sidekick Prompt", mode = { "n", "v" }, }, }, From 2942bd4a0d738d693af51354e96aa7be5407d105 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 1 Oct 2025 22:18:05 +0200 Subject: [PATCH 029/171] feat(sidekick): updated keymaps for sidekick --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 36 ++++++++++------------ 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index ba8a3368..e8e88c26 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -51,42 +51,40 @@ return { end end end, + -- stylua: ignore keys = { -- nes is also useful in normal mode { "", LazyVim.cmp.map({ "ai_nes" }, ""), mode = { "n" }, expr = true }, { "a", "", desc = "+ai", mode = { "n", "v" } }, { "aa", - function() - require("sidekick.cli").toggle() - end, - mode = { "n" }, - desc = "Sidekick Toggle", + function() require("sidekick.cli").toggle() end, + desc = "Sidekick Toggle CLI", }, { "as", - function() - require("sidekick.cli").select() - end, + function() require("sidekick.cli").select() end, mode = { "n" }, - desc = "Sidekick Select", + desc = "Sidekick Select CLI", }, { - "", - function() - require("sidekick.cli").focus() - end, - mode = { "n", "x", "i", "t" }, - desc = "Sidekick Switch Focus", + "as", + function() require("sidekick.cli").send() end, + mode = { "v" }, + desc = "Sidekick Send Visual Selection", }, { "ap", - function() - require("sidekick.cli").prompt() - end, - desc = "Sidekick Prompt", + function() require("sidekick.cli").prompt() end, + desc = "Sidekick Select Prompt", mode = { "n", "v" }, }, + { + "", + function() require("sidekick.cli").focus() end, + mode = { "n", "x", "i", "t" }, + desc = "Sidekick Switch Focus", + }, }, }, } From fab399c90d10b5000dd19489a40d856fe3312edc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 07:22:59 +0200 Subject: [PATCH 030/171] chore(main): release 15.7.0 (#6556) :robot: I have created a release *beep* *boop* --- ## [15.7.0](https://github.com/LazyVim/LazyVim/compare/v15.6.0...v15.7.0) (2025-10-01) ### Features * **sidekick:** updated keymaps for sidekick ([2942bd4](https://github.com/LazyVim/LazyVim/commit/2942bd4a0d738d693af51354e96aa7be5407d105)) ### Bug Fixes * **copilot-native:** schedule inline_completion.enable ([23b1da1](https://github.com/LazyVim/LazyVim/commit/23b1da170f6367fafe0be47b9c141770ed75a78e)) * **sidekick:** better keymaps ([aabc03f](https://github.com/LazyVim/LazyVim/commit/aabc03f88d30b0424926d9d894adc5c91eb84ec2)) * **stylua:** stylua is now also an LSP. Disable it since we use the CLI tool. ([2f76d57](https://github.com/LazyVim/LazyVim/commit/2f76d572a2b172e5e7e236d3e972443242c36b66)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index e40520b5..a54c61a0 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.6.0" + ".": "15.7.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 48d578c9..92842c17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [15.7.0](https://github.com/LazyVim/LazyVim/compare/v15.6.0...v15.7.0) (2025-10-01) + + +### Features + +* **sidekick:** updated keymaps for sidekick ([2942bd4](https://github.com/LazyVim/LazyVim/commit/2942bd4a0d738d693af51354e96aa7be5407d105)) + + +### Bug Fixes + +* **copilot-native:** schedule inline_completion.enable ([23b1da1](https://github.com/LazyVim/LazyVim/commit/23b1da170f6367fafe0be47b9c141770ed75a78e)) +* **sidekick:** better keymaps ([aabc03f](https://github.com/LazyVim/LazyVim/commit/aabc03f88d30b0424926d9d894adc5c91eb84ec2)) +* **stylua:** stylua is now also an LSP. Disable it since we use the CLI tool. ([2f76d57](https://github.com/LazyVim/LazyVim/commit/2f76d572a2b172e5e7e236d3e972443242c36b66)) + ## [15.6.0](https://github.com/LazyVim/LazyVim/compare/v15.5.0...v15.6.0) (2025-09-30) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 4c04eb36..5a60a575 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.6.0" -- x-release-please-version +M.version = "15.7.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 7fb57a7081b1647c4a92058ccae0a71b28d0b3c0 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Thu, 2 Oct 2025 05:24:03 +0000 Subject: [PATCH 031/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 2b34a330..091b0880 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 01 +*LazyVim.txt* For Neovim Last change: 2025 October 02 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 188b2886147acb4d9e2a5c8ae7b73770fd66a92c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 2 Oct 2025 19:14:51 +0200 Subject: [PATCH 032/171] fix(sidekick): better keymaps --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 27 ++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index e8e88c26..6e80ba47 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -64,20 +64,27 @@ return { { "as", function() require("sidekick.cli").select() end, - mode = { "n" }, - desc = "Sidekick Select CLI", + -- Or to select only installed tools: + -- require("sidekick.cli").select({ filter = { installed = true } }) + desc = "Select CLI", }, { - "as", - function() require("sidekick.cli").send() end, - mode = { "v" }, - desc = "Sidekick Send Visual Selection", + "at", + function() require("sidekick.cli").send({ msg = "{this}" }) end, + mode = { "x", "n" }, + desc = "Send This", + }, + { + "av", + function() require("sidekick.cli").send({ msg = "{selection}" }) end, + mode = { "x" }, + desc = "Send Visual Selection", }, { "ap", function() require("sidekick.cli").prompt() end, + mode = { "n", "x" }, desc = "Sidekick Select Prompt", - mode = { "n", "v" }, }, { "", @@ -85,6 +92,12 @@ return { mode = { "n", "x", "i", "t" }, desc = "Sidekick Switch Focus", }, + -- Example of a keybinding to open Claude directly + { + "ac", + function() require("sidekick.cli").toggle({ name = "claude", focus = true }) end, + desc = "Sidekick Claude Toggle", + }, }, }, } From dc1ffa5bcb66f46284f91a8593dda5c7c54a1824 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 19:18:17 +0200 Subject: [PATCH 033/171] chore(main): release 15.7.1 (#6575) :robot: I have created a release *beep* *boop* --- ## [15.7.1](https://github.com/LazyVim/LazyVim/compare/v15.7.0...v15.7.1) (2025-10-02) ### Bug Fixes * **sidekick:** better keymaps ([188b288](https://github.com/LazyVim/LazyVim/commit/188b2886147acb4d9e2a5c8ae7b73770fd66a92c)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index a54c61a0..6cc4959a 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.7.0" + ".": "15.7.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 92842c17..1c7935c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [15.7.1](https://github.com/LazyVim/LazyVim/compare/v15.7.0...v15.7.1) (2025-10-02) + + +### Bug Fixes + +* **sidekick:** better keymaps ([188b288](https://github.com/LazyVim/LazyVim/commit/188b2886147acb4d9e2a5c8ae7b73770fd66a92c)) + ## [15.7.0](https://github.com/LazyVim/LazyVim/compare/v15.6.0...v15.7.0) (2025-10-01) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 5a60a575..233328d5 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.7.0" -- x-release-please-version +M.version = "15.7.1" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From b9d38f692015fecaa72d55282b74a3d601e4c9fa Mon Sep 17 00:00:00 2001 From: "Md. Iftakhar Awal Chowdhury" <42291930+AtifChy@users.noreply.github.com> Date: Fri, 3 Oct 2025 00:52:41 +0600 Subject: [PATCH 034/171] fix(keymaps): update deprecated diagnostic keymap to latest api change (#6574) ## Description refectors deprecated `diagnostic_goto` calls to newer `vim.diagnostic.jump` API. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/config/keymaps.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 938a2333..5709aa6f 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -120,10 +120,12 @@ end, { desc = "Format" }) -- diagnostic local diagnostic_goto = function(next, severity) - local go = next and vim.diagnostic.goto_next or vim.diagnostic.goto_prev - severity = severity and vim.diagnostic.severity[severity] or nil return function() - go({ severity = severity }) + vim.diagnostic.jump({ + count = (next and 1 or -1) * vim.v.count1, + severity = severity and vim.diagnostic.severity[severity] or nil, + float = true, + }) end end map("n", "cd", vim.diagnostic.open_float, { desc = "Line Diagnostics" }) From c220e04cd65b56331622dcf0ddcc6fe9d104dce9 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 8 Oct 2025 21:26:13 +0200 Subject: [PATCH 035/171] ci: update test scripts --- scripts/test | 4 ++-- tests/minit.lua | 8 +++++++- vim.toml | 21 --------------------- vim.yml | 19 +++++++++++++++++++ 4 files changed, 28 insertions(+), 24 deletions(-) delete mode 100644 vim.toml create mode 100644 vim.yml diff --git a/scripts/test b/scripts/test index ffbb5405..354a1a1c 100755 --- a/scripts/test +++ b/scripts/test @@ -1,3 +1,3 @@ -#!/bin/env bash +#!/usr/bin/env bash -nvim -l tests/minit.lua --minitest +nvim -l tests/minit.lua --minitest "$@" diff --git a/tests/minit.lua b/tests/minit.lua index 41907e75..c1d7c473 100644 --- a/tests/minit.lua +++ b/tests/minit.lua @@ -1,7 +1,13 @@ #!/usr/bin/env -S nvim -l vim.env.LAZY_STDPATH = ".tests" -load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"))() +vim.env.LAZY_PATH = vim.fs.normalize("~/projects/lazy.nvim") + +if vim.fn.isdirectory(vim.env.LAZY_PATH) then + loadfile(vim.env.LAZY_PATH .. "/bootstrap.lua")() +else + load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"), "bootstrap.lua")() +end -- Setup lazy.nvim require("lazy.minit").setup({ diff --git a/vim.toml b/vim.toml deleted file mode 100644 index df7e67e6..00000000 --- a/vim.toml +++ /dev/null @@ -1,21 +0,0 @@ -[selene] -base = "lua51" -name = "vim" - -[vim] -any = true - -[jit] -any = true - -[assert] -any = true - -[describe] -any = true - -[it] -any = true - -[before_each.args] -any = true diff --git a/vim.yml b/vim.yml new file mode 100644 index 00000000..eb58a874 --- /dev/null +++ b/vim.yml @@ -0,0 +1,19 @@ +base: lua51 +lua_versions: + - luajit + +globals: + Snacks: + any: true + vim: + any: true + jit: + any: true + assert: + any: true + describe: + any: true + it: + any: true + before_each: + any: true From 8546f6232ecb1305a4ef9df281bad3512ba09da5 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 8 Oct 2025 21:32:23 +0200 Subject: [PATCH 036/171] ci: update minit.lua --- tests/minit.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/minit.lua b/tests/minit.lua index c1d7c473..37d7e1c8 100644 --- a/tests/minit.lua +++ b/tests/minit.lua @@ -3,7 +3,7 @@ vim.env.LAZY_STDPATH = ".tests" vim.env.LAZY_PATH = vim.fs.normalize("~/projects/lazy.nvim") -if vim.fn.isdirectory(vim.env.LAZY_PATH) then +if vim.fn.isdirectory(vim.env.LAZY_PATH) == 1 then loadfile(vim.env.LAZY_PATH .. "/bootstrap.lua")() else load(vim.fn.system("curl -s https://raw.githubusercontent.com/folke/lazy.nvim/main/bootstrap.lua"), "bootstrap.lua")() From 74f3c7c36d5e46cc548e5a006b417653baf0a2ca Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Wed, 8 Oct 2025 19:33:56 +0000 Subject: [PATCH 037/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 091b0880..e55c8280 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 02 +*LazyVim.txt* For Neovim Last change: 2025 October 08 ============================================================================== Table of Contents *LazyVim-table-of-contents* From a3e52dd346ea35db5521b66e46dca95d32f00cb4 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 9 Oct 2025 00:12:43 +0200 Subject: [PATCH 038/171] feat(sidekick): changed default keymaps for sidekick. Please check updated docs at sidekick.nvim --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 23 +++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index 6e80ba47..52597b0e 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -56,6 +56,12 @@ return { -- nes is also useful in normal mode { "", LazyVim.cmp.map({ "ai_nes" }, ""), mode = { "n" }, expr = true }, { "a", "", desc = "+ai", mode = { "n", "v" } }, + { + "", + function() require("sidekick.cli").toggle() end, + desc = "Sidekick Toggle", + mode = { "n", "t", "i", "x" }, + }, { "aa", function() require("sidekick.cli").toggle() end, @@ -74,6 +80,11 @@ return { mode = { "x", "n" }, desc = "Send This", }, + { + "af", + function() require("sidekick.cli").send({ msg = "{file}" }) end, + desc = "Send File", + }, { "av", function() require("sidekick.cli").send({ msg = "{selection}" }) end, @@ -86,18 +97,6 @@ return { mode = { "n", "x" }, desc = "Sidekick Select Prompt", }, - { - "", - function() require("sidekick.cli").focus() end, - mode = { "n", "x", "i", "t" }, - desc = "Sidekick Switch Focus", - }, - -- Example of a keybinding to open Claude directly - { - "ac", - function() require("sidekick.cli").toggle({ name = "claude", focus = true }) end, - desc = "Sidekick Claude Toggle", - }, }, }, } From aa2c43633adee0f80faf8d743d6476ea4f8ba5ca Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Thu, 9 Oct 2025 14:46:25 +0300 Subject: [PATCH 039/171] fix(xtras): load `copilot-native` before `blink` (#6588) ## Description `blink` Extra loads earlier than `copilot-native` Extra and that causes `ghost_text.enabled = vim.g.ai_cmp` to wrongly evaluate to `true` even though `copilot-native` explicitly sets `vim.g.ai_cmp = false`. I also changed the order of `blink` and `typescript` so that `blink` comes logically right after `copilot-native`, hope that is not a problem. If it is, feel free to revert the order and just keep the change about `copilot-native`. ## Related Issue(s) None, I was just trying to create a toggle mapping to disable/enable both NES and inline_completion and even though they were disabled, I could see ghost_text from blink. ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/xtras.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/xtras.lua b/lua/lazyvim/plugins/xtras.lua index 19a5c6da..5db08ef1 100644 --- a/lua/lazyvim/plugins/xtras.lua +++ b/lua/lazyvim/plugins/xtras.lua @@ -5,8 +5,9 @@ local prios = { ["lazyvim.plugins.extras.coding.nvim-cmp"] = 2, ["lazyvim.plugins.extras.editor.neo-tree"] = 2, ["lazyvim.plugins.extras.ui.edgy"] = 3, - ["lazyvim.plugins.extras.lang.typescript"] = 5, + ["lazyvim.plugins.extras.ai.copilot-native"] = 4, ["lazyvim.plugins.extras.coding.blink"] = 5, + ["lazyvim.plugins.extras.lang.typescript"] = 5, ["lazyvim.plugins.extras.formatting.prettier"] = 10, -- default core extra priority is 20 -- default priority is 50 From 92ff787e739a17df6e5ba4c505d3e3521ad47e52 Mon Sep 17 00:00:00 2001 From: Vlad <52591095+MeanderingProgrammer@users.noreply.github.com> Date: Thu, 9 Oct 2025 04:47:01 -0700 Subject: [PATCH 040/171] chore(render-markdown): use API to toggle (#6558) ## Description The `state` module in `render-markdown` is not expected to be accessed outside of the package and may be refactored in the future. Prevent any breaking changes in LazyVim by using the public API which was updated here: https://github.com/MeanderingProgrammer/render-markdown.nvim/commit/accaa600ba59022171275adf6640dda13004bd6f ## Related Issue(s) None ## Screenshots N/A ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/markdown.lua | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/markdown.lua b/lua/lazyvim/plugins/extras/lang/markdown.lua index 33e9e457..ac5405e3 100644 --- a/lua/lazyvim/plugins/extras/lang/markdown.lua +++ b/lua/lazyvim/plugins/extras/lang/markdown.lua @@ -113,17 +113,8 @@ return { require("render-markdown").setup(opts) Snacks.toggle({ name = "Render Markdown", - get = function() - return require("render-markdown.state").enabled - end, - set = function(enabled) - local m = require("render-markdown") - if enabled then - m.enable() - else - m.disable() - end - end, + get = require("render-markdown").get, + set = require("render-markdown").set, }):map("um") end, }, From a205ef889f329172edba33960f77830c37088d2d Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Thu, 9 Oct 2025 11:47:28 +0000 Subject: [PATCH 041/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index e55c8280..4398c40a 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 08 +*LazyVim.txt* For Neovim Last change: 2025 October 09 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 94c4603b6838fbe75343b6e3342b4343744157dc Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 9 Oct 2025 18:08:27 +0200 Subject: [PATCH 042/171] fix(blink): disable blink left/right key in the cmdline --- lua/lazyvim/plugins/extras/coding/blink.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/coding/blink.lua b/lua/lazyvim/plugins/extras/coding/blink.lua index 790808b1..d5b9a57b 100644 --- a/lua/lazyvim/plugins/extras/coding/blink.lua +++ b/lua/lazyvim/plugins/extras/coding/blink.lua @@ -85,7 +85,11 @@ return { cmdline = { enabled = true, - keymap = { preset = "cmdline" }, + keymap = { + preset = "cmdline", + [""] = false, + [""] = false, + }, completion = { list = { selection = { preselect = false } }, menu = { From 4efd0e2bea2a387d6fcdea8cf36a62049e8bafed Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 9 Oct 2025 22:08:13 +0200 Subject: [PATCH 043/171] fix(terminal): term toggle keymaps now only work for snacks terminals. Closes #6573 --- lua/lazyvim/config/keymaps.lua | 8 ++------ lua/lazyvim/plugins/util.lua | 2 ++ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 5709aa6f..d8d7a10f 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -189,12 +189,8 @@ map("n", "L", function() LazyVim.news.changelog() end, { desc = "LazyVim -- floating terminal map("n", "fT", function() Snacks.terminal() end, { desc = "Terminal (cwd)" }) map("n", "ft", function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" }) -map("n", "", function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" }) -map("n", "", function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "which_key_ignore" }) - --- Terminal Mappings -map("t", "", "close", { desc = "Hide Terminal" }) -map("t", "", "close", { desc = "which_key_ignore" }) +map({"n","t"}, "",function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "Terminal (Root Dir)" }) +map({"n","t"}, "",function() Snacks.terminal(nil, { cwd = LazyVim.root() }) end, { desc = "which_key_ignore" }) -- windows map("n", "-", "s", { desc = "Split Window Below", remap = true }) diff --git a/lua/lazyvim/plugins/util.lua b/lua/lazyvim/plugins/util.lua index 8d8aa220..0357c3fb 100644 --- a/lua/lazyvim/plugins/util.lua +++ b/lua/lazyvim/plugins/util.lua @@ -23,6 +23,8 @@ return { nav_j = { "", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" }, nav_k = { "", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" }, nav_l = { "", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" }, + hide_slash = { "", "hide", desc = "Hide Terminal", mode = { "t", "n" } }, + hide_underscore = { "", "hide", desc = "which_key_ignore", mode = { "t", "n" } }, }, }, }, From 0e8069c78ee92279055236388df8c2019476767a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 10 Oct 2025 06:45:12 +0200 Subject: [PATCH 044/171] feat(treesitter): added support for `disable` langs to indent/highlight/folds. Closes #6608 --- lua/lazyvim/plugins/treesitter.lua | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 78f1b3b2..b53e9c37 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -21,12 +21,13 @@ return { event = { "LazyFile", "VeryLazy" }, cmd = { "TSUpdate", "TSInstall", "TSLog", "TSUninstall" }, opts_extend = { "ensure_installed" }, + ---@alias lazyvim.TSFeat { enable?: boolean, disable?: string[] } ---@class lazyvim.TSConfig: TSConfig opts = { -- LazyVim config for treesitter - indent = { enable = true }, - highlight = { enable = true }, - folds = { enable = true }, + indent = { enable = true }, ---@type lazyvim.TSFeat + highlight = { enable = true }, ---@type lazyvim.TSFeat + folds = { enable = true }, ---@type lazyvim.TSFeat ensure_installed = { "bash", "c", @@ -99,22 +100,32 @@ return { vim.api.nvim_create_autocmd("FileType", { group = vim.api.nvim_create_augroup("lazyvim_treesitter", { clear = true }), callback = function(ev) - if not LazyVim.treesitter.have(ev.match) then + local ft, lang = ev.match, vim.treesitter.language.get_lang(ev.match) + if not LazyVim.treesitter.have(ft) then return end + ---@param feat string + ---@param query string + local function enabled(feat, query) + local f = opts[feat] or {} ---@type lazyvim.TSFeat + return f.enable ~= false + and not vim.tbl_contains(f.disable or {}, lang) + and LazyVim.treesitter.have(ft, query) + end + -- highlighting - if vim.tbl_get(opts, "highlight", "enable") ~= false then + if enabled("highlight", "highlights") then pcall(vim.treesitter.start) end -- indents - if vim.tbl_get(opts, "indent", "enable") ~= false and LazyVim.treesitter.have(ev.match, "indents") then + if enabled("indent", "indents") then LazyVim.set_default("indentexpr", "v:lua.LazyVim.treesitter.indentexpr()") end -- folds - if vim.tbl_get(opts, "folds", "enable") ~= false and LazyVim.treesitter.have(ev.match, "folds") then + if enabled("folds", "folds") then if LazyVim.set_default("foldmethod", "expr") then LazyVim.set_default("foldexpr", "v:lua.LazyVim.treesitter.foldexpr()") end From c1aef3b62a21e0525c12681e28a64a2b7950d7d6 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Fri, 10 Oct 2025 04:46:21 +0000 Subject: [PATCH 045/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 4398c40a..ec2f0a19 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 09 +*LazyVim.txt* For Neovim Last change: 2025 October 10 ============================================================================== Table of Contents *LazyVim-table-of-contents* From e8c5fa7eae06539c883699507caeadb46d74f401 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 10 Oct 2025 20:57:42 +0200 Subject: [PATCH 046/171] fix(treesiter): check that `disable` options are tables --- lua/lazyvim/plugins/treesitter.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index b53e9c37..5106da4e 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -110,7 +110,7 @@ return { local function enabled(feat, query) local f = opts[feat] or {} ---@type lazyvim.TSFeat return f.enable ~= false - and not vim.tbl_contains(f.disable or {}, lang) + and not (type(f.disable) == "table" and vim.tbl_contains(f.disable, lang)) and LazyVim.treesitter.have(ft, query) end From f8b062b130177f07d3c1c13b642402d42e980df5 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 11 Oct 2025 00:05:16 +0200 Subject: [PATCH 047/171] feat(sidekick): added `ad` to close/detach a terminal/session --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index 52597b0e..5b2c0976 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -74,6 +74,11 @@ return { -- require("sidekick.cli").select({ filter = { installed = true } }) desc = "Select CLI", }, + { + "ad", + function() require("sidekick.cli").close() end, + desc = "Detach a CLI Session", + }, { "at", function() require("sidekick.cli").send({ msg = "{this}" }) end, From 049db39de0f272e8368a4b3881ac5a13f0d04b09 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 11 Oct 2025 08:16:17 +0200 Subject: [PATCH 048/171] fix(sidekick): only add copilot to lspconfig when `opts.nes.enabled ~= false` --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index 5b2c0976..71e76eb4 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -4,11 +4,13 @@ return { -- copilot-language-server { "neovim/nvim-lspconfig", - opts = { - servers = { - copilot = {}, - }, - }, + opts = function(_, opts) + local sk = LazyVim.opts("sidekick.nvim") ---@type sidekick.Config|{} + if vim.tbl_get(sk, "nes", "enabled") ~= false then + opts.servers = opts.servers or {} + opts.servers.copilot = opts.servers.copilot or {} + end + end, }, -- lualine From eaa3d4d428de8a78235515721dc200f8e98781e8 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sat, 11 Oct 2025 06:17:37 +0000 Subject: [PATCH 049/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index ec2f0a19..c64778ca 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 10 +*LazyVim.txt* For Neovim Last change: 2025 October 11 ============================================================================== Table of Contents *LazyVim-table-of-contents* From c2aa088300d908398eeb357685e5f215b396381a Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Sat, 11 Oct 2025 14:48:48 +0800 Subject: [PATCH 050/171] docs(README): bump Neovim requirement to 0.11.2 (#6611) ## Description Update neovim requirement in readme. ## Related Issue(s) ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- README-CN.md | 2 +- README-DE.md | 2 +- README-ES.md | 2 +- README-IT.md | 2 +- README-JP.md | 2 +- README-KO.md | 2 +- README-PT.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README-CN.md b/README-CN.md index 83e5abfd..67132e59 100644 --- a/README-CN.md +++ b/README-CN.md @@ -54,7 +54,7 @@ LazyVim 是一个基于 [💤 lazy.nvim](https://github.com/folke/lazy.nvim) 的 ## ⚡️ 环境要求 -- Neovim >= **0.9.0** (需要用 **LuaJIT** 构建) +- Neovim >= **0.11.2** (需要用 **LuaJIT** 构建) - Git >= **2.19.0** (用于部分克隆支持) - 一个 [Nerd Font](https://www.nerdfonts.com/) 字体 **_(可选)_** - 一个用于 `nvim-treesitter` 的 **C** 编译器。看 [这里](https://github.com/nvim-treesitter/nvim-treesitter#requirements) diff --git a/README-DE.md b/README-DE.md index c087d7c6..a46aba0a 100644 --- a/README-DE.md +++ b/README-DE.md @@ -56,7 +56,7 @@ und die Einfachheit von einem vorgefertigten Setup. ## ⚡️ Vorraussetzungen -- Neovim >= **0.8.0** (gebraucht um mit **LuaJIT** zu bauen) +- Neovim >= **0.11.2** (gebraucht um mit **LuaJIT** zu bauen) - Git >= **2.19.0** (um Teil-Klone zu unterstützen) - eine [Nerd Font](https://www.nerdfonts.com/) **_(optional)_** diff --git a/README-ES.md b/README-ES.md index 06e64f96..3dd7f108 100644 --- a/README-ES.md +++ b/README-ES.md @@ -52,7 +52,7 @@ LazyVim es una configuración de Neovim impulsada por [💤 lazy.nvim](https://g ## ⚡️ Requisitos -- Neovim >= **0.9.0** (debe ser compilado con **LuaJIT**) +- Neovim >= **0.11.2** (debe ser compilado con **LuaJIT**) - Git >= **2.19.0** (para soporte de clones parciales) - una [Fuente Nerd](https://www.nerdfonts.com/) **_(opcional)_** - un compilador **C** para `nvim-treesitter`. Consulta [aquí](https://github.com/nvim-treesitter/nvim-treesitter#requirements) diff --git a/README-IT.md b/README-IT.md index 3ab7419a..3bf82a9c 100644 --- a/README-IT.md +++ b/README-IT.md @@ -57,7 +57,7 @@ insieme alla comodità di un setup preconfigurato. ## ⚡️ Requisiti -- Neovim >= **0.9.0** (deve essere compilato con **LuaJIT**) +- Neovim >= **0.11.2** (deve essere compilato con **LuaJIT**) - Git >= **2.19.0** (per supportare cloni parziali) - a [Nerd Font](https://www.nerdfonts.com/) **_(opzionale)_** - un compilatore **C** per `nvim-treesitter`. Leggi [qui](https://github.com/nvim-treesitter/nvim-treesitter#requirements) diff --git a/README-JP.md b/README-JP.md index d81f2cb9..e7a2da3d 100644 --- a/README-JP.md +++ b/README-JP.md @@ -54,7 +54,7 @@ LazyVimは、ゼロから始めるか、あらかじめ作成されたディス ## ⚡️ 必要要件 -- Neovim >= **0.9.0** (**LuaJIT**でビルドされている必要があります) +- Neovim >= **0.11.2** (**LuaJIT**でビルドされている必要があります) - Git >= **2.19.0** (部分的なcloneサポートのため) - [Nerd Font](https://www.nerdfonts.com/) **_(任意)_** - `nvim-treesitter`用の**C**コンパイラ。詳細は[こちら](https://github.com/nvim-treesitter/nvim-treesitter#requirements) diff --git a/README-KO.md b/README-KO.md index 84d28017..25ac67ef 100644 --- a/README-KO.md +++ b/README-KO.md @@ -52,7 +52,7 @@ LazyVim은 [💤 lazy.nvim](https://github.com/folke/lazy.nvim)를 기반으로 ## ⚡️ 요구사항 -- **0.9.0**이상의 Neovim (LuaJIT과 함께 개발이 되어져있어야함니다.) +- **0.11.2**이상의 Neovim (LuaJIT과 함께 개발이 되어져있어야함니다.) - **2.19.0**이상의 Git (이것은 부분적인 클론기능을 지원하기 위함입니다.) - [Nerd Font](https://www.nerdfonts.com/) **_(옵션)_** - `nvim-treesitter`를 위한 **C** 컴파일러. [이 문서](https://github.com/nvim-treesitter/nvim-treesitter#requirements)를 확인해주시기바랍니다. diff --git a/README-PT.md b/README-PT.md index 65d8c625..67bd6fb1 100644 --- a/README-PT.md +++ b/README-PT.md @@ -57,7 +57,7 @@ como necessário, junto com a conveniência de um setup pré-configurado. ## ⚡️ Requesitos -- Neovim >= **0.9.0** (preciso fazer build com **LuaJIT**) +- Neovim >= **0.11.2** (preciso fazer build com **LuaJIT**) - Git >= **2.19.0** (para suporte parcial de clones) - uma [Nerd Font](https://www.nerdfonts.com/) **_(opcional)_** - um compilador de **C** para `nvim-treesitter`. Mais informações [aqui](https://github.com/nvim-treesitter/nvim-treesitter#requirements) From ebdcf1ba7ef18daa8c897c8922a5ef770e8bcffb Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 12 Oct 2025 14:26:05 +0200 Subject: [PATCH 051/171] perf(ansible): load on ft=yaml and run should only be mapped on ft=yaml.ansible --- lua/lazyvim/plugins/extras/lang/ansible.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/ansible.lua b/lua/lazyvim/plugins/extras/lang/ansible.lua index 0d20b02a..c093f278 100644 --- a/lua/lazyvim/plugins/extras/lang/ansible.lua +++ b/lua/lazyvim/plugins/extras/lang/ansible.lua @@ -19,13 +19,14 @@ return { }, { "mfussenegger/nvim-ansible", - ft = {}, + ft = { "yaml" }, keys = { { "ta", function() require("ansible").run() end, + ft = "yaml.ansible", desc = "Ansible Run Playbook/Role", silent = true, }, From cfc0ae0184a96d1e69b0742c3db3075f7e0ecf2c Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sun, 12 Oct 2025 12:27:10 +0000 Subject: [PATCH 052/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index c64778ca..3c713e16 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 11 +*LazyVim.txt* For Neovim Last change: 2025 October 12 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 02b8dd3f4bd55f06be133471fad027f3131238f4 Mon Sep 17 00:00:00 2001 From: Vu Nhat Chuong Date: Tue, 14 Oct 2025 18:17:22 +0700 Subject: [PATCH 053/171] feat(gleam): add conform (#5640) ## Description Add conform.nvim formatter for gleam lanuage. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/gleam.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/gleam.lua b/lua/lazyvim/plugins/extras/lang/gleam.lua index 956d2882..a41a6054 100644 --- a/lua/lazyvim/plugins/extras/lang/gleam.lua +++ b/lua/lazyvim/plugins/extras/lang/gleam.lua @@ -17,4 +17,13 @@ return { }, }, }, + { + "conform.nvim", + optional = true, + opts = { + formatters_by_ft = { + gleam = { "gleam" }, + }, + }, + }, } From f8e8ea4b5e7f6d8db55f5c8dc223e0836beeeee6 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:18:24 +0000 Subject: [PATCH 054/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 3c713e16..0b80e343 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 12 +*LazyVim.txt* For Neovim Last change: 2025 October 14 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 2a1f3c370145c3465c0142deade3e3b2660ce829 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 15 Oct 2025 08:36:32 +0200 Subject: [PATCH 055/171] feat(treesitter): on windows, use `gcc` if available and `cl.exe` is not available for building parsers --- lua/lazyvim/plugins/treesitter.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 5106da4e..6256904d 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -59,6 +59,16 @@ return { config = function(_, opts) local TS = require("nvim-treesitter") + -- On Windows, use `gcc` if `cl` is not available, and `gcc` is. + if + not vim.env.CC + and vim.fn.has("win32") == 1 + and vim.fn.executable("cl") == 0 + and vim.fn.executable("gcc") == 1 + then + vim.env.CC = "gcc" + end + setmetatable(require("nvim-treesitter.install"), { __newindex = function(_, k) if k == "compilers" then From 413b9d5fa91c5bd5088b28c6d1764caa88542cb1 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 15 Oct 2025 08:37:11 +0200 Subject: [PATCH 056/171] feat(treesitter): better health checks for treesitter requirements --- lua/lazyvim/health.lua | 15 +++++++ lua/lazyvim/plugins/treesitter.lua | 4 +- lua/lazyvim/util/treesitter.lua | 71 +++++++++++++++++++++++------- 3 files changed, 71 insertions(+), 19 deletions(-) diff --git a/lua/lazyvim/health.lua b/lua/lazyvim/health.lua index d1632e75..7af6ad94 100644 --- a/lua/lazyvim/health.lua +++ b/lua/lazyvim/health.lua @@ -4,6 +4,7 @@ local start = vim.health.start or vim.health.report_start local ok = vim.health.ok or vim.health.report_ok local warn = vim.health.warn or vim.health.report_warn local error = vim.health.error or vim.health.report_error +local info = vim.health.info or vim.health.report_info function M.check() start("LazyVim") @@ -33,6 +34,20 @@ function M.check() warn(("`%s` is not installed"):format(name)) end end + + start("LazyVim nvim-treesitter") + local tsok, health = LazyVim.treesitter.check() + local keys = vim.tbl_keys(health) ---@type string[] + table.sort(keys) + for _, k in pairs(keys) do + (health[k] and ok or error)(("`%s` is %s"):format(k, health[k] and "installed" or "not installed")) + end + if not tsok then + info( + "See the requirements at [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter/tree/main?tab=readme-ov-file#requirements)" + ) + info("Run `:checkhealth nvim-treesitter` for more information.") + end end return M diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 6256904d..5ab47721 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -13,7 +13,7 @@ return { LazyVim.error("Please restart Neovim and run `:TSUpdate` to use the `nvim-treesitter` **main** branch.") return end - LazyVim.treesitter.ensure_treesitter_cli(function() + LazyVim.treesitter.build(function() TS.update(nil, { summary = true }) end) end, @@ -100,7 +100,7 @@ return { return not LazyVim.treesitter.have(lang) end, opts.ensure_installed or {}) if #install > 0 then - LazyVim.treesitter.ensure_treesitter_cli(function() + LazyVim.treesitter.build(function() TS.install(install, { summary = true }):await(function() LazyVim.treesitter.get_installed(true) -- refresh the installed langs end) diff --git a/lua/lazyvim/util/treesitter.lua b/lua/lazyvim/util/treesitter.lua index b1d647e8..d5c845fd 100644 --- a/lua/lazyvim/util/treesitter.lua +++ b/lua/lazyvim/util/treesitter.lua @@ -51,31 +51,68 @@ function M.indentexpr() return M.have(nil, "indents") and require("nvim-treesitter").indentexpr() or -1 end ----@param cb fun() -function M.ensure_treesitter_cli(cb) - if vim.fn.executable("tree-sitter") == 1 then - return cb() +---@return boolean ok, lazyvim.util.treesitter.Health health +function M.check() + local is_win = vim.fn.has("win32") == 1 + ---@param tool string + ---@param win boolean? + local function have(tool, win) + return (win == nil or is_win == win) and vim.fn.executable(tool) == 1 end - ---@param msg? string - local function fail(msg) - return LazyVim.error({ - "**treesitter-nvim** `main` requires the `tree-sitter` CLI executable to be installed.", - "Please install it manually from https://github.com/tree-sitter/tree-sitter/tree/master/crates/cli or", - "use your system package manager.", - "Run `:checkhealth nvim-treesitter` for more information.", - msg, - }) + ---@class lazyvim.util.treesitter.Health: table + local ret = { + ["tree-sitter (CLI)"] = have("tree-sitter"), + ["C compiler"] = vim.env.CC or have("cc", false) or have("cl", true), + tar = have("tar"), + curl = have("curl"), + node = have("node"), + } + local ok = true + for _, v in pairs(ret) do + ok = ok and v + end + return ok, ret +end + +---@param cb fun() +function M.build(cb) + M.ensure_treesitter_cli(function(_, err) + local ok, health = M.check() + if ok then + return cb() + else + local lines = { "Unmet requirements for **nvim-treesitter** `main`:" } + local keys = vim.tbl_keys(health) ---@type string[] + table.sort(keys) + for _, k in pairs(keys) do + lines[#lines + 1] = ("- %s `%s`"):format(health[k] and "✅" or "❌", k) + end + vim.list_extend(lines, { + "", + "See the requirements at [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter/tree/main?tab=readme-ov-file#requirements)", + "Run `:checkhealth nvim-treesitter` for more information.", + }) + vim.list_extend(lines, err and { "", err } or {}) + LazyVim.error(lines, { title = "LazyVim Treesitter" }) + end + end) +end + +---@param cb fun(ok:boolean, err?:string) +function M.ensure_treesitter_cli(cb) + if vim.fn.executable("tree-sitter") == 1 then + return cb(true) end -- try installing with mason if not pcall(require, "mason") then - return fail("`mason.nvim` is disabled in your config, so we cannot install it automatically.") + return cb(false, "`mason.nvim` is disabled in your config, so we cannot install it automatically.") end -- check again since we might have installed it already if vim.fn.executable("tree-sitter") == 1 then - return cb() + return cb(true) end local mr = require("mason-registry") @@ -88,9 +125,9 @@ function M.ensure_treesitter_cli(cb) vim.schedule_wrap(function(success) if success then LazyVim.info("Installed `tree-sitter-cli` with `mason.nvim`.") - cb() + cb(true) else - fail("Failed to install `tree-sitter-cli` with `mason.nvim`.") + cb(false, "Failed to install `tree-sitter-cli` with `mason.nvim`.") end end) ) From 37032dabd657ae567011e7ab4f881ecbf476eb76 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 15 Oct 2025 08:41:55 +0200 Subject: [PATCH 057/171] feat(treesitter): add installation instructions to get a C compiler on windows --- lua/lazyvim/health.lua | 3 +++ lua/lazyvim/util/treesitter.lua | 3 +++ 2 files changed, 6 insertions(+) diff --git a/lua/lazyvim/health.lua b/lua/lazyvim/health.lua index 7af6ad94..2542c150 100644 --- a/lua/lazyvim/health.lua +++ b/lua/lazyvim/health.lua @@ -47,6 +47,9 @@ function M.check() "See the requirements at [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter/tree/main?tab=readme-ov-file#requirements)" ) info("Run `:checkhealth nvim-treesitter` for more information.") + if vim.fn.has("win32") == 1 and not health["C compiler"] then + info("Install a C compiler with `winget install --id=BrechtSanders.WinLibs.POSIX.UCRT -e`") + end end end diff --git a/lua/lazyvim/util/treesitter.lua b/lua/lazyvim/util/treesitter.lua index d5c845fd..23795005 100644 --- a/lua/lazyvim/util/treesitter.lua +++ b/lua/lazyvim/util/treesitter.lua @@ -93,6 +93,9 @@ function M.build(cb) "See the requirements at [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter/tree/main?tab=readme-ov-file#requirements)", "Run `:checkhealth nvim-treesitter` for more information.", }) + if vim.fn.has("win32") == 1 and not health["C compiler"] then + lines[#lines + 1] = "Install a C compiler with `winget install --id=BrechtSanders.WinLibs.POSIX.UCRT -e`" + end vim.list_extend(lines, err and { "", err } or {}) LazyVim.error(lines, { title = "LazyVim Treesitter" }) end From 144fe24be15007de0db036ba145514011d4d55d6 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Wed, 15 Oct 2025 06:43:19 +0000 Subject: [PATCH 058/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 0b80e343..3da695fb 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 14 +*LazyVim.txt* For Neovim Last change: 2025 October 15 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 5effc77185f94f557809375b5650d427e7171c32 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 15 Oct 2025 19:43:42 +0200 Subject: [PATCH 059/171] fix(treesitter): better check on windows if microsoft build tools is installed --- lua/lazyvim/plugins/treesitter.lua | 10 ---------- lua/lazyvim/util/treesitter.lua | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 5ab47721..25223725 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -59,16 +59,6 @@ return { config = function(_, opts) local TS = require("nvim-treesitter") - -- On Windows, use `gcc` if `cl` is not available, and `gcc` is. - if - not vim.env.CC - and vim.fn.has("win32") == 1 - and vim.fn.executable("cl") == 0 - and vim.fn.executable("gcc") == 1 - then - vim.env.CC = "gcc" - end - setmetatable(require("nvim-treesitter.install"), { __newindex = function(_, k) if k == "compilers" then diff --git a/lua/lazyvim/util/treesitter.lua b/lua/lazyvim/util/treesitter.lua index 23795005..e8688a6f 100644 --- a/lua/lazyvim/util/treesitter.lua +++ b/lua/lazyvim/util/treesitter.lua @@ -51,6 +51,13 @@ function M.indentexpr() return M.have(nil, "indents") and require("nvim-treesitter").indentexpr() or -1 end +---@return string? +local function win_find_cl() + local path = "C:/Program Files (x86)/Microsoft Visual Studio" + local pattern = "*/*/VC/Tools/MSVC/*/bin/Hostx64/x64/cl.exe" + return vim.fn.globpath(path, pattern, true, true)[1] +end + ---@return boolean ok, lazyvim.util.treesitter.Health health function M.check() local is_win = vim.fn.has("win32") == 1 @@ -60,10 +67,17 @@ function M.check() return (win == nil or is_win == win) and vim.fn.executable(tool) == 1 end + local have_cc = vim.env.CC ~= nil or have("cc", false) or have("cl", true) or (is_win and win_find_cl() ~= nil) + + if not have_cc and is_win and vim.fn.executable("gcc") == 1 then + vim.env.CC = "gcc" + have_cc = true + end + ---@class lazyvim.util.treesitter.Health: table local ret = { ["tree-sitter (CLI)"] = have("tree-sitter"), - ["C compiler"] = vim.env.CC or have("cc", false) or have("cl", true), + ["C compiler"] = have_cc, tar = have("tar"), curl = have("curl"), node = have("node"), From 26c43a9b931f3ab04a8c449671250182ac9ddca6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 17 Oct 2025 19:18:28 +0200 Subject: [PATCH 060/171] feat(sidekick): use `` in any snacks picker to send the (selected) results to an AI tool --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index 71e76eb4..d0451fce 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -106,4 +106,28 @@ return { }, }, }, + + { + "folke/snacks.nvim", + optional = true, + opts = { + picker = { + actions = { + sidekick_send = function(...) + return require("sidekick.cli.snacks").send(...) + end, + }, + win = { + input = { + keys = { + [""] = { + "sidekick_send", + mode = { "n", "i" }, + }, + }, + }, + }, + }, + }, + }, } From b90e9cb73a2d47981d50322f2f98d5b3bb95fbce Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Fri, 17 Oct 2025 17:19:47 +0000 Subject: [PATCH 061/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 3da695fb..464d854a 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 15 +*LazyVim.txt* For Neovim Last change: 2025 October 17 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 048056e9523268d6086d537e578e84e27175051d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 17 Oct 2025 19:21:12 +0200 Subject: [PATCH 062/171] chore(main): release 15.8.0 (#6576) :robot: I have created a release *beep* *boop* --- ## [15.8.0](https://github.com/LazyVim/LazyVim/compare/v15.7.1...v15.8.0) (2025-10-17) ### Features * **gleam:** add conform ([#5640](https://github.com/LazyVim/LazyVim/issues/5640)) ([02b8dd3](https://github.com/LazyVim/LazyVim/commit/02b8dd3f4bd55f06be133471fad027f3131238f4)) * **sidekick:** added `ad` to close/detach a terminal/session ([f8b062b](https://github.com/LazyVim/LazyVim/commit/f8b062b130177f07d3c1c13b642402d42e980df5)) * **sidekick:** changed default keymaps for sidekick. Please check updated docs at sidekick.nvim ([a3e52dd](https://github.com/LazyVim/LazyVim/commit/a3e52dd346ea35db5521b66e46dca95d32f00cb4)) * **sidekick:** use `` in any snacks picker to send the (selected) results to an AI tool ([26c43a9](https://github.com/LazyVim/LazyVim/commit/26c43a9b931f3ab04a8c449671250182ac9ddca6)) * **treesitter:** add installation instructions to get a C compiler on windows ([37032da](https://github.com/LazyVim/LazyVim/commit/37032dabd657ae567011e7ab4f881ecbf476eb76)) * **treesitter:** added support for `disable` langs to indent/highlight/folds. Closes [#6608](https://github.com/LazyVim/LazyVim/issues/6608) ([0e8069c](https://github.com/LazyVim/LazyVim/commit/0e8069c78ee92279055236388df8c2019476767a)) * **treesitter:** better health checks for treesitter requirements ([413b9d5](https://github.com/LazyVim/LazyVim/commit/413b9d5fa91c5bd5088b28c6d1764caa88542cb1)) * **treesitter:** on windows, use `gcc` if available and `cl.exe` is not available for building parsers ([2a1f3c3](https://github.com/LazyVim/LazyVim/commit/2a1f3c370145c3465c0142deade3e3b2660ce829)) ### Bug Fixes * **blink:** disable blink left/right key in the cmdline ([94c4603](https://github.com/LazyVim/LazyVim/commit/94c4603b6838fbe75343b6e3342b4343744157dc)) * **keymaps:** update deprecated diagnostic keymap to latest api change ([#6574](https://github.com/LazyVim/LazyVim/issues/6574)) ([b9d38f6](https://github.com/LazyVim/LazyVim/commit/b9d38f692015fecaa72d55282b74a3d601e4c9fa)) * **sidekick:** only add copilot to lspconfig when `opts.nes.enabled ~= false` ([049db39](https://github.com/LazyVim/LazyVim/commit/049db39de0f272e8368a4b3881ac5a13f0d04b09)) * **terminal:** term toggle keymaps now only work for snacks terminals. Closes [#6573](https://github.com/LazyVim/LazyVim/issues/6573) ([4efd0e2](https://github.com/LazyVim/LazyVim/commit/4efd0e2bea2a387d6fcdea8cf36a62049e8bafed)) * **treesiter:** check that `disable` options are tables ([e8c5fa7](https://github.com/LazyVim/LazyVim/commit/e8c5fa7eae06539c883699507caeadb46d74f401)) * **treesitter:** better check on windows if microsoft build tools is installed ([5effc77](https://github.com/LazyVim/LazyVim/commit/5effc77185f94f557809375b5650d427e7171c32)) * **xtras:** load `copilot-native` before `blink` ([#6588](https://github.com/LazyVim/LazyVim/issues/6588)) ([aa2c436](https://github.com/LazyVim/LazyVim/commit/aa2c43633adee0f80faf8d743d6476ea4f8ba5ca)) ### Performance Improvements * **ansible:** load on ft=yaml and run should only be mapped on ft=yaml.ansible ([ebdcf1b](https://github.com/LazyVim/LazyVim/commit/ebdcf1ba7ef18daa8c897c8922a5ef770e8bcffb)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 30 +++++++++++++++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 6cc4959a..57dbcf9a 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.7.1" + ".": "15.8.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c7935c1..ad7d465c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,35 @@ # Changelog +## [15.8.0](https://github.com/LazyVim/LazyVim/compare/v15.7.1...v15.8.0) (2025-10-17) + + +### Features + +* **gleam:** add conform ([#5640](https://github.com/LazyVim/LazyVim/issues/5640)) ([02b8dd3](https://github.com/LazyVim/LazyVim/commit/02b8dd3f4bd55f06be133471fad027f3131238f4)) +* **sidekick:** added `ad` to close/detach a terminal/session ([f8b062b](https://github.com/LazyVim/LazyVim/commit/f8b062b130177f07d3c1c13b642402d42e980df5)) +* **sidekick:** changed default keymaps for sidekick. Please check updated docs at sidekick.nvim ([a3e52dd](https://github.com/LazyVim/LazyVim/commit/a3e52dd346ea35db5521b66e46dca95d32f00cb4)) +* **sidekick:** use `` in any snacks picker to send the (selected) results to an AI tool ([26c43a9](https://github.com/LazyVim/LazyVim/commit/26c43a9b931f3ab04a8c449671250182ac9ddca6)) +* **treesitter:** add installation instructions to get a C compiler on windows ([37032da](https://github.com/LazyVim/LazyVim/commit/37032dabd657ae567011e7ab4f881ecbf476eb76)) +* **treesitter:** added support for `disable` langs to indent/highlight/folds. Closes [#6608](https://github.com/LazyVim/LazyVim/issues/6608) ([0e8069c](https://github.com/LazyVim/LazyVim/commit/0e8069c78ee92279055236388df8c2019476767a)) +* **treesitter:** better health checks for treesitter requirements ([413b9d5](https://github.com/LazyVim/LazyVim/commit/413b9d5fa91c5bd5088b28c6d1764caa88542cb1)) +* **treesitter:** on windows, use `gcc` if available and `cl.exe` is not available for building parsers ([2a1f3c3](https://github.com/LazyVim/LazyVim/commit/2a1f3c370145c3465c0142deade3e3b2660ce829)) + + +### Bug Fixes + +* **blink:** disable blink left/right key in the cmdline ([94c4603](https://github.com/LazyVim/LazyVim/commit/94c4603b6838fbe75343b6e3342b4343744157dc)) +* **keymaps:** update deprecated diagnostic keymap to latest api change ([#6574](https://github.com/LazyVim/LazyVim/issues/6574)) ([b9d38f6](https://github.com/LazyVim/LazyVim/commit/b9d38f692015fecaa72d55282b74a3d601e4c9fa)) +* **sidekick:** only add copilot to lspconfig when `opts.nes.enabled ~= false` ([049db39](https://github.com/LazyVim/LazyVim/commit/049db39de0f272e8368a4b3881ac5a13f0d04b09)) +* **terminal:** term toggle keymaps now only work for snacks terminals. Closes [#6573](https://github.com/LazyVim/LazyVim/issues/6573) ([4efd0e2](https://github.com/LazyVim/LazyVim/commit/4efd0e2bea2a387d6fcdea8cf36a62049e8bafed)) +* **treesiter:** check that `disable` options are tables ([e8c5fa7](https://github.com/LazyVim/LazyVim/commit/e8c5fa7eae06539c883699507caeadb46d74f401)) +* **treesitter:** better check on windows if microsoft build tools is installed ([5effc77](https://github.com/LazyVim/LazyVim/commit/5effc77185f94f557809375b5650d427e7171c32)) +* **xtras:** load `copilot-native` before `blink` ([#6588](https://github.com/LazyVim/LazyVim/issues/6588)) ([aa2c436](https://github.com/LazyVim/LazyVim/commit/aa2c43633adee0f80faf8d743d6476ea4f8ba5ca)) + + +### Performance Improvements + +* **ansible:** load on ft=yaml and run should only be mapped on ft=yaml.ansible ([ebdcf1b](https://github.com/LazyVim/LazyVim/commit/ebdcf1ba7ef18daa8c897c8922a5ef770e8bcffb)) + ## [15.7.1](https://github.com/LazyVim/LazyVim/compare/v15.7.0...v15.7.1) (2025-10-02) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 233328d5..8975fd79 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.7.1" -- x-release-please-version +M.version = "15.8.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 62ce8a23d89fa766956447a3df01d9f3448e9a66 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 18 Oct 2025 06:38:43 +0200 Subject: [PATCH 063/171] fix(treesitter): reload lazyvim.tresitter.util to prevent issues with stale modules when upgrading --- lua/lazyvim/plugins/treesitter.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 25223725..20c383bd 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -13,6 +13,8 @@ return { LazyVim.error("Please restart Neovim and run `:TSUpdate` to use the `nvim-treesitter` **main** branch.") return end + -- make sure we're using the latest treesitter util + package.loaded["lazyvim.util.treesitter"] = nil LazyVim.treesitter.build(function() TS.update(nil, { summary = true }) end) From 23bdbc91ebd8737dae89d4a1a69c89f9195943a3 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sat, 18 Oct 2025 04:39:45 +0000 Subject: [PATCH 064/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 464d854a..dd6610d3 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 17 +*LazyVim.txt* For Neovim Last change: 2025 October 18 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 561da43c435f330674c9b18bb335be7e1126d928 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 18 Oct 2025 08:34:17 +0200 Subject: [PATCH 065/171] chore(main): release 15.8.1 (#6641) :robot: I have created a release *beep* *boop* --- ## [15.8.1](https://github.com/LazyVim/LazyVim/compare/v15.8.0...v15.8.1) (2025-10-18) ### Bug Fixes * **treesitter:** reload lazyvim.tresitter.util to prevent issues with stale modules when upgrading ([62ce8a2](https://github.com/LazyVim/LazyVim/commit/62ce8a23d89fa766956447a3df01d9f3448e9a66)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 57dbcf9a..cbea53b1 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.8.0" + ".": "15.8.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index ad7d465c..033109a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [15.8.1](https://github.com/LazyVim/LazyVim/compare/v15.8.0...v15.8.1) (2025-10-18) + + +### Bug Fixes + +* **treesitter:** reload lazyvim.tresitter.util to prevent issues with stale modules when upgrading ([62ce8a2](https://github.com/LazyVim/LazyVim/commit/62ce8a23d89fa766956447a3df01d9f3448e9a66)) + ## [15.8.0](https://github.com/LazyVim/LazyVim/compare/v15.7.1...v15.8.0) (2025-10-17) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 8975fd79..ab41d775 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.8.0" -- x-release-please-version +M.version = "15.8.1" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 92a77287321236f52ff38648a38cf314ab223137 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 18 Oct 2025 15:26:38 +0200 Subject: [PATCH 066/171] fix(treesitter): attach textobject keymaps to existing buffers on load. Closes #6642. Closes #6639 --- lua/lazyvim/plugins/treesitter.lua | 53 ++++++++++++++++-------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 20c383bd..2a4fa567 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -19,7 +19,6 @@ return { TS.update(nil, { summary = true }) end) end, - lazy = vim.fn.argc(-1) == 0, -- load treesitter early when opening a file from the cmdline event = { "LazyFile", "VeryLazy" }, cmd = { "TSUpdate", "TSInstall", "TSLog", "TSUninstall" }, opts_extend = { "ensure_installed" }, @@ -162,34 +161,40 @@ return { end TS.setup(opts) + local function attach(buf) + local ft = vim.bo[buf].filetype + if not (vim.tbl_get(opts, "move", "enable") and LazyVim.treesitter.have(ft, "textobjects")) then + return + end + ---@type table> + local moves = vim.tbl_get(opts, "move", "keys") or {} + + for method, keymaps in pairs(moves) do + for key, query in pairs(keymaps) do + local desc = query:gsub("@", ""):gsub("%..*", "") + desc = desc:sub(1, 1):upper() .. desc:sub(2) + desc = (key:sub(1, 1) == "[" and "Prev " or "Next ") .. desc + desc = desc .. (key:sub(2, 2) == key:sub(2, 2):upper() and " End" or " Start") + if not (vim.wo.diff and key:find("[cC]")) then + vim.keymap.set({ "n", "x", "o" }, key, function() + require("nvim-treesitter-textobjects.move")[method](query, "textobjects") + end, { + buffer = buf, + desc = desc, + silent = true, + }) + end + end + end + end + vim.api.nvim_create_autocmd("FileType", { group = vim.api.nvim_create_augroup("lazyvim_treesitter_textobjects", { clear = true }), callback = function(ev) - if not (vim.tbl_get(opts, "move", "enable") and LazyVim.treesitter.have(ev.match, "textobjects")) then - return - end - ---@type table> - local moves = vim.tbl_get(opts, "move", "keys") or {} - - for method, keymaps in pairs(moves) do - for key, query in pairs(keymaps) do - local desc = query:gsub("@", ""):gsub("%..*", "") - desc = desc:sub(1, 1):upper() .. desc:sub(2) - desc = (key:sub(1, 1) == "[" and "Prev " or "Next ") .. desc - desc = desc .. (key:sub(2, 2) == key:sub(2, 2):upper() and " End" or " Start") - if not (vim.wo.diff and key:find("[cC]")) then - vim.keymap.set({ "n", "x", "o" }, key, function() - require("nvim-treesitter-textobjects.move")[method](query, "textobjects") - end, { - buffer = ev.buf, - desc = desc, - silent = true, - }) - end - end - end + attach(ev.buf) end, }) + vim.tbl_map(attach, vim.api.nvim_list_bufs()) end, }, From bd233579a66018f526b6b0970e33afde4cde399e Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Sun, 19 Oct 2025 08:45:33 +0300 Subject: [PATCH 067/171] fix(mini.animate): schedule the toggle mapping to correctly take effect (#6483) ## Description `mini.animate`'s toggle mapping didn't take effect, presumably because `keymaps.lua` is the last one to execute on `VeryLazy`. Schedule it to correctly overwrite the default from `keymaps.lua`. I would also be interested if you don't mind to explain to me how can I find out the order of the events execution if there are multiple executions on the same event (i.e on `VeryLazy` what is the order of the execution? Is it arbitrary?) ## Related Issue(s) None. Saw a discussion on `snacks.nvim` and OP wanted to change the mapping and when I tested with `mini.animate` Extra I noticed that its mapping wasn't overriding the default one from `keymaps.lua`. ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- .../plugins/extras/ui/mini-animate.lua | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ui/mini-animate.lua b/lua/lazyvim/plugins/extras/ui/mini-animate.lua index b71c19a9..11a13cc1 100644 --- a/lua/lazyvim/plugins/extras/ui/mini-animate.lua +++ b/lua/lazyvim/plugins/extras/ui/mini-animate.lua @@ -32,15 +32,19 @@ return { end, }) - Snacks.toggle({ - name = "Mini Animate", - get = function() - return not vim.g.minianimate_disable - end, - set = function(state) - vim.g.minianimate_disable = not state - end, - }):map("ua") + -- schedule setting the mapping to override the default mapping from `keymaps.lua` + -- seems `keymaps.lua` is the last event to execute on `VeryLazy` and it overwrites it + vim.schedule(function() + Snacks.toggle({ + name = "Mini Animate", + get = function() + return not vim.g.minianimate_disable + end, + set = function(state) + vim.g.minianimate_disable = not state + end, + }):map("ua") + end) local animate = require("mini.animate") return vim.tbl_deep_extend("force", opts, { From 3d824e1162f7af16df091f833537a67fb659d59b Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sun, 19 Oct 2025 05:46:27 +0000 Subject: [PATCH 068/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index dd6610d3..f8a92ea3 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 18 +*LazyVim.txt* For Neovim Last change: 2025 October 19 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 1da659db4a3fbcd6d171f3b38d0092ced0887e61 Mon Sep 17 00:00:00 2001 From: "Rico Sta. Cruz" Date: Sun, 19 Oct 2025 21:16:55 +1100 Subject: [PATCH 069/171] feat(extras.rest): add keymap for changing environment (#5678) ## Description Context: - kulala.nvim is an HTTP client, which is used in extras.rest - The kulala [default keymaps](https://neovim.getkulala.net/docs/getting-started/default-keymaps) include a keymap to "set environment" (eg to change from production to staging) - This keymap is missing in extras/rest.lua In this PR: This adds a keymap for `Re` in extras.rest.lua. ## Screenshots This adds `e` here: image ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/util/rest.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazyvim/plugins/extras/util/rest.lua b/lua/lazyvim/plugins/extras/util/rest.lua index 9f2e6d67..6ae8424b 100644 --- a/lua/lazyvim/plugins/extras/util/rest.lua +++ b/lua/lazyvim/plugins/extras/util/rest.lua @@ -12,6 +12,7 @@ return { { "Rb", "lua require('kulala').scratchpad()", desc = "Open scratchpad", ft = "http" }, { "Rc", "lua require('kulala').copy()", desc = "Copy as cURL", ft = "http" }, { "RC", "lua require('kulala').from_curl()", desc = "Paste from curl", ft = "http" }, + { "Re", "lua require('kulala').set_selected_env()", desc = "Set environment", ft = "http" }, { "Rg", "lua require('kulala').download_graphql_schema()", From 1aa1b59a7ec7cab61fa7b096db53df15ec5008e7 Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Sun, 19 Oct 2025 13:19:30 +0300 Subject: [PATCH 070/171] fix(chezmoi): add `hidden=false` to fzf picker (#6095) ## Description Since #5275, the fzf picker has changed to use the `files` picker instead of `fzf_exec` like before. That means it also inherits the options of `files` picker, where `hidden = true`. Just the command had been changed to use the `chezmoi` command, but it doesn't make sense to have `hidden = true`, since it just appends `--hidden` to the command which was supposed to be `fzf`, but now with `chezmoi` it's not recognized. Add `hidden = false` to the `files` picker when the command is chezmoi. ## Related Issue(s) Fixes #6094 ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/util/chezmoi.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/util/chezmoi.lua b/lua/lazyvim/plugins/extras/util/chezmoi.lua index 2c1b2f31..ff4501db 100644 --- a/lua/lazyvim/plugins/extras/util/chezmoi.lua +++ b/lua/lazyvim/plugins/extras/util/chezmoi.lua @@ -8,7 +8,7 @@ local pick_chezmoi = function() fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = os.getenv("HOME") }) end, } - fzf_lua.files({ cmd = "chezmoi managed --include=files,symlinks", actions = actions }) + fzf_lua.files({ cmd = "chezmoi managed --include=files,symlinks", actions = actions, hidden = false }) elseif LazyVim.pick.picker.name == "snacks" then local results = require("chezmoi.commands").list({ args = { From dea0ae44bef99b3362056541ca8d27438e12cdf7 Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Sun, 19 Oct 2025 18:20:19 +0800 Subject: [PATCH 071/171] style(lean): fix typo (#6600) ## Description Fix typo in comment for lean extra. ## Related Issue(s) ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/lean.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/lean.lua b/lua/lazyvim/plugins/extras/lang/lean.lua index 58488372..76db7ecb 100644 --- a/lua/lazyvim/plugins/extras/lang/lean.lua +++ b/lua/lazyvim/plugins/extras/lang/lean.lua @@ -108,7 +108,7 @@ return { priority = 10, }, - -- Redirect Lean's stderr messages somehwere (to a buffer by default) + -- Redirect Lean's stderr messages somewhere (to a buffer by default) stderr = { enable = true, -- height of the window From 98b97d7b00fd34a1c2cd9195647408f953e7a87b Mon Sep 17 00:00:00 2001 From: Anant Thazhemadam <47104651+thazhemadam@users.noreply.github.com> Date: Sun, 19 Oct 2025 15:50:34 +0530 Subject: [PATCH 072/171] docs(ui): fix typo - `s/inent/indent/` (#6584) ## Description This fixes a typo I noticed in the docs. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/ui/mini-indentscope.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/ui/mini-indentscope.lua b/lua/lazyvim/plugins/extras/ui/mini-indentscope.lua index ea266b24..19832196 100644 --- a/lua/lazyvim/plugins/extras/ui/mini-indentscope.lua +++ b/lua/lazyvim/plugins/extras/ui/mini-indentscope.lua @@ -44,7 +44,7 @@ return { end, }, - -- disable inent-blankline scope when mini-indentscope is enabled + -- disable indent-blankline scope when mini-indentscope is enabled { "lukas-reineke/indent-blankline.nvim", optional = true, From f0b32b5955889d4d2d3636a52d2ddf5d113646df Mon Sep 17 00:00:00 2001 From: Jackie Li Date: Sun, 19 Oct 2025 11:21:17 +0100 Subject: [PATCH 073/171] fix(ui): ignore sidekick_terminal in mini-indentscope (#6619) --- lua/lazyvim/plugins/extras/ui/mini-indentscope.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazyvim/plugins/extras/ui/mini-indentscope.lua b/lua/lazyvim/plugins/extras/ui/mini-indentscope.lua index 19832196..e043432c 100644 --- a/lua/lazyvim/plugins/extras/ui/mini-indentscope.lua +++ b/lua/lazyvim/plugins/extras/ui/mini-indentscope.lua @@ -23,6 +23,7 @@ return { "mason", "neo-tree", "notify", + "sidekick_terminal", "snacks_dashboard", "snacks_notif", "snacks_terminal", From ae74622e6666ea4c3e6c58c4ef2d3f313d8e8f20 Mon Sep 17 00:00:00 2001 From: Frankie Robertson Date: Sun, 19 Oct 2025 13:22:33 +0300 Subject: [PATCH 074/171] fix(latex): ensure tex extra installs latex tree-sitter parser (#6357) ## Description Currently we don't ensure the latex treesitter is installed for latex. Although it is not used for highlighting, it is used by default plugins like flash, so this adds it to the list ## Related Issue(s) https://github.com/LazyVim/LazyVim/pull/1156 Co-authored-by: Frankie Robertson --- lua/lazyvim/plugins/extras/lang/tex.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/tex.lua b/lua/lazyvim/plugins/extras/lang/tex.lua index 9ced69e1..7af026c2 100644 --- a/lua/lazyvim/plugins/extras/lang/tex.lua +++ b/lua/lazyvim/plugins/extras/lang/tex.lua @@ -12,7 +12,7 @@ return { opts = function(_, opts) opts.highlight = opts.highlight or {} if type(opts.ensure_installed) == "table" then - vim.list_extend(opts.ensure_installed, { "bibtex" }) + vim.list_extend(opts.ensure_installed, { "bibtex", "latex" }) end if type(opts.highlight.disable) == "table" then vim.list_extend(opts.highlight.disable, { "latex" }) From 66e927fd9d0b0ff2886b9fe1465d9396461a2665 Mon Sep 17 00:00:00 2001 From: Jarryd Tilbrook Date: Sun, 19 Oct 2025 18:23:23 +0800 Subject: [PATCH 075/171] feat(neotest): extra keymap to attach to a test (#6198) ## Description An extra keymap useful when running tests to attach to the test. ## Related Issue(s) N/A ## Screenshots N/A ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/test/core.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazyvim/plugins/extras/test/core.lua b/lua/lazyvim/plugins/extras/test/core.lua index 48f886ad..99d4969e 100644 --- a/lua/lazyvim/plugins/extras/test/core.lua +++ b/lua/lazyvim/plugins/extras/test/core.lua @@ -106,6 +106,7 @@ return { -- stylua: ignore keys = { {"t", "", desc = "+test"}, + { "ta", function() require("neotest").run.attach() end, desc = "Attach to Test (Neotest)" }, { "tt", function() require("neotest").run.run(vim.fn.expand("%")) end, desc = "Run File (Neotest)" }, { "tT", function() require("neotest").run.run(vim.uv.cwd()) end, desc = "Run All Test Files (Neotest)" }, { "tr", function() require("neotest").run.run() end, desc = "Run Nearest (Neotest)" }, From 7bf8c22c56283fa6d5d35246dcd0f49d37a5c709 Mon Sep 17 00:00:00 2001 From: xusd320 Date: Sun, 19 Oct 2025 18:26:20 +0800 Subject: [PATCH 076/171] fix(lang.rust): rust-analyzer hanging on root scanned (#6178) ## Description I encounter the RA hanging problem when coding on next.js project, and found the solution to fix this at here . https://github.com/rust-lang/rust-analyzer/issues/12613#issuecomment-2096386344 --- lua/lazyvim/plugins/extras/lang/rust.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/rust.lua b/lua/lazyvim/plugins/extras/lang/rust.lua index b66dde9b..048eadab 100644 --- a/lua/lazyvim/plugins/extras/lang/rust.lua +++ b/lua/lazyvim/plugins/extras/lang/rust.lua @@ -103,6 +103,8 @@ return { "venv", ".venv", }, + -- Avoid Roots Scanned hanging, see https://github.com/rust-lang/rust-analyzer/issues/12613#issuecomment-2096386344 + watcher = "client", }, }, }, From d14b7733e75c2cd2e6df5a21e8664d85aa420773 Mon Sep 17 00:00:00 2001 From: Lorenzo Bettini Date: Sun, 19 Oct 2025 12:26:42 +0200 Subject: [PATCH 077/171] docs(mini-snippets): fix typo in the documentation (#5953) typo `snippits` ## Description Just a fix for the typo `snippits` - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/coding/mini-snippets.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/coding/mini-snippets.lua b/lua/lazyvim/plugins/extras/coding/mini-snippets.lua index 714d867d..0262c388 100644 --- a/lua/lazyvim/plugins/extras/coding/mini-snippets.lua +++ b/lua/lazyvim/plugins/extras/coding/mini-snippets.lua @@ -1,6 +1,6 @@ if lazyvim_docs then -- Set to `false` to prevent "non-lsp snippets"" from appearing inside completion windows - -- Motivation: Less clutter in completion windows and a more direct usage of snippits + -- Motivation: Less clutter in completion windows and a more direct usage of snippets vim.g.lazyvim_mini_snippets_in_completion = true -- NOTE: Please also read: From b36b8589b62f55b181367afe954606c73233c0a1 Mon Sep 17 00:00:00 2001 From: Roland Kaminski Date: Sun, 19 Oct 2025 12:27:42 +0200 Subject: [PATCH 078/171] fix(extras): adjust switch source/header shortcut (#6567) The command to switch header and source is now called `:LspClangdSwitchSourceHeader` and no longer `:ClangdSwitchSourceHeader`. ## Description This is just a small fix due to a command that has been renamed. I did not find the documentation but the relevant line in the code where the command is defined is here: - https://github.com/neovim/nvim-lspconfig/blob/e688b486fe9291f151eae7e5c0b5a5c4ef980847/lsp/clangd.lua#L92 ## Related Issue(s) I did not find any related issues. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/clangd.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/clangd.lua b/lua/lazyvim/plugins/extras/lang/clangd.lua index 0ba58aca..cac83194 100644 --- a/lua/lazyvim/plugins/extras/lang/clangd.lua +++ b/lua/lazyvim/plugins/extras/lang/clangd.lua @@ -60,7 +60,7 @@ return { -- Ensure mason installs the server clangd = { keys = { - { "ch", "ClangdSwitchSourceHeader", desc = "Switch Source/Header (C/C++)" }, + { "ch", "LspClangdSwitchSourceHeader", desc = "Switch Source/Header (C/C++)" }, }, root_markers = { "compile_commands.json", From 2c5eef7df7520fbc6fe0d90150cd26ac9e4f325b Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sun, 19 Oct 2025 12:28:25 +0200 Subject: [PATCH 079/171] fix(copilot-chat): use up to date config for chat headers (#6543) The config format changed a while ago due to function calling support Signed-off-by: Tomas Slusny --- lua/lazyvim/plugins/extras/ai/copilot-chat.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-chat.lua b/lua/lazyvim/plugins/extras/ai/copilot-chat.lua index fbf4ee39..4c350b4e 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-chat.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-chat.lua @@ -8,8 +8,11 @@ return { user = user:sub(1, 1):upper() .. user:sub(2) return { auto_insert_mode = true, - question_header = " " .. user .. " ", - answer_header = " Copilot ", + headers = { + user = " " .. user .. " ", + assistant = " Copilot ", + tool = "󰊳 Tool ", + }, window = { width = 0.4, }, From 4086d44a0b5c576630c603c7b71c6be5198d9eaf Mon Sep 17 00:00:00 2001 From: Christoph Schmidpeter <3390179+ChristophSchmidpeter@users.noreply.github.com> Date: Sun, 19 Oct 2025 12:29:00 +0200 Subject: [PATCH 080/171] feat(lang/omnisharp): switch neotest adapter to vstest (#6540) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description Replace `neotest-dotnet` with `neotest-vstest` in the Omnisharp extras. The maintainer of `neotest-dotnet` has announced possible archiving and recommended moving toward a vstest-based approach (see Issafalcon/neotest-dotnet#142). In addition, `neotest-dotnet` often fails to reliably discover tests (currently reproducible), while `neotest-vstest` works consistently in those same scenarios. `neotest-vstest` delegates to Microsoft’s VSTest engine, which provides: - Framework-agnostic discovery and execution (xUnit, NUnit, MSTest, etc.) - Support for both C# and F# - Parameterized test support - Compatibility with Microsoft.Testing.Platform going forward According to the `neotest-dotnet` maintainer, this vstest-based approach is more reliable and maintainable than parser-based discovery and is the recommended path going forward. ## Related Issue(s) - Ref: Issafalcon/neotest-dotnet#142 ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. Co-authored-by: Christoph Schmidpeter --- lua/lazyvim/plugins/extras/lang/omnisharp.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/omnisharp.lua b/lua/lazyvim/plugins/extras/lang/omnisharp.lua index 07ba0490..e66304ac 100644 --- a/lua/lazyvim/plugins/extras/lang/omnisharp.lua +++ b/lua/lazyvim/plugins/extras/lang/omnisharp.lua @@ -104,12 +104,12 @@ return { "nvim-neotest/neotest", optional = true, dependencies = { - "Issafalcon/neotest-dotnet", + "Nsidorenco/neotest-vstest", }, opts = { adapters = { - ["neotest-dotnet"] = { - -- Here we can set options for neotest-dotnet + ["neotest-vstest"] = { + -- Here we can set options for neotest-vstest }, }, }, From 22152e958f3f7c2b732cb6429ccc90541e0ad17f Mon Sep 17 00:00:00 2001 From: Nguyen Hoai Nam <55802579+namnh198@users.noreply.github.com> Date: Sun, 19 Oct 2025 17:30:58 +0700 Subject: [PATCH 081/171] fix(typescript): make_position_params with offset encoding. (#6277) Fixed for issue https://github.com/LazyVim/LazyVim/issues/6276 --- lua/lazyvim/plugins/extras/lang/typescript.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/typescript.lua b/lua/lazyvim/plugins/extras/lang/typescript.lua index 64dcd394..ab66bea1 100644 --- a/lua/lazyvim/plugins/extras/lang/typescript.lua +++ b/lua/lazyvim/plugins/extras/lang/typescript.lua @@ -69,7 +69,8 @@ return { { "gD", function() - local params = vim.lsp.util.make_position_params() + local win = vim.api.nvim_get_current_win() + local params = vim.lsp.util.make_position_params(win, "utf-16") LazyVim.lsp.execute({ command = "typescript.goToSourceDefinition", arguments = { params.textDocument.uri, params.position }, From 706ec4443a33ec474f2329b5b806e9cdb85cce43 Mon Sep 17 00:00:00 2001 From: Theo Lemay <16546293+theol0403@users.noreply.github.com> Date: Sun, 19 Oct 2025 06:31:48 -0400 Subject: [PATCH 082/171] fix(vscode): don't sync undo/redo with vscode (#5957) ## Description Vscode-neovim maintainer here, https://github.com/LazyVim/LazyVim/pull/4983 should not have been merged, it creates more problems than it solves. For the longest time I was trying to figure out why undo is broken on my machine, didn't notice this slipped in. The fundamental issue is that vscode's undo points are based on a time-based heuristic, wheras neovim's undo points are based on atomic actions (delete, insert, etc). Vscode doesn't understand the context of what the user is doing, it just receives a stream of edits from neovim. Ultimately this results in multiple unrelated edits being undone with a single press of the u key, resulting in very confusing behavior. ## Related Issue(s) https://github.com/LazyVim/LazyVim/pull/4983 ## Screenshots Current https://github.com/user-attachments/assets/5ca33b0d-fe2e-49f9-aa17-66f3c42c0966 Expected https://github.com/user-attachments/assets/d577a1f3-efb2-4725-be50-bd0cf691252d ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. Co-authored-by: Theo Lemay --- lua/lazyvim/plugins/extras/vscode.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lua/lazyvim/plugins/extras/vscode.lua b/lua/lazyvim/plugins/extras/vscode.lua index 5115a2b4..92b7f9f0 100644 --- a/lua/lazyvim/plugins/extras/vscode.lua +++ b/lua/lazyvim/plugins/extras/vscode.lua @@ -39,10 +39,6 @@ vim.api.nvim_create_autocmd("User", { vim.keymap.set("n", "/", [[lua require('vscode').action('workbench.action.findInFiles')]]) vim.keymap.set("n", "ss", [[lua require('vscode').action('workbench.action.gotoSymbol')]]) - -- Keep undo/redo lists in sync with VsCode - vim.keymap.set("n", "u", "call VSCodeNotify('undo')") - vim.keymap.set("n", "", "call VSCodeNotify('redo')") - -- Navigate VSCode tabs like lazyvim buffers vim.keymap.set("n", "", "call VSCodeNotify('workbench.action.previousEditor')") vim.keymap.set("n", "", "call VSCodeNotify('workbench.action.nextEditor')") From 4a3702e050881fea262ccae980ae1ff9e849d275 Mon Sep 17 00:00:00 2001 From: Ethan Date: Sun, 19 Oct 2025 18:36:04 +0800 Subject: [PATCH 083/171] fix(extras): remove procMacro ignored (#6117) ## Description I think we should remove rust-analyzer procMacro.ignore because it will cause some diagnostics which are not expected. ## Related Issue(s) https://github.com/LazyVim/LazyVim/issues/6111 ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/rust.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/rust.lua b/lua/lazyvim/plugins/extras/lang/rust.lua index 048eadab..155195ad 100644 --- a/lua/lazyvim/plugins/extras/lang/rust.lua +++ b/lua/lazyvim/plugins/extras/lang/rust.lua @@ -85,11 +85,6 @@ return { }, procMacro = { enable = true, - ignored = { - ["async-trait"] = { "async_trait" }, - ["napi-derive"] = { "napi" }, - ["async-recursion"] = { "async_recursion" }, - }, }, files = { excludeDirs = { From 762a34d5ad95447b241287e8d540b657a699d141 Mon Sep 17 00:00:00 2001 From: Felix Rath Date: Sun, 19 Oct 2025 12:37:57 +0200 Subject: [PATCH 084/171] fix(extras/rust): fix config key for files.exclude (#5664) ## Description It seems like the key changed its name from `files.excludeDirs` to `files.exclude` at some point. At least that is the (only) name that can be found in the docs now: https://rust-analyzer.github.io/book/configuration.html (ctrl+f for "files.exclude") Also add `".jj"` as an excluded directory, which is like `".git"` but for jujutsu (https://jj-vcs.github.io/jj/latest/cli-reference/#jj-git-init). --- As an aside, `cargo.loadOutDirsFromCheck` also does not seem to exist (anymore). But I don't know more about that option, so I haven't touched it in this PR. ## Related Issue(s) Not sure if any. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/rust.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/rust.lua b/lua/lazyvim/plugins/extras/lang/rust.lua index 155195ad..5586f9e2 100644 --- a/lua/lazyvim/plugins/extras/lang/rust.lua +++ b/lua/lazyvim/plugins/extras/lang/rust.lua @@ -87,9 +87,10 @@ return { enable = true, }, files = { - excludeDirs = { + exclude = { ".direnv", ".git", + ".jj", ".github", ".gitlab", "bin", From 336e2c3ea67636c4eea3cf8f7538feb86b5a0610 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 19 Oct 2025 12:45:07 +0200 Subject: [PATCH 085/171] fix(blink): remove snippet expand override (no longer needed). Closes #6044 --- lua/lazyvim/plugins/extras/coding/blink.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lua/lazyvim/plugins/extras/coding/blink.lua b/lua/lazyvim/plugins/extras/coding/blink.lua index d5b9a57b..ccee9d79 100644 --- a/lua/lazyvim/plugins/extras/coding/blink.lua +++ b/lua/lazyvim/plugins/extras/coding/blink.lua @@ -37,9 +37,7 @@ return { ---@type blink.cmp.Config opts = { snippets = { - expand = function(snippet, _) - return LazyVim.cmp.expand(snippet) - end, + preset = "default", }, appearance = { From dfebe70b8d09514dd3ee85e12463f266f93c5dd7 Mon Sep 17 00:00:00 2001 From: CaueDosAnjos <141049846+CaueAnjos@users.noreply.github.com> Date: Sun, 19 Oct 2025 10:46:46 +0000 Subject: [PATCH 086/171] fix(lang.omnisharp): update CSharpier command and arguments for Mason compatibility (#6156) ## Description This PR updates the CSharpier integration in LazyVim to reflect changes in how Mason installs the formatter. Previously, Mason installed CSharpier as the `dotnet-csharpier` binary, which allowed running it without additional arguments. Now, Mason installs it simply as `csharpier`, requiring the explicit format argument for it to work correctly. This change updates the formatter command and arguments accordingly to ensure compatibility with the latest Mason installation and CSharpier CLI behavior. ## Changes Replaced `dotnet-csharpier` with `csharpier` as the executable command. Added the required `format` argument to the command invocation. ## Related Issue(s) Fixes #6155 ## Checklist I have read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/omnisharp.lua | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/omnisharp.lua b/lua/lazyvim/plugins/extras/lang/omnisharp.lua index e66304ac..63bbd486 100644 --- a/lua/lazyvim/plugins/extras/lang/omnisharp.lua +++ b/lua/lazyvim/plugins/extras/lang/omnisharp.lua @@ -27,12 +27,6 @@ return { formatters_by_ft = { cs = { "csharpier" }, }, - formatters = { - csharpier = { - command = "dotnet-csharpier", - args = { "--write-stdout" }, - }, - }, }, }, { From 7038687b2070f16cde1069f360be300203912527 Mon Sep 17 00:00:00 2001 From: Kian Kasad Date: Sun, 19 Oct 2025 03:47:17 -0700 Subject: [PATCH 087/171] chore(python): use debugpy-adapter executable for nvim-dap-python (#6080) ## Description Uses a less hacky and now officially-supported way of getting the debugpy DAP adapter path for nvim-dap-python. Since https://github.com/mfussenegger/nvim-dap-python/pull/184, nvim-dap-python can start the debugpy adapter using the `debugpy-adapter` executable. Since [Mason](https://github.com/mason-org/mason-registry/blob/f7c1c2fde2d1c79f8892dafc9528da1b78b56b25/packages/debugpy/package.yaml#L17) and [now debugpy itself](https://github.com/microsoft/debugpy/pull/1870) provide this executable, there's no need to get the `python` executable from debugpy's venv. I've gone with just `"debugpy-adapter"` rather than `LazyVim.get_pkg_path("debugpy", "debugpy-adapter")` so that a system-wide installation of debugpy can also be used. ## Related Issue(s) ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/python.lua | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/python.lua b/lua/lazyvim/plugins/extras/lang/python.lua index a02ded1f..7a77cbc6 100644 --- a/lua/lazyvim/plugins/extras/lang/python.lua +++ b/lua/lazyvim/plugins/extras/lang/python.lua @@ -103,11 +103,7 @@ return { { "dPc", function() require('dap-python').test_class() end, desc = "Debug Class", ft = "python" }, }, config = function() - if vim.fn.has("win32") == 1 then - require("dap-python").setup(LazyVim.get_pkg_path("debugpy", "/venv/Scripts/pythonw.exe")) - else - require("dap-python").setup(LazyVim.get_pkg_path("debugpy", "/venv/bin/python")) - end + require("dap-python").setup("debugpy-adapter") end, }, }, From 97af4a23bccac85eb02e489f573db68863d6ed33 Mon Sep 17 00:00:00 2001 From: Michael Nikitochkin Date: Sun, 19 Oct 2025 12:47:59 +0200 Subject: [PATCH 088/171] feat(docker): associate 'Containerfile' with 'dockerfile' filetype (#5974) ## Description 'Containerfile' [1] is a supported alternative name for container build definitions. It is recognized by Docker and other container tools, and can help clarify intent in multi-container repositories or non-Docker-specific setups. [1]: https://github.com/containers/common/blob/main/docs/Containerfile.5.md ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/docker.lua | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/docker.lua b/lua/lazyvim/plugins/extras/lang/docker.lua index ea26b013..ace79db8 100644 --- a/lua/lazyvim/plugins/extras/lang/docker.lua +++ b/lua/lazyvim/plugins/extras/lang/docker.lua @@ -2,7 +2,14 @@ return { recommended = function() return LazyVim.extras.wants({ ft = "dockerfile", - root = { "Dockerfile", "docker-compose.yml", "compose.yml", "docker-compose.yaml", "compose.yaml" }, + root = { + "Dockerfile", + "Containerfile", + "docker-compose.yml", + "compose.yml", + "docker-compose.yaml", + "compose.yaml" + }, }) end, { From a16739e3328c2687d96f868839c575765c49baad Mon Sep 17 00:00:00 2001 From: Jarryd Tilbrook Date: Sun, 19 Oct 2025 18:53:46 +0800 Subject: [PATCH 089/171] fix(util): add some kulala keymaps back to global (#5960) ## Description Some kulala keymaps are useful to access globally, such as the scratchpad. However, #4467 #4574 added all of them to http filetypes only This adds the scratchpad and replay last to global keymaps ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/util/rest.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/lazyvim/plugins/extras/util/rest.lua b/lua/lazyvim/plugins/extras/util/rest.lua index 6ae8424b..0fc08ced 100644 --- a/lua/lazyvim/plugins/extras/util/rest.lua +++ b/lua/lazyvim/plugins/extras/util/rest.lua @@ -8,8 +8,8 @@ return { "mistweaverco/kulala.nvim", ft = "http", keys = { - { "R", "", desc = "+Rest", ft = "http" }, - { "Rb", "lua require('kulala').scratchpad()", desc = "Open scratchpad", ft = "http" }, + { "R", "", desc = "+Rest" }, + { "Rb", "lua require('kulala').scratchpad()", desc = "Open scratchpad" }, { "Rc", "lua require('kulala').copy()", desc = "Copy as cURL", ft = "http" }, { "RC", "lua require('kulala').from_curl()", desc = "Paste from curl", ft = "http" }, { "Re", "lua require('kulala').set_selected_env()", desc = "Set environment", ft = "http" }, @@ -23,7 +23,7 @@ return { { "Rn", "lua require('kulala').jump_next()", desc = "Jump to next request", ft = "http" }, { "Rp", "lua require('kulala').jump_prev()", desc = "Jump to previous request", ft = "http" }, { "Rq", "lua require('kulala').close()", desc = "Close window", ft = "http" }, - { "Rr", "lua require('kulala').replay()", desc = "Replay the last request", ft = "http" }, + { "Rr", "lua require('kulala').replay()", desc = "Replay the last request" }, { "Rs", "lua require('kulala').run()", desc = "Send the request", ft = "http" }, { "RS", "lua require('kulala').show_stats()", desc = "Show stats", ft = "http" }, { "Rt", "lua require('kulala').toggle_view()", desc = "Toggle headers/body", ft = "http" }, From f6f72b90d41d9347b93a07d0b680195541f64c55 Mon Sep 17 00:00:00 2001 From: Igor Guerrero Date: Sun, 19 Oct 2025 04:54:41 -0600 Subject: [PATCH 090/171] fix(sql): fix autocomplete when `omni` is used as a `blink.cmp` source (#5652) ## Description I was trying the `omni` source with `blink.cmp` and I had an error which you can read more about in this `nvim-compe` issue: https://github.com/hrsh7th/nvim-compe/issues/286 but the message keeps showing up after setting that to `syntax` so I mark the default plugin as loaded, and it works as expected, I think there are more items returned but I cannot confirm that :). ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/sql.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/sql.lua b/lua/lazyvim/plugins/extras/lang/sql.lua index 070d26ff..955e228c 100644 --- a/lua/lazyvim/plugins/extras/lang/sql.lua +++ b/lua/lazyvim/plugins/extras/lang/sql.lua @@ -28,6 +28,11 @@ end local sql_ft = { "sql", "mysql", "plsql" } +-- disable nvim default `sql_completion` plugin to be compatible with blink.cmp's omni +-- while still showing some keywords from the syntax autocomplete sources +vim.g.omni_sql_default_compl_type = "syntax" +vim.g.loaded_sql_completion = true + return { recommended = function() return LazyVim.extras.wants({ From 9618e327edfb79d9cbb037a2039c4315a95df63f Mon Sep 17 00:00:00 2001 From: Lawrence Ho <203431+lawrenceho@users.noreply.github.com> Date: Sun, 19 Oct 2025 18:55:38 +0800 Subject: [PATCH 091/171] feat(java): enable `blink.cmp` capabilities to show signature documentation (#5218) ## Description Enable `blink.cmp` capabilities to show Java signature documentation during completion. See also: https://github.com/Saghen/blink.cmp/issues/151 ## Related Issue(s) ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/java.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/java.lua b/lua/lazyvim/plugins/extras/lang/java.lua index 4dd1d77f..72f31a63 100644 --- a/lua/lazyvim/plugins/extras/lang/java.lua +++ b/lua/lazyvim/plugins/extras/lang/java.lua @@ -169,7 +169,9 @@ return { }, settings = opts.settings, -- enable CMP capabilities - capabilities = LazyVim.has("cmp-nvim-lsp") and require("cmp_nvim_lsp").default_capabilities() or nil, + capabilities = LazyVim.has("blink.cmp") and require("blink.cmp").get_lsp_capabilities() or LazyVim.has( + "cmp-nvim-lsp" + ) and require("cmp_nvim_lsp").default_capabilities() or nil, }, opts.jdtls) -- Existing server will be reused if the root_dir matches. From c460e97d2b42d1e6099cb84f24f427ef865c8d4f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 19 Oct 2025 12:57:09 +0200 Subject: [PATCH 092/171] style: format --- lua/lazyvim/plugins/extras/lang/docker.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/docker.lua b/lua/lazyvim/plugins/extras/lang/docker.lua index ace79db8..a3c48c10 100644 --- a/lua/lazyvim/plugins/extras/lang/docker.lua +++ b/lua/lazyvim/plugins/extras/lang/docker.lua @@ -8,7 +8,7 @@ return { "docker-compose.yml", "compose.yml", "docker-compose.yaml", - "compose.yaml" + "compose.yaml", }, }) end, From 42840b2ffbfa9dd3c15e0ce7d1bec36d772a3ead Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 19 Oct 2025 13:00:52 +0200 Subject: [PATCH 093/171] chore(main): release 15.9.0 (#6643) :robot: I have created a release *beep* *boop* --- ## [15.9.0](https://github.com/LazyVim/LazyVim/compare/v15.8.1...v15.9.0) (2025-10-19) ### Features * **docker:** associate 'Containerfile' with 'dockerfile' filetype ([#5974](https://github.com/LazyVim/LazyVim/issues/5974)) ([97af4a2](https://github.com/LazyVim/LazyVim/commit/97af4a23bccac85eb02e489f573db68863d6ed33)) * **extras.rest:** add keymap for changing environment ([#5678](https://github.com/LazyVim/LazyVim/issues/5678)) ([1da659d](https://github.com/LazyVim/LazyVim/commit/1da659db4a3fbcd6d171f3b38d0092ced0887e61)) * **java:** enable `blink.cmp` capabilities to show signature documentation ([#5218](https://github.com/LazyVim/LazyVim/issues/5218)) ([9618e32](https://github.com/LazyVim/LazyVim/commit/9618e327edfb79d9cbb037a2039c4315a95df63f)) * **lang/omnisharp:** switch neotest adapter to vstest ([#6540](https://github.com/LazyVim/LazyVim/issues/6540)) ([4086d44](https://github.com/LazyVim/LazyVim/commit/4086d44a0b5c576630c603c7b71c6be5198d9eaf)) * **neotest:** extra keymap to attach to a test ([#6198](https://github.com/LazyVim/LazyVim/issues/6198)) ([66e927f](https://github.com/LazyVim/LazyVim/commit/66e927fd9d0b0ff2886b9fe1465d9396461a2665)) ### Bug Fixes * **blink:** remove snippet expand override (no longer needed). Closes [#6044](https://github.com/LazyVim/LazyVim/issues/6044) ([336e2c3](https://github.com/LazyVim/LazyVim/commit/336e2c3ea67636c4eea3cf8f7538feb86b5a0610)) * **chezmoi:** add `hidden=false` to fzf picker ([#6095](https://github.com/LazyVim/LazyVim/issues/6095)) ([1aa1b59](https://github.com/LazyVim/LazyVim/commit/1aa1b59a7ec7cab61fa7b096db53df15ec5008e7)) * **copilot-chat:** use up to date config for chat headers ([#6543](https://github.com/LazyVim/LazyVim/issues/6543)) ([2c5eef7](https://github.com/LazyVim/LazyVim/commit/2c5eef7df7520fbc6fe0d90150cd26ac9e4f325b)) * **extras/rust:** fix config key for files.exclude ([#5664](https://github.com/LazyVim/LazyVim/issues/5664)) ([762a34d](https://github.com/LazyVim/LazyVim/commit/762a34d5ad95447b241287e8d540b657a699d141)) * **extras:** adjust switch source/header shortcut ([#6567](https://github.com/LazyVim/LazyVim/issues/6567)) ([b36b858](https://github.com/LazyVim/LazyVim/commit/b36b8589b62f55b181367afe954606c73233c0a1)) * **extras:** remove procMacro ignored ([#6117](https://github.com/LazyVim/LazyVim/issues/6117)) ([4a3702e](https://github.com/LazyVim/LazyVim/commit/4a3702e050881fea262ccae980ae1ff9e849d275)) * **lang.omnisharp:** update CSharpier command and arguments for Mason compatibility ([#6156](https://github.com/LazyVim/LazyVim/issues/6156)) ([dfebe70](https://github.com/LazyVim/LazyVim/commit/dfebe70b8d09514dd3ee85e12463f266f93c5dd7)) * **lang.rust:** rust-analyzer hanging on root scanned ([#6178](https://github.com/LazyVim/LazyVim/issues/6178)) ([7bf8c22](https://github.com/LazyVim/LazyVim/commit/7bf8c22c56283fa6d5d35246dcd0f49d37a5c709)) * **latex:** ensure tex extra installs latex tree-sitter parser ([#6357](https://github.com/LazyVim/LazyVim/issues/6357)) ([ae74622](https://github.com/LazyVim/LazyVim/commit/ae74622e6666ea4c3e6c58c4ef2d3f313d8e8f20)) * **mini.animate:** schedule the toggle mapping to correctly take effect ([#6483](https://github.com/LazyVim/LazyVim/issues/6483)) ([bd23357](https://github.com/LazyVim/LazyVim/commit/bd233579a66018f526b6b0970e33afde4cde399e)) * **sql:** fix autocomplete when `omni` is used as a `blink.cmp` source ([#5652](https://github.com/LazyVim/LazyVim/issues/5652)) ([f6f72b9](https://github.com/LazyVim/LazyVim/commit/f6f72b90d41d9347b93a07d0b680195541f64c55)) * **treesitter:** attach textobject keymaps to existing buffers on load. Closes [#6642](https://github.com/LazyVim/LazyVim/issues/6642). Closes [#6639](https://github.com/LazyVim/LazyVim/issues/6639) ([92a7728](https://github.com/LazyVim/LazyVim/commit/92a77287321236f52ff38648a38cf314ab223137)) * **typescript:** make_position_params with offset encoding. ([#6277](https://github.com/LazyVim/LazyVim/issues/6277)) ([22152e9](https://github.com/LazyVim/LazyVim/commit/22152e958f3f7c2b732cb6429ccc90541e0ad17f)) * **ui:** ignore sidekick_terminal in mini-indentscope ([#6619](https://github.com/LazyVim/LazyVim/issues/6619)) ([f0b32b5](https://github.com/LazyVim/LazyVim/commit/f0b32b5955889d4d2d3636a52d2ddf5d113646df)) * **util:** add some kulala keymaps back to global ([#5960](https://github.com/LazyVim/LazyVim/issues/5960)) ([a16739e](https://github.com/LazyVim/LazyVim/commit/a16739e3328c2687d96f868839c575765c49baad)) * **vscode:** don't sync undo/redo with vscode ([#5957](https://github.com/LazyVim/LazyVim/issues/5957)) ([706ec44](https://github.com/LazyVim/LazyVim/commit/706ec4443a33ec474f2329b5b806e9cdb85cce43)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 31 +++++++++++++++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index cbea53b1..67ff2e28 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.8.1" + ".": "15.9.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 033109a4..91539d23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## [15.9.0](https://github.com/LazyVim/LazyVim/compare/v15.8.1...v15.9.0) (2025-10-19) + + +### Features + +* **docker:** associate 'Containerfile' with 'dockerfile' filetype ([#5974](https://github.com/LazyVim/LazyVim/issues/5974)) ([97af4a2](https://github.com/LazyVim/LazyVim/commit/97af4a23bccac85eb02e489f573db68863d6ed33)) +* **extras.rest:** add keymap for changing environment ([#5678](https://github.com/LazyVim/LazyVim/issues/5678)) ([1da659d](https://github.com/LazyVim/LazyVim/commit/1da659db4a3fbcd6d171f3b38d0092ced0887e61)) +* **java:** enable `blink.cmp` capabilities to show signature documentation ([#5218](https://github.com/LazyVim/LazyVim/issues/5218)) ([9618e32](https://github.com/LazyVim/LazyVim/commit/9618e327edfb79d9cbb037a2039c4315a95df63f)) +* **lang/omnisharp:** switch neotest adapter to vstest ([#6540](https://github.com/LazyVim/LazyVim/issues/6540)) ([4086d44](https://github.com/LazyVim/LazyVim/commit/4086d44a0b5c576630c603c7b71c6be5198d9eaf)) +* **neotest:** extra keymap to attach to a test ([#6198](https://github.com/LazyVim/LazyVim/issues/6198)) ([66e927f](https://github.com/LazyVim/LazyVim/commit/66e927fd9d0b0ff2886b9fe1465d9396461a2665)) + + +### Bug Fixes + +* **blink:** remove snippet expand override (no longer needed). Closes [#6044](https://github.com/LazyVim/LazyVim/issues/6044) ([336e2c3](https://github.com/LazyVim/LazyVim/commit/336e2c3ea67636c4eea3cf8f7538feb86b5a0610)) +* **chezmoi:** add `hidden=false` to fzf picker ([#6095](https://github.com/LazyVim/LazyVim/issues/6095)) ([1aa1b59](https://github.com/LazyVim/LazyVim/commit/1aa1b59a7ec7cab61fa7b096db53df15ec5008e7)) +* **copilot-chat:** use up to date config for chat headers ([#6543](https://github.com/LazyVim/LazyVim/issues/6543)) ([2c5eef7](https://github.com/LazyVim/LazyVim/commit/2c5eef7df7520fbc6fe0d90150cd26ac9e4f325b)) +* **extras/rust:** fix config key for files.exclude ([#5664](https://github.com/LazyVim/LazyVim/issues/5664)) ([762a34d](https://github.com/LazyVim/LazyVim/commit/762a34d5ad95447b241287e8d540b657a699d141)) +* **extras:** adjust switch source/header shortcut ([#6567](https://github.com/LazyVim/LazyVim/issues/6567)) ([b36b858](https://github.com/LazyVim/LazyVim/commit/b36b8589b62f55b181367afe954606c73233c0a1)) +* **extras:** remove procMacro ignored ([#6117](https://github.com/LazyVim/LazyVim/issues/6117)) ([4a3702e](https://github.com/LazyVim/LazyVim/commit/4a3702e050881fea262ccae980ae1ff9e849d275)) +* **lang.omnisharp:** update CSharpier command and arguments for Mason compatibility ([#6156](https://github.com/LazyVim/LazyVim/issues/6156)) ([dfebe70](https://github.com/LazyVim/LazyVim/commit/dfebe70b8d09514dd3ee85e12463f266f93c5dd7)) +* **lang.rust:** rust-analyzer hanging on root scanned ([#6178](https://github.com/LazyVim/LazyVim/issues/6178)) ([7bf8c22](https://github.com/LazyVim/LazyVim/commit/7bf8c22c56283fa6d5d35246dcd0f49d37a5c709)) +* **latex:** ensure tex extra installs latex tree-sitter parser ([#6357](https://github.com/LazyVim/LazyVim/issues/6357)) ([ae74622](https://github.com/LazyVim/LazyVim/commit/ae74622e6666ea4c3e6c58c4ef2d3f313d8e8f20)) +* **mini.animate:** schedule the toggle mapping to correctly take effect ([#6483](https://github.com/LazyVim/LazyVim/issues/6483)) ([bd23357](https://github.com/LazyVim/LazyVim/commit/bd233579a66018f526b6b0970e33afde4cde399e)) +* **sql:** fix autocomplete when `omni` is used as a `blink.cmp` source ([#5652](https://github.com/LazyVim/LazyVim/issues/5652)) ([f6f72b9](https://github.com/LazyVim/LazyVim/commit/f6f72b90d41d9347b93a07d0b680195541f64c55)) +* **treesitter:** attach textobject keymaps to existing buffers on load. Closes [#6642](https://github.com/LazyVim/LazyVim/issues/6642). Closes [#6639](https://github.com/LazyVim/LazyVim/issues/6639) ([92a7728](https://github.com/LazyVim/LazyVim/commit/92a77287321236f52ff38648a38cf314ab223137)) +* **typescript:** make_position_params with offset encoding. ([#6277](https://github.com/LazyVim/LazyVim/issues/6277)) ([22152e9](https://github.com/LazyVim/LazyVim/commit/22152e958f3f7c2b732cb6429ccc90541e0ad17f)) +* **ui:** ignore sidekick_terminal in mini-indentscope ([#6619](https://github.com/LazyVim/LazyVim/issues/6619)) ([f0b32b5](https://github.com/LazyVim/LazyVim/commit/f0b32b5955889d4d2d3636a52d2ddf5d113646df)) +* **util:** add some kulala keymaps back to global ([#5960](https://github.com/LazyVim/LazyVim/issues/5960)) ([a16739e](https://github.com/LazyVim/LazyVim/commit/a16739e3328c2687d96f868839c575765c49baad)) +* **vscode:** don't sync undo/redo with vscode ([#5957](https://github.com/LazyVim/LazyVim/issues/5957)) ([706ec44](https://github.com/LazyVim/LazyVim/commit/706ec4443a33ec474f2329b5b806e9cdb85cce43)) + ## [15.8.1](https://github.com/LazyVim/LazyVim/compare/v15.8.0...v15.8.1) (2025-10-18) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index ab41d775..dc8972c7 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.8.1" -- x-release-please-version +M.version = "15.9.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 16917db94a056fe01b3bac604bc89da4077bd9cd Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 19 Oct 2025 22:53:32 +0200 Subject: [PATCH 094/171] feat(sidekick): added sidekick cli status to lualine --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index d0451fce..c1c38c58 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -39,6 +39,19 @@ return { return { fg = Snacks.util.color(hl) } end, }) + + table.insert(opts.sections.lualine_x, 2, { + function() + local status = require("sidekick.status").cli() + return " " .. (#status > 1 and #status or "") + end, + cond = function() + return #require("sidekick.status").cli() > 0 + end, + color = function() + return { fg = Snacks.util.color("Special") } + end, + }) end, }, @@ -114,7 +127,7 @@ return { picker = { actions = { sidekick_send = function(...) - return require("sidekick.cli.snacks").send(...) + return require("sidekick.cli.picker.snacks").send(...) end, }, win = { From 69a57448032253ca086d999c0d53d6e33ad4e505 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 07:01:27 +0200 Subject: [PATCH 095/171] fix(fzf-lua): added some missing keymaps similar to snacks picker. Closes #6036. Closes #5830 --- lua/lazyvim/plugins/extras/editor/fzf.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lua/lazyvim/plugins/extras/editor/fzf.lua b/lua/lazyvim/plugins/extras/editor/fzf.lua index 9e7ef671..513b8130 100644 --- a/lua/lazyvim/plugins/extras/editor/fzf.lua +++ b/lua/lazyvim/plugins/extras/editor/fzf.lua @@ -218,6 +218,7 @@ return { { "", LazyVim.pick("files"), desc = "Find Files (Root Dir)" }, -- find { "fb", "FzfLua buffers sort_mru=true sort_lastused=true", desc = "Buffers" }, + { "fB", "FzfLua buffers", desc = "Buffers (all)" }, { "fc", LazyVim.pick.config_files(), desc = "Find Config File" }, { "ff", LazyVim.pick("files"), desc = "Find Files (Root Dir)" }, { "fF", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" }, @@ -226,15 +227,19 @@ return { { "fR", LazyVim.pick("oldfiles", { cwd = vim.uv.cwd() }), desc = "Recent (cwd)" }, -- git { "gc", "FzfLua git_commits", desc = "Commits" }, + { "gd", "FzfLua git_diff", desc = "Git Diff (hunks)" }, + { "gl", "FzfLua git_commits", desc = "Commits" }, { "gs", "FzfLua git_status", desc = "Status" }, + { "gS", "FzfLua git_stash", desc = "Git Stash" }, -- search { 's"', "FzfLua registers", desc = "Registers" }, + { 's/', "FzfLua search_history", desc = "Search History" }, { "sa", "FzfLua autocmds", desc = "Auto Commands" }, - { "sb", "FzfLua grep_curbuf", desc = "Buffer" }, + { "sb", "FzfLua lines", desc = "Buffer Lines" }, { "sc", "FzfLua command_history", desc = "Command History" }, { "sC", "FzfLua commands", desc = "Commands" }, - { "sd", "FzfLua diagnostics_document", desc = "Document Diagnostics" }, - { "sD", "FzfLua diagnostics_workspace", desc = "Workspace Diagnostics" }, + { "sd", "FzfLua diagnostics_workspace", desc = "Diagnostics" }, + { "sD", "FzfLua diagnostics_document", desc = "Buffer Diagnostics" }, { "sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" }, { "sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" }, { "sh", "FzfLua help_tags", desc = "Help Pages" }, From c3c2ff465bcd58cdd1142ba6c9644603c431a406 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Mon, 20 Oct 2025 05:02:32 +0000 Subject: [PATCH 096/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index f8a92ea3..a1d06f52 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 19 +*LazyVim.txt* For Neovim Last change: 2025 October 20 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 1a08e9f50f8c11a329c3017c4bfdd4b96b7ec541 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 07:04:53 +0200 Subject: [PATCH 097/171] fix(telescope): sync keymaps with snacks picker + added some that were missing --- lua/lazyvim/plugins/extras/editor/telescope.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lua/lazyvim/plugins/extras/editor/telescope.lua b/lua/lazyvim/plugins/extras/editor/telescope.lua index 9fdf7e13..f40ccae6 100644 --- a/lua/lazyvim/plugins/extras/editor/telescope.lua +++ b/lua/lazyvim/plugins/extras/editor/telescope.lua @@ -101,6 +101,7 @@ return { "Telescope buffers sort_mru=true sort_lastused=true ignore_current_buffer=true", desc = "Buffers", }, + { "fB", "Telescope buffers", desc = "Buffers (all)" }, { "fc", LazyVim.pick.config_files(), desc = "Find Config File" }, { "ff", LazyVim.pick("files"), desc = "Find Files (Root Dir)" }, { "fF", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" }, @@ -109,15 +110,18 @@ return { { "fR", LazyVim.pick("oldfiles", { cwd = vim.uv.cwd() }), desc = "Recent (cwd)" }, -- git { "gc", "Telescope git_commits", desc = "Commits" }, + { "gl", "Telescope git_commits", desc = "Commits" }, { "gs", "Telescope git_status", desc = "Status" }, + { "gS", "Telescope git_stash", desc = "Git Stash" }, -- search { 's"', "Telescope registers", desc = "Registers" }, + { 's/', "Telescope search_history", desc = "Search History" }, { "sa", "Telescope autocommands", desc = "Auto Commands" }, - { "sb", "Telescope current_buffer_fuzzy_find", desc = "Buffer" }, + { "sb", "Telescope current_buffer_fuzzy_find", desc = "Buffer Lines" }, { "sc", "Telescope command_history", desc = "Command History" }, { "sC", "Telescope commands", desc = "Commands" }, - { "sd", "Telescope diagnostics bufnr=0", desc = "Document Diagnostics" }, - { "sD", "Telescope diagnostics", desc = "Workspace Diagnostics" }, + { "sd", "Telescope diagnostics", desc = "Diagnostics" }, + { "sD", "Telescope diagnostics bufnr=0", desc = "Buffer Diagnostics" }, { "sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" }, { "sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" }, { "sh", "Telescope help_tags", desc = "Help Pages" }, From e4d34328f244fc0c7f91587258e767bfb55d0648 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 07:19:18 +0200 Subject: [PATCH 098/171] fix(typescript): better default pwa-node DAP config. Closes #6386 --- .../plugins/extras/lang/typescript.lua | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/typescript.lua b/lua/lazyvim/plugins/extras/lang/typescript.lua index ab66bea1..b79eb7e9 100644 --- a/lua/lazyvim/plugins/extras/lang/typescript.lua +++ b/lua/lazyvim/plugins/extras/lang/typescript.lua @@ -263,6 +263,10 @@ return { for _, language in ipairs(js_filetypes) do if not dap.configurations[language] then + local runtimeExecutable = nil + if language:find("typescript") then + runtimeExecutable = vim.fn.executable("tsx") == 1 and "tsx" or "ts-node" + end dap.configurations[language] = { { type = "pwa-node", @@ -270,6 +274,16 @@ return { name = "Launch file", program = "${file}", cwd = "${workspaceFolder}", + sourceMaps = true, + runtimeExecutable = runtimeExecutable, + skipFiles = { + "/**", + "node_modules/**", + }, + resolveSourceMapLocations = { + "${workspaceFolder}/**", + "!**/node_modules/**", + }, }, { type = "pwa-node", @@ -277,6 +291,16 @@ return { name = "Attach", processId = require("dap.utils").pick_process, cwd = "${workspaceFolder}", + sourceMaps = true, + runtimeExecutable = runtimeExecutable, + skipFiles = { + "/**", + "node_modules/**", + }, + resolveSourceMapLocations = { + "${workspaceFolder}/**", + "!**/node_modules/**", + }, }, } end From 2a866f6c8c974c88cb9c723560cbec4308d304a2 Mon Sep 17 00:00:00 2001 From: Jose Storopoli Date: Mon, 20 Oct 2025 00:20:47 -0500 Subject: [PATCH 099/171] feat(lang): nix add `statix` linter (#6244) ## Description Adds [`statix`](https://github.com/oppiliappan/statix) linter to `lang/nix.lua` using `nvim-lint` ## Related Issue(s) None ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/nix.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/nix.lua b/lua/lazyvim/plugins/extras/lang/nix.lua index 76a42ebe..79a2b71f 100644 --- a/lua/lazyvim/plugins/extras/lang/nix.lua +++ b/lua/lazyvim/plugins/extras/lang/nix.lua @@ -24,4 +24,13 @@ return { }, }, }, + { + "mfussenegger/nvim-lint", + optional = true, + opts = { + linters_by_ft = { + nix = { "statix" }, + }, + }, + }, } From 0dc41dfe9a4523ad3084f430019fc7782548021e Mon Sep 17 00:00:00 2001 From: XTY Date: Mon, 20 Oct 2025 13:36:15 +0800 Subject: [PATCH 100/171] refactor(vscode): reimplement terminal integration and unify calls to extension API (#6076) ## Description This PR proposes the following changes to the VS Code extra: - Re-implement the VS Code terminal integration (broken since [`2f46974`](https://github.com/LazyVim/LazyVim/commit/2f4697443c0186663ba4421bd4b856e36c3bd7cc#diff-f878104b5415a79ed4bb9036974722cad911327fdd46994e04f5065ff90e9a55), see comment referenced below) - Unify calls to the [extension API](https://github.com/vscode-neovim/vscode-neovim/tree/v1.18.21?tab=readme-ov-file#%EF%B8%8F-api) - Fully adopt the Lua API in favour of the deprecated Vim script functions (see [deprecation notice](https://github.com/vscode-neovim/vscode-neovim/tree/v1.18.21?tab=readme-ov-file#vimscript)) - Centralise `require("vscode")` calls ## Related Issue(s) - Fixes https://github.com/LazyVim/LazyVim/pull/4392#issuecomment-2881395017 ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --------- Co-authored-by: Folke Lemaitre --- lua/lazyvim/plugins/extras/vscode.lua | 28 +++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/lua/lazyvim/plugins/extras/vscode.lua b/lua/lazyvim/plugins/extras/vscode.lua index 92b7f9f0..1ae459bb 100644 --- a/lua/lazyvim/plugins/extras/vscode.lua +++ b/lua/lazyvim/plugins/extras/vscode.lua @@ -23,6 +23,7 @@ local enabled = { } local Config = require("lazy.core.config") +local vscode = require("vscode") Config.options.checker.enabled = false Config.options.change_detection.enabled = false Config.options.defaults.cond = function(plugin) @@ -36,19 +37,30 @@ vim.api.nvim_create_autocmd("User", { callback = function() -- VSCode-specific keymaps for search and navigation vim.keymap.set("n", "", "Find") - vim.keymap.set("n", "/", [[lua require('vscode').action('workbench.action.findInFiles')]]) - vim.keymap.set("n", "ss", [[lua require('vscode').action('workbench.action.gotoSymbol')]]) + vim.keymap.set("n", "/", function() + vscode.call("workbench.action.findInFiles") + end) + vim.keymap.set("n", "ss", function() + vscode.call("workbench.action.gotoSymbol") + end) + + -- Toggle VS Code integrated terminal + for _, lhs in ipairs({ "ft", "fT", "" }) do + vim.keymap.set("n", lhs, function() + vscode.call("workbench.action.terminal.toggleTerminal") + end) + end -- Navigate VSCode tabs like lazyvim buffers - vim.keymap.set("n", "", "call VSCodeNotify('workbench.action.previousEditor')") - vim.keymap.set("n", "", "call VSCodeNotify('workbench.action.nextEditor')") + vim.keymap.set("n", "", function() + vscode.call("workbench.action.previousEditor") + end) + vim.keymap.set("n", "", function() + vscode.call("workbench.action.nextEditor") + end) end, }) -function LazyVim.terminal() - require("vscode").action("workbench.action.terminal.toggleTerminal") -end - return { { "snacks.nvim", From 38df28f28c17a730889f0ad4431425b8253a7474 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 07:53:39 +0200 Subject: [PATCH 101/171] style: formatting --- lua/lazyvim/plugins/extras/editor/fzf.lua | 2 +- lua/lazyvim/plugins/extras/editor/telescope.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/plugins/extras/editor/fzf.lua b/lua/lazyvim/plugins/extras/editor/fzf.lua index 513b8130..5e10fc58 100644 --- a/lua/lazyvim/plugins/extras/editor/fzf.lua +++ b/lua/lazyvim/plugins/extras/editor/fzf.lua @@ -233,7 +233,7 @@ return { { "gS", "FzfLua git_stash", desc = "Git Stash" }, -- search { 's"', "FzfLua registers", desc = "Registers" }, - { 's/', "FzfLua search_history", desc = "Search History" }, + { "s/", "FzfLua search_history", desc = "Search History" }, { "sa", "FzfLua autocmds", desc = "Auto Commands" }, { "sb", "FzfLua lines", desc = "Buffer Lines" }, { "sc", "FzfLua command_history", desc = "Command History" }, diff --git a/lua/lazyvim/plugins/extras/editor/telescope.lua b/lua/lazyvim/plugins/extras/editor/telescope.lua index f40ccae6..685f9ec5 100644 --- a/lua/lazyvim/plugins/extras/editor/telescope.lua +++ b/lua/lazyvim/plugins/extras/editor/telescope.lua @@ -115,7 +115,7 @@ return { { "gS", "Telescope git_stash", desc = "Git Stash" }, -- search { 's"', "Telescope registers", desc = "Registers" }, - { 's/', "Telescope search_history", desc = "Search History" }, + { "s/", "Telescope search_history", desc = "Search History" }, { "sa", "Telescope autocommands", desc = "Auto Commands" }, { "sb", "Telescope current_buffer_fuzzy_find", desc = "Buffer Lines" }, { "sc", "Telescope command_history", desc = "Command History" }, From 80a980ab00a871777c37ec3f0db9c394509b2465 Mon Sep 17 00:00:00 2001 From: Christoph Schmidpeter <3390179+ChristophSchmidpeter@users.noreply.github.com> Date: Mon, 20 Oct 2025 08:02:50 +0200 Subject: [PATCH 102/171] feat(lang/fsharp): add F# support to omnisharp extra (#6538) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description Extend the existing C#/VB setup to support F# development with formatting, LSP, and debugging integration. - Extend recommended filetypes and roots to include F# - Ensure Treesitter installs the `fsharp` parser - Add Fantomas formatter in none-ls and Conform - Ensure Mason installs fsautocomplete and fantomas - Extend DAP configurations to include `fsharp` ⚠️ For debugging/neotest to work, this PR should be merged together with [#6540](https://github.com/LazyVim/LazyVim/pull/6540), which switches Omnisharp extras from `neotest-dotnet` to `neotest-vstest`. ## Related Issue(s) N/A ## Screenshots ### Without PR Sample code: 2025-09-27-224704_hyprshot ### With PR `:ConformInfo` image `:NullLsInfo` image Sample code before formatting: 2025-09-27-224729_hyprshot Sample code after formatting (using Fantomas formatter): 2025-09-27-224752_hyprshot DAP/Neotest debugging the sample code: image ## Attachments [Sample Project ZIP Archive](https://github.com/user-attachments/files/22576868/FsSample.zip) ``` sudo pacman -S --needed curl unzip dotnet-sdk # or whatever package manger is on system curl -O -L "https://github.com/user-attachments/files/22576868/FsSample.zip" unzip FsSample.zip cd FsSample dotnet build # restoring/building fixes LSP errors ``` ## Checklist - [X] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. Co-authored-by: Christoph Schmidpeter --- lua/lazyvim/plugins/extras/lang/omnisharp.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/omnisharp.lua b/lua/lazyvim/plugins/extras/lang/omnisharp.lua index 63bbd486..af2daed6 100644 --- a/lua/lazyvim/plugins/extras/lang/omnisharp.lua +++ b/lua/lazyvim/plugins/extras/lang/omnisharp.lua @@ -1,15 +1,15 @@ return { recommended = function() return LazyVim.extras.wants({ - ft = { "cs", "vb" }, - root = { "*.sln", "*.csproj", "omnisharp.json", "function.json" }, + ft = { "cs", "vb", "fsharp" }, + root = { "*.sln", "*.csproj", "*.fsproj", "omnisharp.json", "function.json", "paket.dependencies", "paket.lock" }, }) end, { "Hoffs/omnisharp-extended-lsp.nvim", lazy = true }, { "nvim-treesitter/nvim-treesitter", - opts = { ensure_installed = { "c_sharp" } }, + opts = { ensure_installed = { "c_sharp", "fsharp" } }, }, { "nvimtools/none-ls.nvim", @@ -18,6 +18,7 @@ return { local nls = require("null-ls") opts.sources = opts.sources or {} table.insert(opts.sources, nls.builtins.formatting.csharpier) + table.insert(opts.sources, nls.builtins.formatting.fantomas) end, }, { @@ -26,12 +27,13 @@ return { opts = { formatters_by_ft = { cs = { "csharpier" }, + fsharp = { "fantomas" }, }, }, }, { "mason-org/mason.nvim", - opts = { ensure_installed = { "csharpier", "netcoredbg" } }, + opts = { ensure_installed = { "csharpier", "netcoredbg", "fsautocomplete", "fantomas" } }, }, { "neovim/nvim-lspconfig", From d44f8bf317b59d10d22331d70fe25de379108b26 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 08:36:01 +0200 Subject: [PATCH 103/171] test: fix mason in extra tests --- tests/extras/extra_spec.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/extras/extra_spec.lua b/tests/extras/extra_spec.lua index 2a4a9bc8..2aa30179 100644 --- a/tests/extras/extra_spec.lua +++ b/tests/extras/extra_spec.lua @@ -26,8 +26,15 @@ describe("Extra", function() return not vim.tbl_contains(ignore, extra.modname) end, extras) + require("mason").setup() + local mr = require("mason-registry") + mr.refresh() + local lsp_to_pkg = {} lsp_to_pkg = require("mason-lspconfig.mappings").get_mason_map().lspconfig_to_package + it("can get lspconfig to package map", function() + assert(not vim.tbl_isempty(lsp_to_pkg), "Could not get lspconfig to package map") + end) local tsspec = Plugin.Spec.new({ import = "lazyvim.plugins.treesitter", From 37ecd06fad65d5c188ad2d2e55d47a8fd1594d16 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 08:46:45 +0200 Subject: [PATCH 104/171] feat(extras): automatically update lazyvim.json for renamed or deprecated extras --- lua/lazyvim/plugins/xtras.lua | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/lua/lazyvim/plugins/xtras.lua b/lua/lazyvim/plugins/xtras.lua index 5db08ef1..8f65f00a 100644 --- a/lua/lazyvim/plugins/xtras.lua +++ b/lua/lazyvim/plugins/xtras.lua @@ -25,12 +25,29 @@ end local extras = {} ---@type string[] local defaults = LazyVim.config.get_defaults() +local changed = false +local updated = {} ---@type string[] + -- Add extras from LazyExtras that are not disabled for _, extra in ipairs(LazyVim.config.json.data.extras) do - local def = defaults[extra] - if not (def and def.enabled == false) then - extras[#extras + 1] = extra + if LazyVim.plugin.renamed_extras[extra] then + extra = LazyVim.plugin.renamed_extras[extra] + changed = true end + if LazyVim.plugin.deprecated_extras[extra] then + changed = true + else + updated[#updated + 1] = extra + local def = defaults[extra] + if not (def and def.enabled == false) then + extras[#extras + 1] = extra + end + end +end + +if changed then + LazyVim.config.json.data.extras = updated + LazyVim.json.save() end -- Add default extras From 1b2e6e8986b3cfee19635920129fc08df4f32b38 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 08:47:38 +0200 Subject: [PATCH 105/171] feat(extras): renamed extra omnisharp -> dotnet + added fautocomplete to lspconfig --- .../extras/lang/{omnisharp.lua => dotnet.lua} | 3 ++- lua/lazyvim/util/plugin.lua | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) rename lua/lazyvim/plugins/extras/lang/{omnisharp.lua => dotnet.lua} (96%) diff --git a/lua/lazyvim/plugins/extras/lang/omnisharp.lua b/lua/lazyvim/plugins/extras/lang/dotnet.lua similarity index 96% rename from lua/lazyvim/plugins/extras/lang/omnisharp.lua rename to lua/lazyvim/plugins/extras/lang/dotnet.lua index af2daed6..433ab154 100644 --- a/lua/lazyvim/plugins/extras/lang/omnisharp.lua +++ b/lua/lazyvim/plugins/extras/lang/dotnet.lua @@ -33,12 +33,13 @@ return { }, { "mason-org/mason.nvim", - opts = { ensure_installed = { "csharpier", "netcoredbg", "fsautocomplete", "fantomas" } }, + opts = { ensure_installed = { "csharpier", "netcoredbg", "fantomas" } }, }, { "neovim/nvim-lspconfig", opts = { servers = { + fsautocomplete = {}, omnisharp = { handlers = { ["textDocument/definition"] = function(...) diff --git a/lua/lazyvim/util/plugin.lua b/lua/lazyvim/util/plugin.lua index 58063385..02e6834f 100644 --- a/lua/lazyvim/util/plugin.lua +++ b/lua/lazyvim/util/plugin.lua @@ -26,6 +26,9 @@ M.deprecated_extras = { Either use `basedpyright`, or copy the [old extra](https://github.com/LazyVim/LazyVim/blob/c1f5fcf9c7ed2659c9d5ac41b3bb8a93e0a3c6a0/lua/lazyvim/plugins/extras/lang/python-semshi.lua#L1) to your own config. ]], } +M.renamed_extras = { + ["lazyvim.plugins.extras.lang.omnisharp"] = "lazyvim.plugins.extras.lang.dotnet", +} M.deprecated_modules = {} @@ -94,6 +97,18 @@ function M.fix_imports() return false end end + local rename = M.renamed_extras[spec.import] + if rename then + LazyVim.warn( + ("The extra `%s` was renamed to `%s`.\nPlease update your config for `%s`"):format( + spec.import, + rename, + spec.importing or "LazyVim" + ), + { title = "LazyVim" } + ) + spec.import = rename + end local dep = M.deprecated_extras[spec and spec.import] if dep then dep = dep .. "\n" .. "Please remove the extra from `lazyvim.json` to hide this warning." From e38944799e7fc45baea0483f5c955472f3ffde27 Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Mon, 20 Oct 2025 09:52:12 +0300 Subject: [PATCH 106/171] fix(util.project): different mapping on dashboard than `snacks.projects` (#5737) ## Description Different mapping and description to not be confused with `snacks.projects`. ## Related Issue(s) Fixes #5736 ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/util/project.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lua/lazyvim/plugins/extras/util/project.lua b/lua/lazyvim/plugins/extras/util/project.lua index dafaa594..f033bd1f 100644 --- a/lua/lazyvim/plugins/extras/util/project.lua +++ b/lua/lazyvim/plugins/extras/util/project.lua @@ -126,7 +126,7 @@ return { "goolord/alpha-nvim", optional = true, opts = function(_, dashboard) - local button = dashboard.button("p", " " .. " Projects", pick) + local button = dashboard.button("P", " " .. " Projects (util.project)", pick) button.opts.hl = "AlphaButtons" button.opts.hl_shortcut = "AlphaShortcut" table.insert(dashboard.section.buttons.val, 4, button) @@ -139,7 +139,7 @@ return { opts = function(_, opts) local items = { { - name = "Projects", + name = "Projects (util.project)", action = pick, section = string.rep(" ", 22) .. "Telescope", }, @@ -157,9 +157,9 @@ return { end local projects = { action = pick, - desc = " Projects", + desc = " Projects (util.project)", icon = " ", - key = "p", + key = "P", } projects.desc = projects.desc .. string.rep(" ", 43 - #projects.desc) @@ -175,9 +175,9 @@ return { opts = function(_, opts) table.insert(opts.dashboard.preset.keys, 3, { action = pick, - desc = "Projects", + desc = "Projects (util.project)", icon = " ", - key = "p", + key = "P", }) end, }, From d27e7adb535a2025a28082433f5740df7337e0de Mon Sep 17 00:00:00 2001 From: Grzegorz Aleksander Klementowski Date: Mon, 20 Oct 2025 08:59:40 +0200 Subject: [PATCH 107/171] Added Polish translation of README (README-PL.md) (#5816) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added Polish translation of README (README-PL.md):

Install · Configure · Docs

LazyVim to konfiguracja Neovim oparta na [💤 lazy.nvim](https://github.com/folke/lazy.nvim) która ułatwia dostosowywanie i rozszerzanie konfiguracji. Zamiast wybierać między rozpoczynaniem od zera a używaniem gotowej dystrybucji, LazyVim oferuje najlepsze z obu światów – elastyczność pozwalającą na dostosowanie konfiguracji do własnych potrzeb oraz wygodę wstępnie skonfigurowanego środowiska. ![image](https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png) ![image](https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png) ## ✨ Funkcje - 🔥 Przekształć Neovim w pełnoprawne IDE - 💤 Łatwo dostosowuj i rozszerzaj swoją konfigurację dzięki [lazy.nvim](https://github.com/folke/lazy.nvim) - 🚀 Niezwykle szybkie działanie - 🧹 Przemyślane domyślne ustawienia opcji, autocmd i skrótów klawiszowych - 📦 Zawiera bogaty zestaw wstępnie skonfigurowanych wtyczek gotowych do użycia ## ⚡️ Wymagania - Neovim >= **0.9.0** (musi być skompilowany z **LuaJIT**) - Git >= **2.19.0** (dla obsługi częściowego klonowania repozytoriów) - [Nerd Font](https://www.nerdfonts.com/) **_(opcjonalnie)_** - Kompilator **C** wymagany dla `nvim-treesitter`. Szczegóły [tutaj](https://github.com/nvim-treesitter/nvim-treesitter#requirements) ## 🚀 Pierwsze kroki Szablon startowy dla **LazyVim** znajdziesz [tutaj](https://github.com/LazyVim/starter)
Wypróbuj z Dockerem ```sh docker run -w /root -it --rm alpine:edge sh -uelic ' apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update git clone https://github.com/LazyVim/starter ~/.config/nvim cd ~/.config/nvim nvim ' ```
Zainstaluj Starter LazyVim - Wykonaj kopię zapasową swoich obecnych plików Neovim: ```sh mv ~/.config/nvim ~/.config/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak ``` - Sklonuj repozytorium startowe: ```sh git clone https://github.com/LazyVim/starter ~/.config/nvim ``` - Usuń folder `.git`, aby później móc dodać własne repozytorium: ```sh rm -rf ~/.config/nvim/.git ``` - Uruchom Neovim! ```sh nvim ``` W plikach znajdziesz komentarze, które pomogą Ci dostosować **LazyVim**.
--- [@elijahmanor](https://github.com/elijahmanor) stworzył świetne wideo z przewodnikiem, jak zacząć. [![Obejrzyj wideo](https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg)](https://www.youtube.com/watch?v=N93cTbtLCIM) [@dusty-phillips](https://github.com/dusty-phillips) napisał obszerną książkę [LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes), która jest dostępna za darmo online. ## 📂 Struktura plików Pliki w katalogu `config` są automatycznie ładowane w odpowiednim momencie, więc nie musisz ich ręcznie dołączać. **LazyVim** zawiera zestaw domyślnych plików konfiguracyjnych, które zostaną załadowane **_przed_** Twoimi własnymi. Szczegóły znajdziesz [tutaj](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config). Możesz dodać własne specyfikacje wtyczek w katalogu `lua/plugins/`. Wszystkie pliki w tym folderze zostaną automatycznie załadowane przez [lazy.nvim](https://github.com/folke/lazy.nvim).
~/.config/nvim
├── lua
│   ├── config
│   │   ├── autocmds.lua
│   │   ├── keymaps.lua
│   │   ├── lazy.lua
│   │   └── options.lua
│   └── plugins
│       ├── spec1.lua
│       ├── **
│       └── spec2.lua
└── init.lua
## ⚙️ Konfiguracja Zapoznaj się z [dokumentacją](https://lazyvim.github.io). --- README-PL.md | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 README-PL.md diff --git a/README-PL.md b/README-PL.md new file mode 100644 index 00000000..912e971e --- /dev/null +++ b/README-PL.md @@ -0,0 +1,147 @@ +
+ +
+ +
+ +

+ Install + · + Configure + · + Docs +

+ + + +LazyVim to konfiguracja Neovim oparta na [💤 lazy.nvim](https://github.com/folke/lazy.nvim) +która ułatwia dostosowywanie i rozszerzanie konfiguracji. +Zamiast wybierać między rozpoczynaniem od zera a używaniem gotowej dystrybucji, LazyVim oferuje najlepsze z obu światów – elastyczność pozwalającą na dostosowanie konfiguracji do własnych potrzeb oraz wygodę wstępnie skonfigurowanego środowiska. + +![image](https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png) + +![image](https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png) + +## ✨ Funkcje + +- 🔥 Przekształć Neovim w pełnoprawne IDE +- 💤 Łatwo dostosowuj i rozszerzaj swoją konfigurację dzięki [lazy.nvim](https://github.com/folke/lazy.nvim) +- 🚀 Niezwykle szybkie działanie +- 🧹 Przemyślane domyślne ustawienia opcji, autocmd i skrótów klawiszowych +- 📦 Zawiera bogaty zestaw wstępnie skonfigurowanych wtyczek gotowych do użycia + +## ⚡️ Wymagania + +- Neovim >= **0.9.0** (musi być skompilowany z **LuaJIT**) +- Git >= **2.19.0** (dla obsługi częściowego klonowania repozytoriów) +- [Nerd Font](https://www.nerdfonts.com/) **_(opcjonalnie)_** +- Kompilator **C** wymagany dla `nvim-treesitter`. Szczegóły [tutaj](https://github.com/nvim-treesitter/nvim-treesitter#requirements) + +## 🚀 Pierwsze kroki + +Szablon startowy dla **LazyVim** znajdziesz [tutaj](https://github.com/LazyVim/starter) + +
Wypróbuj z Dockerem + +```sh +docker run -w /root -it --rm alpine:edge sh -uelic ' + apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update + git clone https://github.com/LazyVim/starter ~/.config/nvim + cd ~/.config/nvim + nvim +' +``` + +
+ +
Zainstaluj Starter LazyVim + +- Wykonaj kopię zapasową swoich obecnych plików Neovim: + + ```sh + mv ~/.config/nvim ~/.config/nvim.bak + mv ~/.local/share/nvim ~/.local/share/nvim.bak + ``` + +- Sklonuj repozytorium startowe: + + ```sh + git clone https://github.com/LazyVim/starter ~/.config/nvim + ``` + +- Usuń folder `.git`, aby później móc dodać własne repozytorium: + + ```sh + rm -rf ~/.config/nvim/.git + ``` + +- Uruchom Neovim! + + ```sh + nvim + ``` + + W plikach znajdziesz komentarze, które pomogą Ci dostosować **LazyVim**. + +
+ +--- + +[@elijahmanor](https://github.com/elijahmanor) stworzył świetne wideo z przewodnikiem, jak zacząć. + +[![Obejrzyj wideo](https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg)](https://www.youtube.com/watch?v=N93cTbtLCIM) + +[@dusty-phillips](https://github.com/dusty-phillips) napisał obszerną książkę +[LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes), +która jest dostępna za darmo online. + +## 📂 Struktura plików + +Pliki w katalogu `config` są automatycznie ładowane w odpowiednim momencie, +więc nie musisz ich ręcznie dołączać. +**LazyVim** zawiera zestaw domyślnych plików konfiguracyjnych, +które zostaną załadowane **_przed_** Twoimi własnymi. Szczegóły znajdziesz [tutaj](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config). + +Możesz dodać własne specyfikacje wtyczek w katalogu `lua/plugins/`. +Wszystkie pliki w tym folderze zostaną automatycznie załadowane przez [lazy.nvim](https://github.com/folke/lazy.nvim). + +
+~/.config/nvim
+├── lua
+│   ├── config
+│   │   ├── autocmds.lua
+│   │   ├── keymaps.lua
+│   │   ├── lazy.lua
+│   │   └── options.lua
+│   └── plugins
+│       ├── spec1.lua
+│       ├── **
+│       └── spec2.lua
+└── init.lua
+
+ +## ⚙️ Konfiguracja + +Zapoznaj się z [dokumentacją](https://lazyvim.github.io). From 8c5cc771071d6134cd225c4d4f0897ca80a354b3 Mon Sep 17 00:00:00 2001 From: Thomas Ung Date: Mon, 20 Oct 2025 09:01:17 +0200 Subject: [PATCH 108/171] docs(fr): add readme in french (#5300) ## Description Contribution for https://github.com/LazyVim/LazyVim/discussions/506 ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- README-FR.md | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 README-FR.md diff --git a/README-FR.md b/README-FR.md new file mode 100644 index 00000000..db06a251 --- /dev/null +++ b/README-FR.md @@ -0,0 +1,151 @@ +
+ +
+ +
+ +

+ Install + · + Configure + · + Docs +

+ + + +LazyVim est une configuration Neovim basée sur [💤 lazy.nvim](https://github.com/folke/lazy.nvim) +facilitant la personnalisation et l'ajout d'extensions. +Plutôt que d'imposer le choix entre partir de rien et utiliser +une distribution toute faite, LazyVim offre le meilleur des deux mondes +: la flexibilité d'une config ajustable selon vos besoins, et le confort +d'une configuration pensée et peaufinée à l'avance. + +![image](https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png) + +![image](https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png) + +## ✨ Fonctionnalités + +- 🔥 Transforme Neovim en un environnement de développement complet +- 💤 Customise et étends ta config sans effort grâce à [lazy.nvim](https://github.com/folke/lazy.nvim) +- 🚀 Rapide comme l'éclair ! +- 🧹 Configuration par défaut propre et intuitive pour les options, les autocmds, et les keymaps +- 📦 Livré avec une variété de plugins pre-configurés et prêts à être utilisés + +## ⚡️ Pré-requis + +- Neovim >= **0.9.0** (doit être compilé avec **LuaJIT**) +- Git >= **2.19.0** (pour supporter le clonage partiel) +- Un [Nerd Font](https://www.nerdfonts.com/) **_(optionel)_** +- Un compileur **C** pour `nvim-treesitter`. Voir [ici](https://github.com/nvim-treesitter/nvim-treesitter#requirements) + +## 🚀 Comment commencer + +Un template pour **LazyVim** peut être trouvé [ici](https://github.com/LazyVim/starter) + +
Essayer avec Docker + +```sh +docker run -w /root -it --rm alpine:edge sh -uelic ' + apk add git lazygit fzf curl neovim ripgrep alpine-sdk --update + git clone https://github.com/LazyVim/starter ~/.config/nvim + cd ~/.config/nvim + nvim +' +``` + +
+ +
Installer le LazyVim Starter + +- Sauvegardez votre configuration Neovim : + + ```sh + mv ~/.config/nvim ~/.config/nvim.bak + mv ~/.local/share/nvim ~/.local/share/nvim.bak + ``` + +- Clonez le starter + + ```sh + git clone https://github.com/LazyVim/starter ~/.config/nvim + ``` + +- Supprimez le dossier `.git`, afin que vous puissiez l'ajouter à votre repo plus tard + + ```sh + rm -rf ~/.config/nvim/.git + ``` + +- Lancez Neovim ! + + ```sh + nvim + ``` + + Consultez les commentaires dans les fichiers pour savoir comment personnaliser **LazyVim**. + +
+ +--- + +Il y a une superbe vidéo (en anglais) de [@elijahmanor](https://github.com/elijahmanor) +qui vous guide pas-à-pas pour commencer. + +[![Watch the video](https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg)](https://www.youtube.com/watch?v=N93cTbtLCIM) + +[@dusty-phillips](https://github.com/dusty-phillips) a écrit un livre exhaustif +sur LazyVim, nommé [LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes) +disponible gratuitement en ligne. + +## 📂 Structure de fichier + +Les fichiers dans le dossier config vont être chargés automatiquement en temps voulu, +donc pas besoin de `require` ces fichiers manuellement. +**LazyVim** vient avec un ensemble de fichiers de configuration par défaut qui seront chargés +**_avant_** les vôtres. Voir [ici](https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config) + +Vous pouvez ajouter vos configurations de plugins sous `lua/plugins/`. +Ici, tous les fichiers seront automatiquement chargés par [lazy.nvim](https://github.com/folke/lazy.nvim) + +
+~/.config/nvim
+├── lua
+│   ├── config
+│   │   ├── autocmds.lua
+│   │   ├── keymaps.lua
+│   │   ├── lazy.lua
+│   │   └── options.lua
+│   └── plugins
+│       ├── spec1.lua
+│       ├── **
+│       └── spec2.lua
+└── init.lua
+
+ +## ⚙️ Configuration + +Veuillez vous référer à la [documentation](https://lazyvim.github.io) From f118dca334d40cf8e78e0f0d5aa3108b972e8d84 Mon Sep 17 00:00:00 2001 From: Watson Dinh Date: Mon, 20 Oct 2025 02:04:35 -0500 Subject: [PATCH 109/171] fix(extras.lang): fix Scala extra by using nvimMetals only (#5726) ## Description Scala lang Extra should NOT be configured via `neovim/nvim-lspconfig`. This PR removes `neovim/nvim-lspconfig` config and replace it by `nvim-metals` only. From [nvim-metals README.md](https://github.com/scalameta/nvim-metals): _"NOTE: This plugin works without needing to install neovim/nvim-lspconfig. If you have it installed for other languages, that's not a problem, but make sure you do not have Metals configured through nvim-lspconfig while using this plugin"_ ## Related Issue(s) No specific issue, this is attempt to follow users guide of Scala nvim plugin : https://github.com/scalameta/nvim-metals ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/scala.lua | 116 +++++++++++----------- 1 file changed, 60 insertions(+), 56 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/scala.lua b/lua/lazyvim/plugins/extras/lang/scala.lua index 791b515a..3aed9b79 100644 --- a/lua/lazyvim/plugins/extras/lang/scala.lua +++ b/lua/lazyvim/plugins/extras/lang/scala.lua @@ -11,66 +11,70 @@ return { }, { "scalameta/nvim-metals", - ft = { "scala", "sbt" }, - config = function() end, - }, - { - "neovim/nvim-lspconfig", - opts = { - servers = { - metals = { - keys = { - { - "me", - function() - require("telescope").extensions.metals.commands() - end, - desc = "Metals commands", - }, - { - "mc", - function() - require("metals").compile_cascade() - end, - desc = "Metals compile cascade", - }, - { - "mh", - function() - require("metals").hover_worksheet() - end, - desc = "Metals hover worksheet", - }, - }, - init_options = { - statusBarProvider = "off", - }, - settings = { - showImplicitArguments = true, - excludedPackages = { "akka.actor.typed.javadsl", "com.github.swagger.akka.javadsl" }, - }, - }, - }, - setup = { - metals = function(_, opts) - local metals = require("metals") - local metals_config = vim.tbl_deep_extend("force", metals.bare_config(), opts) - metals_config.on_attach = LazyVim.has("nvim-dap") and metals.setup_dap or nil - - local nvim_metals_group = vim.api.nvim_create_augroup("nvim-metals", { clear = true }) - vim.api.nvim_create_autocmd("FileType", { - pattern = { "scala", "sbt" }, - callback = function() - metals.initialize_or_attach(metals_config) - end, - group = nvim_metals_group, - }) - return true + dependencies = { + "nvim-lua/plenary.nvim", + }, + keys = { + { + "me", + function() + require("telescope").extensions.metals.commands() end, + desc = "Metals commands", + }, + { + "mc", + function() + require("metals").compile_cascade() + end, + desc = "Metals compile cascade", + }, + { + "mh", + function() + require("metals").hover_worksheet() + end, + desc = "Metals hover worksheet", }, }, - }, + ft = { "scala", "sbt", "java" }, + opts = function() + local metals_config = require("metals").bare_config() + metals_config.init_options.statusBarProvider = "off" + + metals_config.settings = { + verboseCompilation = true, + showImplicitArguments = true, + showImplicitConversionsAndClasses = true, + showInferredType = true, + superMethodLensesEnabled = true, + excludedPackages = { + "akka.actor.typed.javadsl", + "org.apache.pekko.actor.typed.javadsl", + "com.github.swagger.akka.javadsl", + }, + testUserInterface = "Test Explorer", + } + + metals_config.on_attach = function(client, bufnr) + -- your on_attach function + require("metals").setup_dap() + end + + return metals_config + end, + config = function(self, metals_config) + local nvim_metals_group = vim.api.nvim_create_augroup("nvim-metals", { clear = true }) + vim.api.nvim_create_autocmd("FileType", { + pattern = self.ft, + callback = function() + require("metals").initialize_or_attach(metals_config) + end, + group = nvim_metals_group, + }) + end, + }, { "mfussenegger/nvim-dap", optional = true, From 83468be35062d06896c233d90d2f1c1cd24d84f3 Mon Sep 17 00:00:00 2001 From: Yiqian Liu Date: Mon, 20 Oct 2025 08:10:08 +0100 Subject: [PATCH 110/171] fix(keymap): remove select mode remaps of printable characters (#6296) ## Description Most of the "visual mode" mappings use "v" instead of "x", and therefore also affect select mode. If the key is a printable character, it is now unusable in select mode. This is most prominent with ``, which is space by default, a printable character. The most common use of select mode is when it is automatically triggered by snippets. Currently, trying to type space, g, <, >, etc. as the first character of a snippet field will trigger their bind instead of actually inserting the character. I cannot currently think of any good reason why anyone would rely on using select mode to execute any of these mapped actions. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/config/keymaps.lua | 6 +++--- lua/lazyvim/plugins/editor.lua | 8 ++++---- lua/lazyvim/plugins/extras/ai/copilot-chat.lua | 10 +++++----- lua/lazyvim/plugins/extras/coding/mini-surround.lua | 2 +- lua/lazyvim/plugins/extras/dap/core.lua | 2 +- lua/lazyvim/plugins/extras/editor/dial.lua | 4 ++-- lua/lazyvim/plugins/extras/editor/fzf.lua | 4 ++-- lua/lazyvim/plugins/extras/editor/telescope.lua | 4 ++-- lua/lazyvim/plugins/extras/lang/clojure.lua | 4 ++-- lua/lazyvim/plugins/extras/lang/java.lua | 2 +- lua/lazyvim/plugins/extras/lang/r.lua | 4 ++-- lua/lazyvim/plugins/formatting.lua | 2 +- lua/lazyvim/plugins/lsp/keymaps.lua | 4 ++-- 13 files changed, 28 insertions(+), 28 deletions(-) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index d8d7a10f..52bb9e9f 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -81,8 +81,8 @@ map({ "i", "x", "n", "s" }, "", "w", { desc = "Save File" }) map("n", "K", "norm! K", { desc = "Keywordprg" }) -- better indenting -map("v", "<", "", ">gv") +map("x", "<", "", ">gv") -- commenting map("n", "gco", "oVcxnormal gccfxa", { desc = "Add Comment Below" }) @@ -114,7 +114,7 @@ map("n", "[q", vim.cmd.cprev, { desc = "Previous Quickfix" }) map("n", "]q", vim.cmd.cnext, { desc = "Next Quickfix" }) -- formatting -map({ "n", "v" }, "cf", function() +map({ "n", "x" }, "cf", function() LazyVim.format({ force = true }) end, { desc = "Format" }) diff --git a/lua/lazyvim/plugins/editor.lua b/lua/lazyvim/plugins/editor.lua index 6e2c894e..ce7a068c 100644 --- a/lua/lazyvim/plugins/editor.lua +++ b/lua/lazyvim/plugins/editor.lua @@ -18,7 +18,7 @@ return { }, }) end, - mode = { "n", "v" }, + mode = { "n", "x" }, desc = "Search and Replace", }, }, @@ -64,7 +64,7 @@ return { defaults = {}, spec = { { - mode = { "n", "v" }, + mode = { "n", "x" }, { "", group = "tabs" }, { "c", group = "code" }, { "d", group = "debug" }, @@ -173,8 +173,8 @@ return { end, "Prev Hunk") map("n", "]H", function() gs.nav_hunk("last") end, "Last Hunk") map("n", "[H", function() gs.nav_hunk("first") end, "First Hunk") - map({ "n", "v" }, "ghs", ":Gitsigns stage_hunk", "Stage Hunk") - map({ "n", "v" }, "ghr", ":Gitsigns reset_hunk", "Reset Hunk") + map({ "n", "x" }, "ghs", ":Gitsigns stage_hunk", "Stage Hunk") + map({ "n", "x" }, "ghr", ":Gitsigns reset_hunk", "Reset Hunk") map("n", "ghS", gs.stage_buffer, "Stage Buffer") map("n", "ghu", gs.undo_stage_hunk, "Undo Stage Hunk") map("n", "ghR", gs.reset_buffer, "Reset Buffer") diff --git a/lua/lazyvim/plugins/extras/ai/copilot-chat.lua b/lua/lazyvim/plugins/extras/ai/copilot-chat.lua index 4c350b4e..536a4e62 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-chat.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-chat.lua @@ -20,14 +20,14 @@ return { end, keys = { { "", "", ft = "copilot-chat", desc = "Submit Prompt", remap = true }, - { "a", "", desc = "+ai", mode = { "n", "v" } }, + { "a", "", desc = "+ai", mode = { "n", "x" } }, { "aa", function() return require("CopilotChat").toggle() end, desc = "Toggle (CopilotChat)", - mode = { "n", "v" }, + mode = { "n", "x" }, }, { "ax", @@ -35,7 +35,7 @@ return { return require("CopilotChat").reset() end, desc = "Clear (CopilotChat)", - mode = { "n", "v" }, + mode = { "n", "x" }, }, { "aq", @@ -49,7 +49,7 @@ return { end) end, desc = "Quick Chat (CopilotChat)", - mode = { "n", "v" }, + mode = { "n", "x" }, }, { "ap", @@ -57,7 +57,7 @@ return { require("CopilotChat").select_prompt() end, desc = "Prompt Actions (CopilotChat)", - mode = { "n", "v" }, + mode = { "n", "x" }, }, }, config = function(_, opts) diff --git a/lua/lazyvim/plugins/extras/coding/mini-surround.lua b/lua/lazyvim/plugins/extras/coding/mini-surround.lua index 19c5de8f..bea4ece7 100644 --- a/lua/lazyvim/plugins/extras/coding/mini-surround.lua +++ b/lua/lazyvim/plugins/extras/coding/mini-surround.lua @@ -8,7 +8,7 @@ return { -- Populate the keys based on the user's options local opts = LazyVim.opts("mini.surround") local mappings = { - { opts.mappings.add, desc = "Add Surrounding", mode = { "n", "v" } }, + { opts.mappings.add, desc = "Add Surrounding", mode = { "n", "x" } }, { opts.mappings.delete, desc = "Delete Surrounding" }, { opts.mappings.find, desc = "Find Right Surrounding" }, { opts.mappings.find_left, desc = "Find Left Surrounding" }, diff --git a/lua/lazyvim/plugins/extras/dap/core.lua b/lua/lazyvim/plugins/extras/dap/core.lua index d84b71bf..aaabce8d 100644 --- a/lua/lazyvim/plugins/extras/dap/core.lua +++ b/lua/lazyvim/plugins/extras/dap/core.lua @@ -84,7 +84,7 @@ return { -- stylua: ignore keys = { { "du", function() require("dapui").toggle({ }) end, desc = "Dap UI" }, - { "de", function() require("dapui").eval() end, desc = "Eval", mode = {"n", "v"} }, + { "de", function() require("dapui").eval() end, desc = "Eval", mode = {"n", "x"} }, }, opts = {}, config = function(_, opts) diff --git a/lua/lazyvim/plugins/extras/editor/dial.lua b/lua/lazyvim/plugins/extras/editor/dial.lua index 602b747c..7a9a76ae 100644 --- a/lua/lazyvim/plugins/extras/editor/dial.lua +++ b/lua/lazyvim/plugins/extras/editor/dial.lua @@ -19,8 +19,8 @@ return { keys = { { "", function() return M.dial(true) end, expr = true, desc = "Increment", mode = {"n", "v"} }, { "", function() return M.dial(false) end, expr = true, desc = "Decrement", mode = {"n", "v"} }, - { "g", function() return M.dial(true, true) end, expr = true, desc = "Increment", mode = {"n", "v"} }, - { "g", function() return M.dial(false, true) end, expr = true, desc = "Decrement", mode = {"n", "v"} }, + { "g", function() return M.dial(true, true) end, expr = true, desc = "Increment", mode = {"n", "x"} }, + { "g", function() return M.dial(false, true) end, expr = true, desc = "Decrement", mode = {"n", "x"} }, }, opts = function() local augend = require("dial.augend") diff --git a/lua/lazyvim/plugins/extras/editor/fzf.lua b/lua/lazyvim/plugins/extras/editor/fzf.lua index 5e10fc58..46e99ace 100644 --- a/lua/lazyvim/plugins/extras/editor/fzf.lua +++ b/lua/lazyvim/plugins/extras/editor/fzf.lua @@ -253,8 +253,8 @@ return { { "sq", "FzfLua quickfix", desc = "Quickfix List" }, { "sw", LazyVim.pick("grep_cword"), desc = "Word (Root Dir)" }, { "sW", LazyVim.pick("grep_cword", { root = false }), desc = "Word (cwd)" }, - { "sw", LazyVim.pick("grep_visual"), mode = "v", desc = "Selection (Root Dir)" }, - { "sW", LazyVim.pick("grep_visual", { root = false }), mode = "v", desc = "Selection (cwd)" }, + { "sw", LazyVim.pick("grep_visual"), mode = "x", desc = "Selection (Root Dir)" }, + { "sW", LazyVim.pick("grep_visual", { root = false }), mode = "x", desc = "Selection (cwd)" }, { "uC", LazyVim.pick("colorschemes"), desc = "Colorscheme with Preview" }, { "ss", diff --git a/lua/lazyvim/plugins/extras/editor/telescope.lua b/lua/lazyvim/plugins/extras/editor/telescope.lua index 685f9ec5..0f5ee474 100644 --- a/lua/lazyvim/plugins/extras/editor/telescope.lua +++ b/lua/lazyvim/plugins/extras/editor/telescope.lua @@ -136,8 +136,8 @@ return { { "sq", "Telescope quickfix", desc = "Quickfix List" }, { "sw", LazyVim.pick("grep_string", { word_match = "-w" }), desc = "Word (Root Dir)" }, { "sW", LazyVim.pick("grep_string", { root = false, word_match = "-w" }), desc = "Word (cwd)" }, - { "sw", LazyVim.pick("grep_string"), mode = "v", desc = "Selection (Root Dir)" }, - { "sW", LazyVim.pick("grep_string", { root = false }), mode = "v", desc = "Selection (cwd)" }, + { "sw", LazyVim.pick("grep_string"), mode = "x", desc = "Selection (Root Dir)" }, + { "sW", LazyVim.pick("grep_string", { root = false }), mode = "x", desc = "Selection (cwd)" }, { "uC", LazyVim.pick("colorscheme", { enable_preview = true }), desc = "Colorscheme with Preview" }, { "ss", diff --git a/lua/lazyvim/plugins/extras/lang/clojure.lua b/lua/lazyvim/plugins/extras/lang/clojure.lua index c7af0b55..4c47c623 100644 --- a/lua/lazyvim/plugins/extras/lang/clojure.lua +++ b/lua/lazyvim/plugins/extras/lang/clojure.lua @@ -76,13 +76,13 @@ return { end vim.keymap.set( - { "n", "v" }, + { "n", "x" }, "[c", "call search('^; -\\+$', 'bw')", { silent = true, buffer = true, desc = "Jumps to the begining of previous evaluation output." } ) vim.keymap.set( - { "n", "v" }, + { "n", "x" }, "]c", "call search('^; -\\+$', 'w')", { silent = true, buffer = true, desc = "Jumps to the begining of next evaluation output." } diff --git a/lua/lazyvim/plugins/extras/lang/java.lua b/lua/lazyvim/plugins/extras/lang/java.lua index 72f31a63..b86688b1 100644 --- a/lua/lazyvim/plugins/extras/lang/java.lua +++ b/lua/lazyvim/plugins/extras/lang/java.lua @@ -209,7 +209,7 @@ return { }) wk.add({ { - mode = "v", + mode = "x", buffer = args.buf, { "cx", group = "extract" }, { diff --git a/lua/lazyvim/plugins/extras/lang/r.lua b/lua/lazyvim/plugins/extras/lang/r.lua index f8feb0ea..5890b415 100644 --- a/lua/lazyvim/plugins/extras/lang/r.lua +++ b/lua/lazyvim/plugins/extras/lang/r.lua @@ -17,12 +17,12 @@ return { -- of files supported by R.nvim. This is an -- opportunity to create mappings local to buffers. vim.keymap.set("n", "", "RDSendLine", { buffer = true }) - vim.keymap.set("v", "", "RSendSelection", { buffer = true }) + vim.keymap.set("x", "", "RSendSelection", { buffer = true }) local wk = require("which-key") wk.add({ buffer = true, - mode = { "n", "v" }, + mode = { "n", "x" }, { "a", group = "all" }, { "b", group = "between marks" }, { "c", group = "chunks" }, diff --git a/lua/lazyvim/plugins/formatting.lua b/lua/lazyvim/plugins/formatting.lua index ae32c0ef..9aee291e 100644 --- a/lua/lazyvim/plugins/formatting.lua +++ b/lua/lazyvim/plugins/formatting.lua @@ -29,7 +29,7 @@ return { function() require("conform").format({ formatters = { "injected" }, timeout_ms = 3000 }) end, - mode = { "n", "v" }, + mode = { "n", "x" }, desc = "Format Injected Langs", }, }, diff --git a/lua/lazyvim/plugins/lsp/keymaps.lua b/lua/lazyvim/plugins/lsp/keymaps.lua index 9cde08c1..63be2902 100644 --- a/lua/lazyvim/plugins/lsp/keymaps.lua +++ b/lua/lazyvim/plugins/lsp/keymaps.lua @@ -22,8 +22,8 @@ function M.get() { "K", function() return vim.lsp.buf.hover() end, desc = "Hover" }, { "gK", function() return vim.lsp.buf.signature_help() end, desc = "Signature Help", has = "signatureHelp" }, { "", 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", "v" }, has = "codeAction" }, - { "cc", vim.lsp.codelens.run, desc = "Run Codelens", mode = { "n", "v" }, has = "codeLens" }, + { "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" }, From 8db9c75e8d3a8609926dcb868d2e462e0f0b1d3d Mon Sep 17 00:00:00 2001 From: Jose Storopoli Date: Mon, 20 Oct 2025 02:47:54 -0500 Subject: [PATCH 111/171] feat(extras): utils: add `gh.nvim` (#6250) ## Description Adds [`gh.nvim`](https://github.com/ldelossa/gh.nvim) to the extras. `gh.nvim` brings a way richer reviewer interface to NeoVim by supporting LSP and treesitter natively in review diff buffers. I've been using successfully for a couple weeks instead of `Octo.nvim`. ## Related Issue(s) None ## Screenshots CleanShot 2025-07-13 at 08 02 10@2x ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --------- Co-authored-by: Folke Lemaitre --- lua/lazyvim/plugins/extras/util/gh.lua | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/util/gh.lua diff --git a/lua/lazyvim/plugins/extras/util/gh.lua b/lua/lazyvim/plugins/extras/util/gh.lua new file mode 100644 index 00000000..a869227e --- /dev/null +++ b/lua/lazyvim/plugins/extras/util/gh.lua @@ -0,0 +1,51 @@ +return { + + -- depends on the git extra for highlighting and auto-completion of github issues/prs + { import = "lazyvim.plugins.extras.lang.git" }, + + { "ldelossa/litee.nvim", lazy = true }, + + -- gh.nvim + { + "ldelossa/gh.nvim", + opts = {}, + config = function(_, opts) + require("litee.lib").setup() + require("litee.gh").setup(opts) + end, + keys = { + { "G", "", desc = "+Github" }, + { "Gc", "", desc = "+Commits" }, + { "Gcc", "GHCloseCommit", desc = "Close" }, + { "Gce", "GHExpandCommit", desc = "Expand" }, + { "Gco", "GHOpenToCommit", desc = "Open To" }, + { "Gcp", "GHPopOutCommit", desc = "Pop Out" }, + { "Gcz", "GHCollapseCommit", desc = "Collapse" }, + { "Gi", "", desc = "+Issues" }, + { "Gip", "GHPreviewIssue", desc = "Preview" }, + { "Gio", "GHOpenIssue", desc = "Open" }, + { "Gl", "", desc = "+Litee" }, + { "Glt", "LTPanel", desc = "Toggle Panel" }, + { "Gp", "", desc = "+Pull Request" }, + { "Gpc", "GHClosePR", desc = "Close" }, + { "Gpd", "GHPRDetails", desc = "Details" }, + { "Gpe", "GHExpandPR", desc = "Expand" }, + { "Gpo", "GHOpenPR", desc = "Open" }, + { "Gpp", "GHPopOutPR", desc = "PopOut" }, + { "Gpr", "GHRefreshPR", desc = "Refresh" }, + { "Gpt", "GHOpenToPR", desc = "Open To" }, + { "Gpz", "GHCollapsePR", desc = "Collapse" }, + { "Gr", "", desc = "+Review" }, + { "Grb", "GHStartReview", desc = "Begin" }, + { "Grc", "GHCloseReview", desc = "Close" }, + { "Grd", "GHDeleteReview", desc = "Delete" }, + { "Gre", "GHExpandReview", desc = "Expand" }, + { "Grs", "GHSubmitReview", desc = "Submit" }, + { "Grz", "GHCollapseReview", desc = "Collapse" }, + { "Gt", "", desc = "+Threads" }, + { "Gtc", "GHCreateThread", desc = "Create" }, + { "Gtn", "GHNextThread", desc = "Next" }, + { "Gtt", "GHToggleThread", desc = "Toggle" }, + }, + }, +} From 82382f455ad37bc4fa928fe4a6fb9379a924fa3a Mon Sep 17 00:00:00 2001 From: Jose Storopoli Date: Mon, 20 Oct 2025 03:17:31 -0500 Subject: [PATCH 112/171] feat(haskell): update `haskell-tools` version and add formatters + linters (#6230) ## Description - Updates `haskell-tools` to use the recommended version in the plugin's README - Adds `ormolu` as a formatter - Adds keybindings for `haskell-tools` that does not conflict with LazyVim's defaults. ## Related Issue(s) - https://github.com/LazyVim/LazyVim/discussions/3325#discussioncomment-9562683: adds `ormolu` formatter. - https://github.com/LazyVim/LazyVim/pull/2052#issuecomment-2881764491: @mrcjkb keeps getting bug reports because the version is still in `3` and should be updated to `6`. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --------- Co-authored-by: Folke Lemaitre Co-authored-by: Claude --- lua/lazyvim/plugins/extras/lang/haskell.lua | 92 ++++++++++++++++----- 1 file changed, 73 insertions(+), 19 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/haskell.lua b/lua/lazyvim/plugins/extras/lang/haskell.lua index 48634f2d..cf4f3db6 100644 --- a/lua/lazyvim/plugins/extras/lang/haskell.lua +++ b/lua/lazyvim/plugins/extras/lang/haskell.lua @@ -14,17 +14,40 @@ return { { "mrcjkb/haskell-tools.nvim", - version = "^3", + version = false, ft = { "haskell", "lhaskell", "cabal", "cabalproject" }, - dependencies = { - { "nvim-telescope/telescope.nvim", optional = true }, + keys = { + { + "e", + "HlsEvalAll", + ft = "haskell", + desc = "Evaluate All", + }, + { + "h", + function() + require("haskell-tools").hoogle.hoogle_signature() + end, + ft = "haskell", + desc = "Hoogle Signature", + }, + { + "r", + function() + require("haskell-tools").repl.toggle() + end, + ft = "haskell", + desc = "REPL (Package)", + }, + { + "R", + function() + require("haskell-tools").repl.toggle(vim.api.nvim_buf_get_name(0)) + end, + ft = "haskell", + desc = "REPL (Buffer)", + }, }, - config = function() - local ok, telescope = pcall(require, "telescope") - if ok then - telescope.load_extension("ht") - end - end, }, { @@ -67,17 +90,48 @@ return { }, { - "luc-tielen/telescope_hoogle", - ft = { "haskell", "lhaskell", "cabal", "cabalproject" }, - dependencies = { - { "nvim-telescope/telescope.nvim", optional = true }, + "nvim-telescope/telescope.nvim", + optional = true, + specs = { + { + "luc-tielen/telescope_hoogle", + ft = { "haskell", "lhaskell", "cabal", "cabalproject" }, + opts = function() + LazyVim.on_load("telescope.nvim", function() + require("telescope").load_extension("ht") + end) + end, + keys = { + { + "H", + "Telescope hoogle", + ft = "haskell", + desc = "Hoogle", + }, + }, + }, + }, + }, + + { + "stevearc/conform.nvim", + optional = true, + opts = { + formatters_by_ft = { + haskell = { "fourmolu" }, + cabal = { "cabal_fmt" }, + }, + }, + }, + + { + "mfussenegger/nvim-lint", + optional = true, + opts = { + linters_by_ft = { + haskell = { "hlint" }, + }, }, - config = function() - local ok, telescope = pcall(require, "telescope") - if ok then - telescope.load_extension("hoogle") - end - end, }, -- Make sure lspconfig doesn't start hls, From a6eb51e5b5897749bed8721ce98cd2491b2ea8e2 Mon Sep 17 00:00:00 2001 From: Halibut Git Wiz <19535471+HalibutGitWiz@users.noreply.github.com> Date: Mon, 20 Oct 2025 08:19:38 +0000 Subject: [PATCH 113/171] feat(extras): added twig language (#5464) ## Description Adds Twig templates language support as en extra. Explanation for the tools choices: - Linter/formatter: Twigcs and Twig-cs-fixer both follow the [coding standards](https://twig.symfony.com/doc/3.x/coding_standards.html) recommended by the Symfony Project, maintainers of Twig. - LSP: I don't know it Twiggy is considered a standard in the community. I picked it because it's the only server specific to Twig. The other options are HTML servers that also include support for several templates languages. I've been using it for a while and it works fine. It adds much needed snippets (Twig syntax involves tags that are difficult to type on most keyboards) and does not conflict with Twigcs diagnostics. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --------- Co-authored-by: tw --- lua/lazyvim/plugins/extras/lang/twig.lua | 58 ++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/lang/twig.lua diff --git a/lua/lazyvim/plugins/extras/lang/twig.lua b/lua/lazyvim/plugins/extras/lang/twig.lua new file mode 100644 index 00000000..ad2f260f --- /dev/null +++ b/lua/lazyvim/plugins/extras/lang/twig.lua @@ -0,0 +1,58 @@ +return { + recommended = function() + return LazyVim.extras.wants({ + ft = "twig", + }) + end, + { + "nvim-treesitter/nvim-treesitter", + opts = { ensure_installed = { "twig" } }, + }, + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "twigcs", + "twig-cs-fixer", + }, + }, + }, + { + "neovim/nvim-lspconfig", + opts = { + servers = { + twiggy_language_server = { + enabled = true, + }, + }, + }, + }, + { + "nvimtools/none-ls.nvim", + optional = true, + opts = function(_, opts) + local nls = require("null-ls") + opts.sources = opts.sources or {} + table.insert(opts.sources, nls.builtins.diagnostics.twigcs) + -- Twig-CS-Fixer builtin not available in none-ls + end, + }, + { + "mfussenegger/nvim-lint", + optional = true, + opts = { + linters_by_ft = { + twig = { "twigcs" }, + }, + }, + }, + { + "stevearc/conform.nvim", + optional = true, + opts = { + formatters_by_ft = { + twig = { "twig-cs-fixer" }, + }, + }, + }, +} From 645846be5c7d798c7e87e61d00e8cae4fd3741c7 Mon Sep 17 00:00:00 2001 From: Vo Quang Chien Date: Mon, 20 Oct 2025 15:23:30 +0700 Subject: [PATCH 114/171] feat(lang): add Typst language support (#4042) ## Description This pull request introduces robust support for the [Typst](https://github.com/typst/typst) language in LazyVim, enhancing the Typst editing experience with several integrated tools: 1. **LSP Support**: Integrate with [tinymist](https://github.com/Myriad-Dreamin/tinymist) provides comprehensive LSP support. 2. **Code Formatting**: Integrate with [typstyle](https://github.com/Enter-tainer/typstyle) for code formatting. 3. **Preview Support**: Added [typst-preview.nvim](https://github.com/chomosuke/typst-preview.nvim) for live preview of Typst documents. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --------- Co-authored-by: Jose Storopoli Co-authored-by: Stefan Boca <45266795+stefanboca@users.noreply.github.com> Co-authored-by: Folke Lemaitre --- lua/lazyvim/plugins/extras/lang/typst.lua | 80 +++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/lang/typst.lua diff --git a/lua/lazyvim/plugins/extras/lang/typst.lua b/lua/lazyvim/plugins/extras/lang/typst.lua new file mode 100644 index 00000000..099a6861 --- /dev/null +++ b/lua/lazyvim/plugins/extras/lang/typst.lua @@ -0,0 +1,80 @@ +return { + recommended = function() + return LazyVim.extras.wants({ + ft = { "typst" }, + }) + end, + + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { "typst" }, + }, + }, + + { + "neovim/nvim-lspconfig", + opts = { + servers = { + tinymist = { + keys = { + { + "cP", + function() + local buf_name = vim.api.nvim_buf_get_name(0) + local file_name = vim.fn.fnamemodify(buf_name, ":t") + LazyVim.lsp.execute({ + command = "tinymist.pinMain", + arguments = { buf_name }, + }) + LazyVim.info("Tinymist: Pinned " .. file_name) + end, + desc = "Pin main file", + }, + }, + single_file_support = true, -- Fixes LSP attachment in non-Git directories + settings = { + formatterMode = "typstyle", + }, + }, + }, + }, + }, + + { + "stevearc/conform.nvim", + optional = true, + opts = { + formatters_by_ft = { + typst = { "typstyle", lsp_format = "prefer" }, + }, + }, + }, + + { + "chomosuke/typst-preview.nvim", + cmd = { "TypstPreview", "TypstPreviewToggle", "TypstPreviewUpdate" }, + keys = { + { + "cp", + ft = "typst", + "TypstPreviewToggle", + desc = "Toggle Typst Preview", + }, + }, + opts = { + dependencies_bin = { + tinymist = "tinymist", + }, + }, + }, + + { + "folke/ts-comments.nvim", + opts = { + lang = { + typst = { "// %s", "/* %s */" }, + }, + }, + }, +} From 5d186c009a85efbdad2b92115d4268c7c4a7aa18 Mon Sep 17 00:00:00 2001 From: Jose Storopoli Date: Mon, 20 Oct 2025 03:24:12 -0500 Subject: [PATCH 115/171] feat(lang): julia support (#6231) ## Description - Another take on #4436. - Adds LSP - Adds cmp and blink.cmp for LaTeX symbols ## Related Issue(s) #5455 ## Screenshots ![CleanShot 2025-07-05 at 08 05 01@2x](https://github.com/user-attachments/assets/36a6e5ac-2632-4a33-af9e-674b7f1b750d) ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/julia.lua | 66 +++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/lang/julia.lua diff --git a/lua/lazyvim/plugins/extras/lang/julia.lua b/lua/lazyvim/plugins/extras/lang/julia.lua new file mode 100644 index 00000000..067be457 --- /dev/null +++ b/lua/lazyvim/plugins/extras/lang/julia.lua @@ -0,0 +1,66 @@ +return { + recommended = function() + return LazyVim.extras.wants({ + ft = { "julia" }, + root = { "Project.toml" }, + }) + end, + + { + "nvim-treesitter/nvim-treesitter", + opts = { ensure_installed = { "julia" } }, + }, + + { + "neovim/nvim-lspconfig", + opts = { + servers = { + julials = { + settings = { + -- use the same default settings as the Julia VS Code extension + julia = { + completionmode = "qualify", + lint = { missingrefs = "none" }, + }, + }, + }, + }, + }, + }, + + -- cmp integration + { + "hrsh7th/nvim-cmp", + optional = true, + dependencies = { "kdheepak/cmp-latex-symbols" }, + opts = function(_, opts) + table.insert(opts.sources, { + name = "latex_symbols", + option = { + strategy = 0, -- mixed + }, + }) + end, + }, + + -- blink.cmp integration + { + "saghen/blink.cmp", + optional = true, + dependencies = { "kdheepak/cmp-latex-symbols", "saghen/blink.compat" }, + opts = { + sources = { + compat = { "latex_symbols" }, + providers = { + latex_symbols = { + kind = "LatexSymbols", + async = true, + opts = { + strategy = 0, -- mixed + }, + }, + }, + }, + }, + }, +} From 2682ce0ab95c0a88867855ada41948107db8232e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?George=20Guimar=C3=A3es?= Date: Mon, 20 Oct 2025 05:47:17 -0300 Subject: [PATCH 116/171] feat(ai): add avante.nvim for a better AI experience (#4440) I switched over to https://github.com/yetone/avante.nvim and I think this is the best experience in terms of UI and easiness to add patches to your code. I'm recommending it to everyone. ~~However, I couldn't make render-markdown to work on Avante. It seems that my spec here is running before the one defined in extras/lang/markdown.lua and getting overwritten even though I added `optional = true`. I'll try to dig in deeper, but if someone has any pointers, I'd appreciate it.~~ - Fixes #4394 --------- Co-authored-by: PatMulligan <43773168+PatMulligan@users.noreply.github.com> Co-authored-by: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Co-authored-by: Folke Lemaitre Co-authored-by: Claude --- lua/lazyvim/plugins/extras/ai/avante.lua | 86 ++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/ai/avante.lua diff --git a/lua/lazyvim/plugins/extras/ai/avante.lua b/lua/lazyvim/plugins/extras/ai/avante.lua new file mode 100644 index 00000000..2a11c87d --- /dev/null +++ b/lua/lazyvim/plugins/extras/ai/avante.lua @@ -0,0 +1,86 @@ +return { + { "MunifTanjim/nui.nvim", lazy = true }, + + { + "yetone/avante.nvim", + build = vim.fn.has("win32") ~= 0 and "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" + or "make", + event = "VeryLazy", + opts = { + provider = "copilot", + selection = { + hint_display = "none", + }, + }, + cmd = { + "AvanteAsk", + "AvanteBuild", + "AvanteChat", + "AvanteClear", + "AvanteEdit", + "AvanteFocus", + "AvanteHistory", + "AvanteModels", + "AvanteRefresh", + "AvanteShowRepoMap", + "AvanteStop", + "AvanteSwitchProvider", + "AvanteToggle", + }, + keys = { + { "n", "aa", "AvanteAsk", desc = "Ask Avante" }, + { "n", "ac", "AvanteChat", desc = "Chat with Avante" }, + { "n", "ae", "AvanteEdit", desc = "Edit Avante" }, + { "n", "af", "AvanteFocus", desc = "Focus Avante" }, + { "n", "ah", "AvanteHistory", desc = "Avante History" }, + { "n", "am", "AvanteModels", desc = "Select Avante Model" }, + { "n", "an", "AvanteChatNew", desc = "New Avante Chat" }, + { "n", "ap", "AvanteSwitchProvider", desc = "Switch Avante Provider" }, + { "n", "ar", "AvanteRefresh", desc = "Refresh Avante" }, + { "n", "as", "AvanteStop", desc = "Stop Avante" }, + { "n", "at", "AvanteToggle", desc = "Toggle Avante" }, + }, + }, + + -- support for image pasting + { + "HakonHarnes/img-clip.nvim", + event = "VeryLazy", + optional = true, + opts = { + -- recommended settings + default = { + embed_image_as_base64 = false, + prompt_for_file_name = false, + drag_and_drop = { + insert_mode = true, + }, + -- required for Windows users + use_absolute_path = true, + }, + }, + }, + + -- Make sure to set this up properly if you have lazy=true + { + "MeanderingProgrammer/render-markdown.nvim", + optional = true, + opts = { + file_types = { "markdown", "Avante" }, + }, + ft = { "markdown", "Avante" }, + }, + + -- blink.cmp source for avante.nvim + { + "saghen/blink.cmp", + optional = true, + specs = { "Kaiser-Yang/blink-cmp-avante" }, + opts = { + sources = { + default = { "avante" }, + providers = { avante = { module = "blink-cmp-avante", name = "Avante" } }, + }, + }, + }, +} From 64377ba4de92efe293b9cf1fd79eb73a021dc010 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 10:55:05 +0200 Subject: [PATCH 117/171] test: detect old refs to plugins in extras --- tests/extras/extra_spec.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/extras/extra_spec.lua b/tests/extras/extra_spec.lua index 2aa30179..f383c4b9 100644 --- a/tests/extras/extra_spec.lua +++ b/tests/extras/extra_spec.lua @@ -1,4 +1,5 @@ ---@module 'luassert' +---@module 'lazy' local Icons = require("mini.icons") @@ -72,6 +73,17 @@ describe("Extra", function() { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = {} } }, mod, }, { optional = true }) + + it("it has no renamed plugins", function() + for _, p in pairs(spec.plugins) do + local short_url = p[1] + assert( + not LazyVim.plugin.renames[short_url], + "Plugin " .. short_url .. " has been renamed to " .. (LazyVim.plugin.renames[short_url] or "") + ) + end + end) + local lspconfig = spec.plugins["nvim-lspconfig"] if lspconfig then it("does not install LSP servers with mason.nvim", function() From 9d345dec446f577f75d36a147164ae258ffc2d8c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 10:55:37 +0200 Subject: [PATCH 118/171] fix(twig): correct mason url --- lua/lazyvim/plugins/extras/lang/twig.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/twig.lua b/lua/lazyvim/plugins/extras/lang/twig.lua index ad2f260f..b4643fb7 100644 --- a/lua/lazyvim/plugins/extras/lang/twig.lua +++ b/lua/lazyvim/plugins/extras/lang/twig.lua @@ -9,7 +9,7 @@ return { opts = { ensure_installed = { "twig" } }, }, { - "williamboman/mason.nvim", + "mason-org/mason.nvim", opts = { ensure_installed = { "twigcs", From d2f9885d6b8244818066cc16a5c72cb656748f6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn=20Vatn?= Date: Mon, 20 Oct 2025 11:07:12 +0200 Subject: [PATCH 119/171] fix(tailwind): additional settings (#5266) Make it possible to define your own tailwind settings in opts, and merge them with the default, additional Phoenix settings in tailwind.lua ## Description Add the possibility to add your own tailwind settings in opts and have them deep merged into the default `opts.settings` I needed this for configuring support for tailwind when coding on a [htmgo](https://htmgo.dev/docs/misc/tailwind-intellisense) project in Neovim. E.g. ```lua return { "neovim/nvim-lspconfig", opts = { servers = { tailwindcss = { filetypes_include = { "go" }, settings = { tailwindCSS = { includeLanguages = { go = "html", }, experimental = { classRegex = { { "Class\\(([^)]*)\\)", '["`]([^"`]*)["`]' }, { "ClassX\\(([^)]*)\\)", '["`]([^"`]*)["`]' }, { "ClassIf\\(([^)]*)\\)", '["`]([^"`]*)["`]' }, { "Classes\\(([^)]*)\\)", '["`]([^"`]*)["`]' }, }, }, }, }, }, }, }, } ``` ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/tailwind.lua | 25 +++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/tailwind.lua b/lua/lazyvim/plugins/extras/lang/tailwind.lua index 3c7b3fac..f196983d 100644 --- a/lua/lazyvim/plugins/extras/lang/tailwind.lua +++ b/lua/lazyvim/plugins/extras/lang/tailwind.lua @@ -24,6 +24,20 @@ return { filetypes_include = {}, -- to fully override the default_config, change the below -- filetypes = {} + + -- additional settings for the server, e.g: + -- tailwindCSS = { includeLanguages = { someLang = "html" } } + -- can be addeded to the settings table and will be merged with + -- this defaults for Phoenix projects + settings = { + tailwindCSS = { + includeLanguages = { + elixir = "html-eex", + eelixir = "html-eex", + heex = "html-eex", + }, + }, + }, }, }, setup = { @@ -39,17 +53,6 @@ return { return not vim.tbl_contains(opts.filetypes_exclude or {}, ft) end, opts.filetypes) - -- Additional settings for Phoenix projects - opts.settings = { - tailwindCSS = { - includeLanguages = { - elixir = "html-eex", - eelixir = "html-eex", - heex = "html-eex", - }, - }, - } - -- Add additional filetypes vim.list_extend(opts.filetypes, opts.filetypes_include or {}) end, From 4d0d87f6268969987e5c58f59e086c886e77e1ae Mon Sep 17 00:00:00 2001 From: snailed Date: Mon, 20 Oct 2025 11:09:29 +0200 Subject: [PATCH 120/171] fix(helm): broken helm highlighting (#5335) ## Description This PR replaces the towolf/vim-helm plugin with a newer, lua implementation of the plugin. This fixes syntax highlighting and makes the workaround for the ftdetect/lsp load order superfluous. ## Related Issue(s) - Fixes #5334 ## Checklist - [X] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/helm.lua | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/helm.lua b/lua/lazyvim/plugins/extras/lang/helm.lua index 58d8bdc8..5c85d191 100644 --- a/lua/lazyvim/plugins/extras/lang/helm.lua +++ b/lua/lazyvim/plugins/extras/lang/helm.lua @@ -6,7 +6,8 @@ return { }) end, - { "towolf/vim-helm", ft = "helm" }, + { "qvalentin/helm-ls.nvim", ft = "helm" }, + { "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = { "helm" } }, @@ -18,17 +19,6 @@ return { servers = { helm_ls = {}, }, - setup = { - yamlls = function() - LazyVim.lsp.on_attach(function(client, buffer) - if vim.bo[buffer].filetype == "helm" then - vim.schedule(function() - vim.cmd("LspStop ++force yamlls") - end) - end - end, "yamlls") - end, - }, }, }, } From 248876adb6b1f54031be350e45bbf0c7835d486f Mon Sep 17 00:00:00 2001 From: Bahaa Mohamed <107966806+Bahaaio@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:12:20 +0300 Subject: [PATCH 121/171] feat(go): add linting with golangci-lint (#6311) ## Description Add Go linting support using [golangci-lint](https://github.com/golangci/golangci-lint) and nvim-lint. - Installs golangci-lint via Mason. - Configures nvim-lint to run it on Go files. This improves the Go development experience by running a fast, popular linter automatically ## Related Issue(s) None ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/go.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/go.lua b/lua/lazyvim/plugins/extras/lang/go.lua index 77536fea..86f984f5 100644 --- a/lua/lazyvim/plugins/extras/lang/go.lua +++ b/lua/lazyvim/plugins/extras/lang/go.lua @@ -97,6 +97,22 @@ return { }) end, }, + -- Add linting + { + "mfussenegger/nvim-lint", + optional = true, + dependencies = { + { + "mason-org/mason.nvim", + opts = { ensure_installed = { "golangci-lint" } }, + }, + }, + opts = { + linters_by_ft = { + go = { "golangcilint" }, + }, + }, + }, { "stevearc/conform.nvim", optional = true, From 2cd46d42ba357a42b11c5e4f5e16641bde0516d6 Mon Sep 17 00:00:00 2001 From: pugud <171756217+pugud@users.noreply.github.com> Date: Mon, 20 Oct 2025 18:20:05 +0900 Subject: [PATCH 122/171] feat(lang): add solidity language support (#4742) ## Description ### Summary This PR adds comprehensive support for Solidity development in Neovim using LazyVim. The following updates were made to streamline Solidity development: ### Changes 1. **Solidity File Type Detection** - Configured LazyVim to recognize Solidity projects by detecting `foundry.toml`, `hardhat.config.js`, and `hardhat.config.ts` files. 2. **Treesitter Support for Solidity** - Added `solidity` to the list of languages ensured by `nvim-treesitter`, providing syntax highlighting and better code structure understanding. 3. **Language Server Protocol (LSP) Setup** - Configured `nvim-lspconfig` to support `solidity_ls` as the LSP for Solidity files. - Set up `root_dir` detection based on project files or a `.git` directory to enable proper LSP functioning in Solidity projects. 4. **Solidity Formatter** - Integrated `forge_fmt` as a formatter for Solidity files using `conform.nvim`, which utilizes `forge fmt` to format code. ### Why use `forge fmt` instead of Prettier? - **Prettier's Solidity support requires extra plugins**: Prettier does not have native Solidity support and depends on `prettier-plugin-solidity`. Even with `vim.g.lazyvim_prettier_needs_config = false`, formatting won't work unless a `.prettierrc` file is configured, creating unnecessary complexity. - **`forge fmt` is the native tool for Solidity development**: `Forge` is a widely used tool within the Solidity ecosystem, especially when working with Foundry. It provides built-in formatting with no extra dependencies, making it simpler and more efficient to integrate. - **Hardhat uses `prettier-plugin-solidity`**: For users of Hardhat, `prettier-plugin-solidity` is required for code formatting. However, the integration with Prettier might add complexity, while `forge fmt` simplifies the process. - **Future customization**: We may allow users to choose between `prettier-plugin-solidity` and `forge fmt` for formatting in the future, depending on their preferred tools. ### Testing - Confirmed that Solidity files are detected and syntax-highlighted by Treesitter. - Verified LSP functionality for Solidity, including code navigation and error detection. - Tested `forge_fmt` for automatic code formatting on Solidity files. ### Motivation These changes provide a smoother and more robust Solidity development experience in Lazyvim, including syntax highlighting, code navigation, and automatic formatting. ## Related Issue(s) https://github.com/LazyVim/LazyVim/issues/1901 ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --------- Co-authored-by: Folke Lemaitre --- lua/lazyvim/plugins/extras/lang/solidity.lua | 42 ++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/lang/solidity.lua diff --git a/lua/lazyvim/plugins/extras/lang/solidity.lua b/lua/lazyvim/plugins/extras/lang/solidity.lua new file mode 100644 index 00000000..cbbc7b83 --- /dev/null +++ b/lua/lazyvim/plugins/extras/lang/solidity.lua @@ -0,0 +1,42 @@ +return { + recommended = function() + return LazyVim.extras.wants({ + ft = "solidity", + root = { + "foundry.toml", + "hardhat.config.js", + "hardhat.config.ts", + }, + }) + end, + -- Add Solidity & related to treesitter + { + "nvim-treesitter/nvim-treesitter", + opts = { ensure_installed = { "solidity" } }, + }, + + -- Correctly setup lspconfig for Solidity + { + "neovim/nvim-lspconfig", + opts = { + servers = { + solidity_ls = {}, + }, + }, + }, + -- Formatter for Solidity + { + "conform.nvim", + opts = function(_, opts) + opts.formatters_by_ft = opts.formatters_by_ft or {} + opts.formatters_by_ft.solidity = { "forge_fmt" } + + opts.formatters = { + forge_fmt = { + command = "forge", + args = { "fmt" }, + }, + } + end, + }, +} From f4b08bb6044f57164efa5052ef51ff958672f524 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 11:24:28 +0200 Subject: [PATCH 123/171] refactor(solidity): no need for opts to be a function --- lua/lazyvim/plugins/extras/lang/solidity.lua | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/solidity.lua b/lua/lazyvim/plugins/extras/lang/solidity.lua index cbbc7b83..898ac076 100644 --- a/lua/lazyvim/plugins/extras/lang/solidity.lua +++ b/lua/lazyvim/plugins/extras/lang/solidity.lua @@ -26,17 +26,18 @@ return { }, -- Formatter for Solidity { - "conform.nvim", - opts = function(_, opts) - opts.formatters_by_ft = opts.formatters_by_ft or {} - opts.formatters_by_ft.solidity = { "forge_fmt" } - - opts.formatters = { + "stevearc/conform.nvim", + optional = true, + opts = { + formatters_by_ft = { + solidity = { "forge_fmt" }, + }, + formatters = { forge_fmt = { command = "forge", args = { "fmt" }, }, - } - end, + }, + }, }, } From 90f84e7e755f72bb99dc8a9dedbfef05e58eb09d Mon Sep 17 00:00:00 2001 From: Stanislav Zeman Date: Mon, 20 Oct 2025 11:27:52 +0200 Subject: [PATCH 124/171] feat(extras): add Dart language (#4749) ## Description This PR add Dart language support to **extras** section. ## Testing I checked that: - the LSP correctly loads on Dart files and provides suggestions and highlights errors - `treesitter` parses the Dart language tree and highlights the code - `conform` correctly formats Dart files using the built-in formatter - `neotest` is capable of running Dart tests ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/dart.lua | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/lang/dart.lua diff --git a/lua/lazyvim/plugins/extras/lang/dart.lua b/lua/lazyvim/plugins/extras/lang/dart.lua new file mode 100644 index 00000000..1a27ae33 --- /dev/null +++ b/lua/lazyvim/plugins/extras/lang/dart.lua @@ -0,0 +1,45 @@ +return { + recommended = function() + return LazyVim.extras.wants({ + ft = "dart", + root = { "pubspec.yaml" }, + }) + end, + { + "neovim/nvim-lspconfig", + opts = { + servers = { + dartls = {}, + }, + }, + }, + { + "nvim-treesitter/nvim-treesitter", + opts = { ensure_installed = { "dart" } }, + }, + { + "stevearc/conform.nvim", + opts = { + formatters = { + dart_format = { + args = { "format", "--line-length", "120" }, + }, + }, + formatters_by_ft = { + dart = { "dart_format" }, + }, + }, + }, + { + "nvim-neotest/neotest", + optional = true, + dependencies = { + "sidlatau/neotest-dart", + }, + opts = { + adapters = { + ["neotest-dart"] = {}, + }, + }, + }, +} From 9b077c7a8ec96050f3a3b73219c8b904d3d83ab0 Mon Sep 17 00:00:00 2001 From: Jarryd Tilbrook Date: Mon, 20 Oct 2025 17:40:56 +0800 Subject: [PATCH 125/171] feat(lang): add neotest config for PHP tests (#5958) ## Description Similar to some other languages (this closely follows the Go lang extra), this adds neotest runners for the major PHP test runners: PHPUnit and Pest. Both work together, trying to use Pest if available and falling back to PHPUnit which is a decent approach for the PHP ecosystem. I read CONTRIBUTING.md which differs from the way the Go lang extra has implemented a neotest adapters and opted to follow that instead. Ie. adapters have been added as dependencies instead of a separate spec with `lazy=true`. Let me know if you want that changed. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/php.lua | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/php.lua b/lua/lazyvim/plugins/extras/lang/php.lua index 04469223..98fffdb0 100644 --- a/lua/lazyvim/plugins/extras/lang/php.lua +++ b/lua/lazyvim/plugins/extras/lang/php.lua @@ -83,4 +83,21 @@ return { }, }, }, + + { + "nvim-neotest/neotest", + optional = true, + dependencies = { + "V13Axel/neotest-pest", + "olimorris/neotest-phpunit", + }, + opts = { + adapters = { + "neotest-pest", + ["neotest-phpunit"] = { + root_ignore_files = { "tests/Pest.php" }, + }, + }, + }, + }, } From ac4cce0f2f436b3e2dd93ad9179178436ab8c600 Mon Sep 17 00:00:00 2001 From: Julian Visser <12615757+justmejulian@users.noreply.github.com> Date: Mon, 20 Oct 2025 11:45:57 +0200 Subject: [PATCH 126/171] feat(extras): added ember lang support (#6203) ## Description Added support for [emberjs](https://guides.emberjs.com/release/getting-started/). - [nvim-lspconfig/ember](https://github.com/neovim/nvim-lspconfig/blob/master/lsp/ember.lua) - Uses prettier to format glimmer files ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/ember.lua | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/lang/ember.lua diff --git a/lua/lazyvim/plugins/extras/lang/ember.lua b/lua/lazyvim/plugins/extras/lang/ember.lua new file mode 100644 index 00000000..d16ea82d --- /dev/null +++ b/lua/lazyvim/plugins/extras/lang/ember.lua @@ -0,0 +1,29 @@ +return { + recommended = function() + return LazyVim.extras.wants({ + ft = { "handlebars", "typescript", "javascript", "typescript.glimmer", "javascript.glimmer" }, + root = { "ember-cli-build.js", ".git" }, + }) + end, + { + "nvim-treesitter/nvim-treesitter", + opts = { ensure_installed = { "css", "glimmer", "glimmer_javascript", "glimmer_typescript" } }, + }, + { + "neovim/nvim-lspconfig", + opts = { + servers = { + ember = {}, + }, + }, + }, + { + "conform.nvim", + opts = function(_, opts) + if LazyVim.has_extra("formatting.prettier") then + opts.formatters_by_ft = opts.formatters_by_ft or {} + opts.formatters_by_ft.glimmer = { "prettier" } + end + end, + }, +} From faeb24ba956f103c5551bde11506991d8b594bc5 Mon Sep 17 00:00:00 2001 From: Zapan Gao Date: Mon, 20 Oct 2025 17:49:08 +0800 Subject: [PATCH 127/171] feat(extra): allow users to add custom bundles through opts.init_options.bundles to jdtls (#6265) Allow users to add custom bundles through opts.init_options.bundles to jdtls with lang java extra is on. --- lua/lazyvim/plugins/extras/lang/java.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/java.lua b/lua/lazyvim/plugins/extras/lang/java.lua index b86688b1..80507476 100644 --- a/lua/lazyvim/plugins/extras/lang/java.lua +++ b/lua/lazyvim/plugins/extras/lang/java.lua @@ -157,6 +157,16 @@ return { end end end + + -- Allow users to add custom bundles through opts.init_options.bundles and opts.jdtls.init_options.bundles + if opts.init_options and opts.init_options.bundles then + vim.list_extend(bundles, opts.init_options.bundles) + end + if opts.jdtls and opts.jdtls.init_options and opts.jdtls.init_options.bundles then + vim.list_extend(bundles, opts.jdtls.init_options.bundles) + opts.jdtls.init_options.bundles = nil + end + local function attach_jdtls() local fname = vim.api.nvim_buf_get_name(0) From 0b65d33d8545d179207c8827025f40764de61d06 Mon Sep 17 00:00:00 2001 From: Alexey Svirshchevskiy Date: Mon, 20 Oct 2025 12:25:13 +0200 Subject: [PATCH 128/171] fix(typescript): support chrome, node and msedge dap adapters (#6649) ## Description Add support for `chrome`, `node` and `msedge` configs for dap typescript. ## Related Issue(s) https://github.com/LazyVim/LazyVim/pull/6328 ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- .../plugins/extras/lang/typescript.lua | 60 +++++++++++-------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/typescript.lua b/lua/lazyvim/plugins/extras/lang/typescript.lua index b79eb7e9..c859ff8d 100644 --- a/lua/lazyvim/plugins/extras/lang/typescript.lua +++ b/lua/lazyvim/plugins/extras/lang/typescript.lua @@ -226,31 +226,34 @@ return { }, opts = function() local dap = require("dap") - if not dap.adapters["pwa-node"] then - require("dap").adapters["pwa-node"] = { - type = "server", - host = "localhost", - port = "${port}", - executable = { - command = "node", - -- 💀 Make sure to update this path to point to your installation - args = { - LazyVim.get_pkg_path("js-debug-adapter", "/js-debug/src/dapDebugServer.js"), - "${port}", + + for _, adapterType in ipairs({ "node", "chrome", "msedge" }) do + local pwaType = "pwa-" .. adapterType + + if not dap.adapters[pwaType] then + dap.adapters[pwaType] = { + type = "server", + host = "localhost", + port = "${port}", + executable = { + command = "js-debug-adapter", + args = { "${port}" }, }, - }, - } - end - if not dap.adapters["node"] then - dap.adapters["node"] = function(cb, config) - if config.type == "node" then - config.type = "pwa-node" - end - local nativeAdapter = dap.adapters["pwa-node"] - if type(nativeAdapter) == "function" then - nativeAdapter(cb, config) - else - cb(nativeAdapter) + } + end + + -- Define adapters without the "pwa-" prefix for VSCode compatibility + if not dap.adapters[adapterType] then + dap.adapters[adapterType] = function(cb, config) + local nativeAdapter = dap.adapters[pwaType] + + config.type = pwaType + + if type(nativeAdapter) == "function" then + nativeAdapter(cb, config) + else + cb(nativeAdapter) + end end end end @@ -308,6 +311,15 @@ return { end, }, + { + "jay-babu/mason-nvim-dap.nvim", + optional = true, + opts = { + -- chrome adapter is deprecated, use js-debug-adapter instead + automatic_installation = { exclude = { "chrome" } }, + }, + }, + -- Filetype icons { "nvim-mini/mini.icons", From a582f004473a3bade99c19c62fea649fb0b1c20f Mon Sep 17 00:00:00 2001 From: qw457812 <37494864+qw457812@users.noreply.github.com> Date: Mon, 20 Oct 2025 18:50:54 +0800 Subject: [PATCH 129/171] revert: "feat(extra): allow users to add custom bundles through opts.init_options.bundles to jdtls (#6265)" (#6650) Fixes: ``` Failed to run `config` for nvim-jdtls ...im/lazy/LazyVim/lua/lazyvim/plugins/extras/lang/java.lua:165: attempt to index field 'jdtls' (a function value) - /LazyVim/lua/lazyvim/plugins/extras/lang/java.lua:165 _in_ **config** - ~/.local/share/bob/nightly/share/nvim/runtime/filetype.lua:36 - vim/shared.lua:0 - ~/.local/share/bob/nightly/share/nvim/runtime/filetype.lua:35 - vim/_editor.lua:0 _in_ **cmd** - /snacks.nvim/lua/snacks/picker/actions.lua:115 _in_ **fn** - /snacks.nvim/lua/snacks/win.lua:339 ``` `init_options.bundles` already can be overridden by `opts.jdtls`, see: https://github.com/LazyVim/LazyVim/pull/6265#issuecomment-3203831504 for example. ## Description Reverts the commit, which breaks `opts.jdtls` defined here: https://github.com/LazyVim/LazyVim/blob/faeb24ba956f103c5551bde11506991d8b594bc5/lua/lazyvim/plugins/extras/lang/java.lua#L185-L185 ## Related Issue(s) #6265 ## Screenshots None. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/java.lua | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/java.lua b/lua/lazyvim/plugins/extras/lang/java.lua index 80507476..b86688b1 100644 --- a/lua/lazyvim/plugins/extras/lang/java.lua +++ b/lua/lazyvim/plugins/extras/lang/java.lua @@ -157,16 +157,6 @@ return { end end end - - -- Allow users to add custom bundles through opts.init_options.bundles and opts.jdtls.init_options.bundles - if opts.init_options and opts.init_options.bundles then - vim.list_extend(bundles, opts.init_options.bundles) - end - if opts.jdtls and opts.jdtls.init_options and opts.jdtls.init_options.bundles then - vim.list_extend(bundles, opts.jdtls.init_options.bundles) - opts.jdtls.init_options.bundles = nil - end - local function attach_jdtls() local fname = vim.api.nvim_buf_get_name(0) From e7a3e80ee1327ac012c7bb7257bb2d49f9f2fd89 Mon Sep 17 00:00:00 2001 From: Jose Storopoli Date: Mon, 20 Oct 2025 06:37:58 -0500 Subject: [PATCH 130/171] feat(extras): ai: add `claudecode.nvim` (#6229) ## Description Adds [`claudecode.nvim`](https://github.com/coder/claudecode.nvim) which integrates Claude Code into NeoVim using snacks terminal. I've been using this config for a while now and I think it's time to upstream to LazyVim. The configurations are the recommended ones from the plugin's README. ## Related Issue(s) None ## Screenshots ![CleanShot 2025-07-05 at 06 58 15@2x](https://github.com/user-attachments/assets/23f8de5c-654e-470d-b814-0bf318ceb2b2) ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/ai/claudecode.lua | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/ai/claudecode.lua diff --git a/lua/lazyvim/plugins/extras/ai/claudecode.lua b/lua/lazyvim/plugins/extras/ai/claudecode.lua new file mode 100644 index 00000000..83776767 --- /dev/null +++ b/lua/lazyvim/plugins/extras/ai/claudecode.lua @@ -0,0 +1,22 @@ +return { + "coder/claudecode.nvim", + opts = {}, + keys = { + { "a", "", desc = "+ai", mode = { "n", "v" } }, + { "ac", "ClaudeCode", desc = "Toggle Claude" }, + { "af", "ClaudeCodeFocus", desc = "Focus Claude" }, + { "ar", "ClaudeCode --resume", desc = "Resume Claude" }, + { "aC", "ClaudeCode --continue", desc = "Continue Claude" }, + { "ab", "ClaudeCodeAdd %", desc = "Add current buffer" }, + { "as", "ClaudeCodeSend", mode = "v", desc = "Send to Claude" }, + { + "as", + "ClaudeCodeTreeAdd", + desc = "Add file", + ft = { "NvimTree", "neo-tree", "oil" }, + }, + -- Diff management + { "aa", "ClaudeCodeDiffAccept", desc = "Accept diff" }, + { "ad", "ClaudeCodeDiffDeny", desc = "Deny diff" }, + }, +} From 70e316d41cf2f2c90bb13e120baf5b9eef4c4980 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 14:30:38 +0200 Subject: [PATCH 131/171] chore(main): release 15.10.0 (#6647) :robot: I have created a release *beep* *boop* --- ## [15.10.0](https://github.com/LazyVim/LazyVim/compare/v15.9.0...v15.10.0) (2025-10-20) ### Features * **ai:** add avante.nvim for a better AI experience ([#4440](https://github.com/LazyVim/LazyVim/issues/4440)) ([2682ce0](https://github.com/LazyVim/LazyVim/commit/2682ce0ab95c0a88867855ada41948107db8232e)) * **extra:** allow users to add custom bundles through opts.init_options.bundles to jdtls ([#6265](https://github.com/LazyVim/LazyVim/issues/6265)) ([faeb24b](https://github.com/LazyVim/LazyVim/commit/faeb24ba956f103c5551bde11506991d8b594bc5)) * **extras:** add Dart language ([#4749](https://github.com/LazyVim/LazyVim/issues/4749)) ([90f84e7](https://github.com/LazyVim/LazyVim/commit/90f84e7e755f72bb99dc8a9dedbfef05e58eb09d)) * **extras:** added ember lang support ([#6203](https://github.com/LazyVim/LazyVim/issues/6203)) ([ac4cce0](https://github.com/LazyVim/LazyVim/commit/ac4cce0f2f436b3e2dd93ad9179178436ab8c600)) * **extras:** added twig language ([#5464](https://github.com/LazyVim/LazyVim/issues/5464)) ([a6eb51e](https://github.com/LazyVim/LazyVim/commit/a6eb51e5b5897749bed8721ce98cd2491b2ea8e2)) * **extras:** ai: add `claudecode.nvim` ([#6229](https://github.com/LazyVim/LazyVim/issues/6229)) ([e7a3e80](https://github.com/LazyVim/LazyVim/commit/e7a3e80ee1327ac012c7bb7257bb2d49f9f2fd89)) * **extras:** automatically update lazyvim.json for renamed or deprecated extras ([37ecd06](https://github.com/LazyVim/LazyVim/commit/37ecd06fad65d5c188ad2d2e55d47a8fd1594d16)) * **extras:** renamed extra omnisharp -> dotnet + added fautocomplete to lspconfig ([1b2e6e8](https://github.com/LazyVim/LazyVim/commit/1b2e6e8986b3cfee19635920129fc08df4f32b38)) * **extras:** utils: add `gh.nvim` ([#6250](https://github.com/LazyVim/LazyVim/issues/6250)) ([8db9c75](https://github.com/LazyVim/LazyVim/commit/8db9c75e8d3a8609926dcb868d2e462e0f0b1d3d)) * **go:** add linting with golangci-lint ([#6311](https://github.com/LazyVim/LazyVim/issues/6311)) ([248876a](https://github.com/LazyVim/LazyVim/commit/248876adb6b1f54031be350e45bbf0c7835d486f)) * **haskell:** update `haskell-tools` version and add formatters + linters ([#6230](https://github.com/LazyVim/LazyVim/issues/6230)) ([82382f4](https://github.com/LazyVim/LazyVim/commit/82382f455ad37bc4fa928fe4a6fb9379a924fa3a)) * **lang/fsharp:** add F# support to omnisharp extra ([#6538](https://github.com/LazyVim/LazyVim/issues/6538)) ([80a980a](https://github.com/LazyVim/LazyVim/commit/80a980ab00a871777c37ec3f0db9c394509b2465)) * **lang:** add neotest config for PHP tests ([#5958](https://github.com/LazyVim/LazyVim/issues/5958)) ([9b077c7](https://github.com/LazyVim/LazyVim/commit/9b077c7a8ec96050f3a3b73219c8b904d3d83ab0)) * **lang:** add solidity language support ([#4742](https://github.com/LazyVim/LazyVim/issues/4742)) ([2cd46d4](https://github.com/LazyVim/LazyVim/commit/2cd46d42ba357a42b11c5e4f5e16641bde0516d6)) * **lang:** add Typst language support ([#4042](https://github.com/LazyVim/LazyVim/issues/4042)) ([645846b](https://github.com/LazyVim/LazyVim/commit/645846be5c7d798c7e87e61d00e8cae4fd3741c7)) * **lang:** julia support ([#6231](https://github.com/LazyVim/LazyVim/issues/6231)) ([5d186c0](https://github.com/LazyVim/LazyVim/commit/5d186c009a85efbdad2b92115d4268c7c4a7aa18)) * **lang:** nix add `statix` linter ([#6244](https://github.com/LazyVim/LazyVim/issues/6244)) ([2a866f6](https://github.com/LazyVim/LazyVim/commit/2a866f6c8c974c88cb9c723560cbec4308d304a2)) * **sidekick:** added sidekick cli status to lualine ([16917db](https://github.com/LazyVim/LazyVim/commit/16917db94a056fe01b3bac604bc89da4077bd9cd)) ### Bug Fixes * **extras.lang:** fix Scala extra by using nvimMetals only ([#5726](https://github.com/LazyVim/LazyVim/issues/5726)) ([f118dca](https://github.com/LazyVim/LazyVim/commit/f118dca334d40cf8e78e0f0d5aa3108b972e8d84)) * **fzf-lua:** added some missing keymaps similar to snacks picker. Closes [#6036](https://github.com/LazyVim/LazyVim/issues/6036). Closes [#5830](https://github.com/LazyVim/LazyVim/issues/5830) ([69a5744](https://github.com/LazyVim/LazyVim/commit/69a57448032253ca086d999c0d53d6e33ad4e505)) * **helm:** broken helm highlighting ([#5335](https://github.com/LazyVim/LazyVim/issues/5335)) ([4d0d87f](https://github.com/LazyVim/LazyVim/commit/4d0d87f6268969987e5c58f59e086c886e77e1ae)) * **keymap:** remove select mode remaps of printable characters ([#6296](https://github.com/LazyVim/LazyVim/issues/6296)) ([83468be](https://github.com/LazyVim/LazyVim/commit/83468be35062d06896c233d90d2f1c1cd24d84f3)) * **tailwind:** additional settings ([#5266](https://github.com/LazyVim/LazyVim/issues/5266)) ([d2f9885](https://github.com/LazyVim/LazyVim/commit/d2f9885d6b8244818066cc16a5c72cb656748f6c)) * **telescope:** sync keymaps with snacks picker + added some that were missing ([1a08e9f](https://github.com/LazyVim/LazyVim/commit/1a08e9f50f8c11a329c3017c4bfdd4b96b7ec541)) * **twig:** correct mason url ([9d345de](https://github.com/LazyVim/LazyVim/commit/9d345dec446f577f75d36a147164ae258ffc2d8c)) * **typescript:** better default pwa-node DAP config. Closes [#6386](https://github.com/LazyVim/LazyVim/issues/6386) ([e4d3432](https://github.com/LazyVim/LazyVim/commit/e4d34328f244fc0c7f91587258e767bfb55d0648)) * **typescript:** support chrome, node and msedge dap adapters ([#6649](https://github.com/LazyVim/LazyVim/issues/6649)) ([0b65d33](https://github.com/LazyVim/LazyVim/commit/0b65d33d8545d179207c8827025f40764de61d06)) * **util.project:** different mapping on dashboard than `snacks.projects` ([#5737](https://github.com/LazyVim/LazyVim/issues/5737)) ([e389447](https://github.com/LazyVim/LazyVim/commit/e38944799e7fc45baea0483f5c955472f3ffde27)) ### Reverts * "feat(extra): allow users to add custom bundles through opts.init_options.bundles to jdtls ([#6265](https://github.com/LazyVim/LazyVim/issues/6265))" ([#6650](https://github.com/LazyVim/LazyVim/issues/6650)) ([a582f00](https://github.com/LazyVim/LazyVim/commit/a582f004473a3bade99c19c62fea649fb0b1c20f)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 43 +++++++++++++++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 67ff2e28..71b8804b 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.9.0" + ".": "15.10.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 91539d23..d8801a11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,48 @@ # Changelog +## [15.10.0](https://github.com/LazyVim/LazyVim/compare/v15.9.0...v15.10.0) (2025-10-20) + + +### Features + +* **ai:** add avante.nvim for a better AI experience ([#4440](https://github.com/LazyVim/LazyVim/issues/4440)) ([2682ce0](https://github.com/LazyVim/LazyVim/commit/2682ce0ab95c0a88867855ada41948107db8232e)) +* **extra:** allow users to add custom bundles through opts.init_options.bundles to jdtls ([#6265](https://github.com/LazyVim/LazyVim/issues/6265)) ([faeb24b](https://github.com/LazyVim/LazyVim/commit/faeb24ba956f103c5551bde11506991d8b594bc5)) +* **extras:** add Dart language ([#4749](https://github.com/LazyVim/LazyVim/issues/4749)) ([90f84e7](https://github.com/LazyVim/LazyVim/commit/90f84e7e755f72bb99dc8a9dedbfef05e58eb09d)) +* **extras:** added ember lang support ([#6203](https://github.com/LazyVim/LazyVim/issues/6203)) ([ac4cce0](https://github.com/LazyVim/LazyVim/commit/ac4cce0f2f436b3e2dd93ad9179178436ab8c600)) +* **extras:** added twig language ([#5464](https://github.com/LazyVim/LazyVim/issues/5464)) ([a6eb51e](https://github.com/LazyVim/LazyVim/commit/a6eb51e5b5897749bed8721ce98cd2491b2ea8e2)) +* **extras:** ai: add `claudecode.nvim` ([#6229](https://github.com/LazyVim/LazyVim/issues/6229)) ([e7a3e80](https://github.com/LazyVim/LazyVim/commit/e7a3e80ee1327ac012c7bb7257bb2d49f9f2fd89)) +* **extras:** automatically update lazyvim.json for renamed or deprecated extras ([37ecd06](https://github.com/LazyVim/LazyVim/commit/37ecd06fad65d5c188ad2d2e55d47a8fd1594d16)) +* **extras:** renamed extra omnisharp -> dotnet + added fautocomplete to lspconfig ([1b2e6e8](https://github.com/LazyVim/LazyVim/commit/1b2e6e8986b3cfee19635920129fc08df4f32b38)) +* **extras:** utils: add `gh.nvim` ([#6250](https://github.com/LazyVim/LazyVim/issues/6250)) ([8db9c75](https://github.com/LazyVim/LazyVim/commit/8db9c75e8d3a8609926dcb868d2e462e0f0b1d3d)) +* **go:** add linting with golangci-lint ([#6311](https://github.com/LazyVim/LazyVim/issues/6311)) ([248876a](https://github.com/LazyVim/LazyVim/commit/248876adb6b1f54031be350e45bbf0c7835d486f)) +* **haskell:** update `haskell-tools` version and add formatters + linters ([#6230](https://github.com/LazyVim/LazyVim/issues/6230)) ([82382f4](https://github.com/LazyVim/LazyVim/commit/82382f455ad37bc4fa928fe4a6fb9379a924fa3a)) +* **lang/fsharp:** add F# support to omnisharp extra ([#6538](https://github.com/LazyVim/LazyVim/issues/6538)) ([80a980a](https://github.com/LazyVim/LazyVim/commit/80a980ab00a871777c37ec3f0db9c394509b2465)) +* **lang:** add neotest config for PHP tests ([#5958](https://github.com/LazyVim/LazyVim/issues/5958)) ([9b077c7](https://github.com/LazyVim/LazyVim/commit/9b077c7a8ec96050f3a3b73219c8b904d3d83ab0)) +* **lang:** add solidity language support ([#4742](https://github.com/LazyVim/LazyVim/issues/4742)) ([2cd46d4](https://github.com/LazyVim/LazyVim/commit/2cd46d42ba357a42b11c5e4f5e16641bde0516d6)) +* **lang:** add Typst language support ([#4042](https://github.com/LazyVim/LazyVim/issues/4042)) ([645846b](https://github.com/LazyVim/LazyVim/commit/645846be5c7d798c7e87e61d00e8cae4fd3741c7)) +* **lang:** julia support ([#6231](https://github.com/LazyVim/LazyVim/issues/6231)) ([5d186c0](https://github.com/LazyVim/LazyVim/commit/5d186c009a85efbdad2b92115d4268c7c4a7aa18)) +* **lang:** nix add `statix` linter ([#6244](https://github.com/LazyVim/LazyVim/issues/6244)) ([2a866f6](https://github.com/LazyVim/LazyVim/commit/2a866f6c8c974c88cb9c723560cbec4308d304a2)) +* **sidekick:** added sidekick cli status to lualine ([16917db](https://github.com/LazyVim/LazyVim/commit/16917db94a056fe01b3bac604bc89da4077bd9cd)) + + +### Bug Fixes + +* **extras.lang:** fix Scala extra by using nvimMetals only ([#5726](https://github.com/LazyVim/LazyVim/issues/5726)) ([f118dca](https://github.com/LazyVim/LazyVim/commit/f118dca334d40cf8e78e0f0d5aa3108b972e8d84)) +* **fzf-lua:** added some missing keymaps similar to snacks picker. Closes [#6036](https://github.com/LazyVim/LazyVim/issues/6036). Closes [#5830](https://github.com/LazyVim/LazyVim/issues/5830) ([69a5744](https://github.com/LazyVim/LazyVim/commit/69a57448032253ca086d999c0d53d6e33ad4e505)) +* **helm:** broken helm highlighting ([#5335](https://github.com/LazyVim/LazyVim/issues/5335)) ([4d0d87f](https://github.com/LazyVim/LazyVim/commit/4d0d87f6268969987e5c58f59e086c886e77e1ae)) +* **keymap:** remove select mode remaps of printable characters ([#6296](https://github.com/LazyVim/LazyVim/issues/6296)) ([83468be](https://github.com/LazyVim/LazyVim/commit/83468be35062d06896c233d90d2f1c1cd24d84f3)) +* **tailwind:** additional settings ([#5266](https://github.com/LazyVim/LazyVim/issues/5266)) ([d2f9885](https://github.com/LazyVim/LazyVim/commit/d2f9885d6b8244818066cc16a5c72cb656748f6c)) +* **telescope:** sync keymaps with snacks picker + added some that were missing ([1a08e9f](https://github.com/LazyVim/LazyVim/commit/1a08e9f50f8c11a329c3017c4bfdd4b96b7ec541)) +* **twig:** correct mason url ([9d345de](https://github.com/LazyVim/LazyVim/commit/9d345dec446f577f75d36a147164ae258ffc2d8c)) +* **typescript:** better default pwa-node DAP config. Closes [#6386](https://github.com/LazyVim/LazyVim/issues/6386) ([e4d3432](https://github.com/LazyVim/LazyVim/commit/e4d34328f244fc0c7f91587258e767bfb55d0648)) +* **typescript:** support chrome, node and msedge dap adapters ([#6649](https://github.com/LazyVim/LazyVim/issues/6649)) ([0b65d33](https://github.com/LazyVim/LazyVim/commit/0b65d33d8545d179207c8827025f40764de61d06)) +* **util.project:** different mapping on dashboard than `snacks.projects` ([#5737](https://github.com/LazyVim/LazyVim/issues/5737)) ([e389447](https://github.com/LazyVim/LazyVim/commit/e38944799e7fc45baea0483f5c955472f3ffde27)) + + +### Reverts + +* "feat(extra): allow users to add custom bundles through opts.init_options.bundles to jdtls ([#6265](https://github.com/LazyVim/LazyVim/issues/6265))" ([#6650](https://github.com/LazyVim/LazyVim/issues/6650)) ([a582f00](https://github.com/LazyVim/LazyVim/commit/a582f004473a3bade99c19c62fea649fb0b1c20f)) + ## [15.9.0](https://github.com/LazyVim/LazyVim/compare/v15.8.1...v15.9.0) (2025-10-19) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index dc8972c7..230433cc 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.9.0" -- x-release-please-version +M.version = "15.10.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 3ffb471c187a66562b19bdf68382be9f82ac670d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 14:33:41 +0200 Subject: [PATCH 132/171] fix(treesitter): added buf to treesitter start just to be sure --- lua/lazyvim/plugins/treesitter.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 2a4fa567..7fee6c38 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -117,7 +117,7 @@ return { -- highlighting if enabled("highlight", "highlights") then - pcall(vim.treesitter.start) + pcall(vim.treesitter.start, ev.buf) end -- indents From 899533a101e4bacf35dadf091977b4d12875dbf6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 14:34:00 +0200 Subject: [PATCH 133/171] fix(blink): added work-around back for unsupported native snippets --- lua/lazyvim/plugins/extras/coding/blink.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazyvim/plugins/extras/coding/blink.lua b/lua/lazyvim/plugins/extras/coding/blink.lua index ccee9d79..8d838237 100644 --- a/lua/lazyvim/plugins/extras/coding/blink.lua +++ b/lua/lazyvim/plugins/extras/coding/blink.lua @@ -106,6 +106,9 @@ return { }, ---@param opts blink.cmp.Config | { sources: { compat: string[] } } config = function(_, opts) + if opts.snippets and opts.snippets.preset == "default" then + opts.snippets.expand = LazyVim.cmp.expand + end -- setup compat sources local enabled = opts.sources.default for _, source in ipairs(opts.sources.compat or {}) do From 4b69a6ed29c71efc17048e6c5d65413f21626e74 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 20 Oct 2025 16:11:03 +0200 Subject: [PATCH 134/171] docs: remove video from readme, since it's outdated --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 1e7bb70d..b8357744 100644 --- a/README.md +++ b/README.md @@ -111,10 +111,6 @@ docker run -w /root -it --rm alpine:edge sh -uelic ' --- -There's a great video created by [@elijahmanor](https://github.com/elijahmanor) with a walkthrough to get started. - -[![Watch the video](https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg)](https://www.youtube.com/watch?v=N93cTbtLCIM) - [@dusty-phillips](https://github.com/dusty-phillips) wrote a comprehensive book called [LazyVim for Ambitious Developers](https://lazyvim-ambitious-devs.phillips.codes) available for free online. From 1a7f264ada3b54d9c918acf987a39c6d09840fa2 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Mon, 20 Oct 2025 14:12:09 +0000 Subject: [PATCH 135/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index a1d06f52..25389bdb 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -97,11 +97,6 @@ Install the LazyVim Starter ~ Refer to the comments in the files on how to customize **LazyVim**. ------------------------------------------------------------------------------ -There’s a great video created by @elijahmanor - with a walkthrough to get started. - - - @dusty-phillips wrote a comprehensive book called LazyVim for Ambitious Developers available for free online. @@ -127,9 +122,7 @@ Refer to the docs 1. *image*: https://user-images.githubusercontent.com/292349/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.png 2. *image*: https://user-images.githubusercontent.com/292349/213447056-92290767-ea16-430c-8727-ce994c93e9cc.png -3. *@elijahmanor*: -4. *Watch the video*: https://img.youtube.com/vi/N93cTbtLCIM/hqdefault.jpg -5. *@dusty-phillips*: +3. *@dusty-phillips*: Generated by panvimdoc From 41d1b8dc72d4270c49db3365edba670d9fa01fbd Mon Sep 17 00:00:00 2001 From: Iain Lane Date: Mon, 20 Oct 2025 16:34:08 +0100 Subject: [PATCH 136/171] fix(avante): correct key mapping declarations (#6656) ## Description They were declared as ```lua { { "n", "aa", ... }, -- ... } ``` Which remaps the `n` key! ## Demo ```console $ nvim --headless +'verbose nmap n' +'quit!' n n * Toggle Avante ``` ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/ai/avante.lua | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/avante.lua b/lua/lazyvim/plugins/extras/ai/avante.lua index 2a11c87d..4ea5fb5f 100644 --- a/lua/lazyvim/plugins/extras/ai/avante.lua +++ b/lua/lazyvim/plugins/extras/ai/avante.lua @@ -28,17 +28,17 @@ return { "AvanteToggle", }, keys = { - { "n", "aa", "AvanteAsk", desc = "Ask Avante" }, - { "n", "ac", "AvanteChat", desc = "Chat with Avante" }, - { "n", "ae", "AvanteEdit", desc = "Edit Avante" }, - { "n", "af", "AvanteFocus", desc = "Focus Avante" }, - { "n", "ah", "AvanteHistory", desc = "Avante History" }, - { "n", "am", "AvanteModels", desc = "Select Avante Model" }, - { "n", "an", "AvanteChatNew", desc = "New Avante Chat" }, - { "n", "ap", "AvanteSwitchProvider", desc = "Switch Avante Provider" }, - { "n", "ar", "AvanteRefresh", desc = "Refresh Avante" }, - { "n", "as", "AvanteStop", desc = "Stop Avante" }, - { "n", "at", "AvanteToggle", desc = "Toggle Avante" }, + { "aa", "AvanteAsk", desc = "Ask Avante" }, + { "ac", "AvanteChat", desc = "Chat with Avante" }, + { "ae", "AvanteEdit", desc = "Edit Avante" }, + { "af", "AvanteFocus", desc = "Focus Avante" }, + { "ah", "AvanteHistory", desc = "Avante History" }, + { "am", "AvanteModels", desc = "Select Avante Model" }, + { "an", "AvanteChatNew", desc = "New Avante Chat" }, + { "ap", "AvanteSwitchProvider", desc = "Switch Avante Provider" }, + { "ar", "AvanteRefresh", desc = "Refresh Avante" }, + { "as", "AvanteStop", desc = "Stop Avante" }, + { "at", "AvanteToggle", desc = "Toggle Avante" }, }, }, From a65d5d530d372b39a468dfbb2ce633f344770c5c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Oct 2025 18:50:02 +0200 Subject: [PATCH 137/171] chore(main): release 15.10.1 (#6652) :robot: I have created a release *beep* *boop* --- ## [15.10.1](https://github.com/LazyVim/LazyVim/compare/v15.10.0...v15.10.1) (2025-10-20) ### Bug Fixes * **avante:** correct key mapping declarations ([#6656](https://github.com/LazyVim/LazyVim/issues/6656)) ([41d1b8d](https://github.com/LazyVim/LazyVim/commit/41d1b8dc72d4270c49db3365edba670d9fa01fbd)) * **blink:** added work-around back for unsupported native snippets ([899533a](https://github.com/LazyVim/LazyVim/commit/899533a101e4bacf35dadf091977b4d12875dbf6)) * **treesitter:** added buf to treesitter start just to be sure ([3ffb471](https://github.com/LazyVim/LazyVim/commit/3ffb471c187a66562b19bdf68382be9f82ac670d)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 9 +++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 71b8804b..d40f464a 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.10.0" + ".": "15.10.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d8801a11..cb35b779 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [15.10.1](https://github.com/LazyVim/LazyVim/compare/v15.10.0...v15.10.1) (2025-10-20) + + +### Bug Fixes + +* **avante:** correct key mapping declarations ([#6656](https://github.com/LazyVim/LazyVim/issues/6656)) ([41d1b8d](https://github.com/LazyVim/LazyVim/commit/41d1b8dc72d4270c49db3365edba670d9fa01fbd)) +* **blink:** added work-around back for unsupported native snippets ([899533a](https://github.com/LazyVim/LazyVim/commit/899533a101e4bacf35dadf091977b4d12875dbf6)) +* **treesitter:** added buf to treesitter start just to be sure ([3ffb471](https://github.com/LazyVim/LazyVim/commit/3ffb471c187a66562b19bdf68382be9f82ac670d)) + ## [15.10.0](https://github.com/LazyVim/LazyVim/compare/v15.9.0...v15.10.0) (2025-10-20) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 230433cc..023bc6ec 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.10.0" -- x-release-please-version +M.version = "15.10.1" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From e8a1d8b6286f82d75e5830de5ea93bd7622cec8c Mon Sep 17 00:00:00 2001 From: Bryan Niwa Date: Mon, 20 Oct 2025 10:37:51 -0700 Subject: [PATCH 138/171] fix(avante): unset default keymaps (#6657) ## Description The extras spec includes its own keymaps for the most common commands now so these are redundant and causing duplicate entries in which-key. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/ai/avante.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazyvim/plugins/extras/ai/avante.lua b/lua/lazyvim/plugins/extras/ai/avante.lua index 4ea5fb5f..f3ae1354 100644 --- a/lua/lazyvim/plugins/extras/ai/avante.lua +++ b/lua/lazyvim/plugins/extras/ai/avante.lua @@ -11,6 +11,9 @@ return { selection = { hint_display = "none", }, + behaviour = { + auto_set_keymaps = false, + }, }, cmd = { "AvanteAsk", From b38de4e2fe4ad887cae1604fd9f1fbd230e0118f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 22 Oct 2025 06:30:33 +0200 Subject: [PATCH 139/171] fix(extras): remove custom formatter opts for dart/solidity. Closes #6665 --- lua/lazyvim/plugins/extras/lang/dart.lua | 5 ----- lua/lazyvim/plugins/extras/lang/solidity.lua | 6 ------ 2 files changed, 11 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/dart.lua b/lua/lazyvim/plugins/extras/lang/dart.lua index 1a27ae33..c912b5bf 100644 --- a/lua/lazyvim/plugins/extras/lang/dart.lua +++ b/lua/lazyvim/plugins/extras/lang/dart.lua @@ -20,11 +20,6 @@ return { { "stevearc/conform.nvim", opts = { - formatters = { - dart_format = { - args = { "format", "--line-length", "120" }, - }, - }, formatters_by_ft = { dart = { "dart_format" }, }, diff --git a/lua/lazyvim/plugins/extras/lang/solidity.lua b/lua/lazyvim/plugins/extras/lang/solidity.lua index 898ac076..8eef4fa4 100644 --- a/lua/lazyvim/plugins/extras/lang/solidity.lua +++ b/lua/lazyvim/plugins/extras/lang/solidity.lua @@ -32,12 +32,6 @@ return { formatters_by_ft = { solidity = { "forge_fmt" }, }, - formatters = { - forge_fmt = { - command = "forge", - args = { "fmt" }, - }, - }, }, }, } From 6568b1d4c25b819e275984959100b50dba9c4bcd Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Wed, 22 Oct 2025 04:31:53 +0000 Subject: [PATCH 140/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 25389bdb..3064b624 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 20 +*LazyVim.txt* For Neovim Last change: 2025 October 22 ============================================================================== Table of Contents *LazyVim-table-of-contents* From b6e48a57fb4ad7a79f24646016926eef68ce3002 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 22 Oct 2025 14:51:34 +0200 Subject: [PATCH 141/171] feat(snacks_picker): added gai/gao keymaps for calls incoming/outgoing --- lua/lazyvim/plugins/extras/editor/snacks_picker.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index 591da5ea..1da41376 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -144,6 +144,8 @@ return { { "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" }, { "ss", function() Snacks.picker.lsp_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Symbols", has = "documentSymbol" }, { "sS", function() Snacks.picker.lsp_workspace_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Workspace Symbols", has = "workspace/symbols" }, + { "gai", function() Snacks.picker.lsp_incoming_calls() end, desc = "C[a]lls Incoming", has = "callHierarchy/incomingCalls" }, + { "gao", function() Snacks.picker.lsp_outgoing_calls() end, desc = "C[a]lls Outgoing", has = "callHierarchy/outgoingCalls" }, }) end, }, From f0a91d9fa5f0cf27d6ba5fac759fa1d4e0df97a3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 23 Oct 2025 09:26:22 +0200 Subject: [PATCH 142/171] feat(snacks.picker): added `gD` to diff against merge base of branch/PR --- lua/lazyvim/plugins/extras/editor/snacks_picker.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index 1da41376..766a9e59 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -73,6 +73,7 @@ return { { "fp", function() Snacks.picker.projects() end, desc = "Projects" }, -- git { "gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (hunks)" }, + { "gD", function() Snacks.picker.git_diff({ base = "origin" }) end, desc = "Git Diff (origin)" }, { "gs", function() Snacks.picker.git_status() end, desc = "Git Status" }, { "gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" }, -- Grep From 0b4999a4b514de568a3aa089d5ed0f6298e5bfbb Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Thu, 23 Oct 2025 09:26:48 +0200 Subject: [PATCH 143/171] docs: added LSP keymap specs to CONTRIBUTING.md --- CONTRIBUTING.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d08a3622..cf3e1616 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,3 +29,21 @@ - Every language extra requires a `recommended` section as part of the extra. Check lspconfig server configurations for the proper filetypes and root directories. Refer to other extras for creating the `recommended` section. + +### Language-Specific Keymaps + +- Use `` for language-specific keymaps (follows Vim/Neovim convention for filetype-specific mappings). +- For LSP servers, define keymaps in the server's `keys` field, not in `on_attach`: + ```lua + servers = { + rust_analyzer = { + keys = { + { "e", function() vim.cmd.RustLsp("expandMacro") end, desc = "Expand Macro" }, + } + } + } + ``` +- LazyVim's LSP system will automatically resolve and apply these keymaps (see `lua/lazyvim/plugins/lsp/keymaps.lua`). +- Don't override standard LSP keymaps (like `K` for hover, `gd` for definition) unless absolutely necessary. +- Use standard `c*` keymaps where they make sense (e.g., `co` for organize imports). +- Refer to the R and Haskell extras for examples of proper `` usage. From 4fd9878dead6453c7c0f0f8971109f85a0768b5f Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Thu, 23 Oct 2025 07:28:03 +0000 Subject: [PATCH 144/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 3064b624..61b193ba 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 22 +*LazyVim.txt* For Neovim Last change: 2025 October 23 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 0329bc0e508eb48f7cee7fe57975c364584f8738 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 11:47:53 +0200 Subject: [PATCH 145/171] chore(main): release 15.11.0 (#6658) :robot: I have created a release *beep* *boop* --- ## [15.11.0](https://github.com/LazyVim/LazyVim/compare/v15.10.1...v15.11.0) (2025-10-23) ### Features * **snacks_picker:** added gai/gao keymaps for calls incoming/outgoing ([b6e48a5](https://github.com/LazyVim/LazyVim/commit/b6e48a57fb4ad7a79f24646016926eef68ce3002)) * **snacks.picker:** added `gD` to diff against merge base of branch/PR ([f0a91d9](https://github.com/LazyVim/LazyVim/commit/f0a91d9fa5f0cf27d6ba5fac759fa1d4e0df97a3)) ### Bug Fixes * **avante:** unset default keymaps ([#6657](https://github.com/LazyVim/LazyVim/issues/6657)) ([e8a1d8b](https://github.com/LazyVim/LazyVim/commit/e8a1d8b6286f82d75e5830de5ea93bd7622cec8c)) * **extras:** remove custom formatter opts for dart/solidity. Closes [#6665](https://github.com/LazyVim/LazyVim/issues/6665) ([b38de4e](https://github.com/LazyVim/LazyVim/commit/b38de4e2fe4ad887cae1604fd9f1fbd230e0118f)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index d40f464a..70ffac5e 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.10.1" + ".": "15.11.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index cb35b779..5750eefe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [15.11.0](https://github.com/LazyVim/LazyVim/compare/v15.10.1...v15.11.0) (2025-10-23) + + +### Features + +* **snacks_picker:** added gai/gao keymaps for calls incoming/outgoing ([b6e48a5](https://github.com/LazyVim/LazyVim/commit/b6e48a57fb4ad7a79f24646016926eef68ce3002)) +* **snacks.picker:** added `gD` to diff against merge base of branch/PR ([f0a91d9](https://github.com/LazyVim/LazyVim/commit/f0a91d9fa5f0cf27d6ba5fac759fa1d4e0df97a3)) + + +### Bug Fixes + +* **avante:** unset default keymaps ([#6657](https://github.com/LazyVim/LazyVim/issues/6657)) ([e8a1d8b](https://github.com/LazyVim/LazyVim/commit/e8a1d8b6286f82d75e5830de5ea93bd7622cec8c)) +* **extras:** remove custom formatter opts for dart/solidity. Closes [#6665](https://github.com/LazyVim/LazyVim/issues/6665) ([b38de4e](https://github.com/LazyVim/LazyVim/commit/b38de4e2fe4ad887cae1604fd9f1fbd230e0118f)) + ## [15.10.1](https://github.com/LazyVim/LazyVim/compare/v15.10.0...v15.10.1) (2025-10-20) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 023bc6ec..5fc36492 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.10.1" -- x-release-please-version +M.version = "15.11.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 5098a6987009199d5a5c4bfb8086d0fe4a94e0bb Mon Sep 17 00:00:00 2001 From: narutozxp <41829090+narutozxp@users.noreply.github.com> Date: Thu, 23 Oct 2025 18:04:47 +0800 Subject: [PATCH 146/171] fix(clipboard): connecting via vscpde's remote-ssh extension causes severe lag during yank and copy operations. (#6664) ## Description When connecting to a remote server via VSCode's Remote-SSH extension, the `SSH_TTY` environment variable is not set. Consequently, both the `vscode-neovim` extension (when using the remote Neovim instance) and Neovim launched from VSCode's integrated terminal use the system clipboard, resulting in severe lag. Additionally, the `yanky.nvim` plugin synchronizes with the system clipboard by default, regardless of whether the `clipboard` option is set to an empty string (`""`). This causes similar performance issues as described above. Using the `SSH_CONNECTION` environment variable instead of `SSH_TTY` can effectively resolve this issue. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/config/options.lua | 2 +- lua/lazyvim/plugins/extras/coding/yanky.lua | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/config/options.lua b/lua/lazyvim/config/options.lua index 2ae1b38d..809f5003 100644 --- a/lua/lazyvim/config/options.lua +++ b/lua/lazyvim/config/options.lua @@ -54,7 +54,7 @@ local opt = vim.opt opt.autowrite = true -- Enable auto write -- only set clipboard if not in ssh, to make sure the OSC 52 -- integration works automatically. -opt.clipboard = vim.env.SSH_TTY and "" or "unnamedplus" -- Sync with system clipboard +opt.clipboard = vim.env.SSH_CONNECTION and "" or "unnamedplus" -- Sync with system clipboard opt.completeopt = "menu,menuone,noselect" opt.conceallevel = 2 -- Hide * markup for bold and italic, but not markers with substitutions opt.confirm = true -- Confirm to save changes before exiting modified buffer diff --git a/lua/lazyvim/plugins/extras/coding/yanky.lua b/lua/lazyvim/plugins/extras/coding/yanky.lua index 6285796d..5b43b7df 100644 --- a/lua/lazyvim/plugins/extras/coding/yanky.lua +++ b/lua/lazyvim/plugins/extras/coding/yanky.lua @@ -5,6 +5,9 @@ return { desc = "Better Yank/Paste", event = "LazyFile", opts = { + system_clipboard = { + sync_with_ring = not vim.env.SSH_CONNECTION, + }, highlight = { timer = 150 }, }, keys = { From 231e476ec9292b56258f86e28773843cddaf34b8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 24 Oct 2025 06:06:38 +0200 Subject: [PATCH 147/171] fix(chezmoi): use vim.env.HOME instead of os.getenv("HOME") for Windows compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit vim.env.HOME works correctly on Windows where the HOME environment variable may not be set, while os.getenv("HOME") returns nil in such cases. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- lua/lazyvim/plugins/extras/util/chezmoi.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lua/lazyvim/plugins/extras/util/chezmoi.lua b/lua/lazyvim/plugins/extras/util/chezmoi.lua index ff4501db..201288a4 100644 --- a/lua/lazyvim/plugins/extras/util/chezmoi.lua +++ b/lua/lazyvim/plugins/extras/util/chezmoi.lua @@ -5,10 +5,15 @@ local pick_chezmoi = function() local fzf_lua = require("fzf-lua") local actions = { ["enter"] = function(selected) - fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = os.getenv("HOME") }) + fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = vim.env.HOME }) end, } - fzf_lua.files({ cmd = "chezmoi managed --include=files,symlinks", actions = actions, hidden = false }) + fzf_lua.files({ + cmd = "chezmoi managed --include=files,symlinks", + actions = actions, + cwd = vim.env.HOME, + hidden = false, + }) elseif LazyVim.pick.picker.name == "snacks" then local results = require("chezmoi.commands").list({ args = { @@ -50,7 +55,7 @@ return { "alker0/chezmoi.vim", init = function() vim.g["chezmoi#use_tmp_buffer"] = 1 - vim.g["chezmoi#source_dir_path"] = os.getenv("HOME") .. "/.local/share/chezmoi" + vim.g["chezmoi#source_dir_path"] = vim.env.HOME .. "/.local/share/chezmoi" end, }, { @@ -80,7 +85,7 @@ return { init = function() -- run chezmoi edit on file enter vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, { - pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" }, + pattern = { vim.env.HOME .. "/.local/share/chezmoi/*" }, callback = function() vim.schedule(require("chezmoi.commands.__edit").watch) end, From 28aa8feaf7d50bc70e70c7301b9b15b2b567b5d0 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Fri, 24 Oct 2025 04:08:18 +0000 Subject: [PATCH 148/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 61b193ba..8da45bff 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 23 +*LazyVim.txt* For Neovim Last change: 2025 October 24 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 4796fb4ac54744b69a45a6044655543b1c4231f0 Mon Sep 17 00:00:00 2001 From: denisu14 <56963235+denisu14@users.noreply.github.com> Date: Fri, 24 Oct 2025 02:12:11 -0400 Subject: [PATCH 149/171] fix(lang.ember): remove '.git' lang.ember (#6685) ## Description Removed ".git" from the recommended section of lang.ember so lang.ember isn't recommended for every git directory. ## Related Issue(s) None ## Screenshots image ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/lang/ember.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/ember.lua b/lua/lazyvim/plugins/extras/lang/ember.lua index d16ea82d..ac597bde 100644 --- a/lua/lazyvim/plugins/extras/lang/ember.lua +++ b/lua/lazyvim/plugins/extras/lang/ember.lua @@ -2,7 +2,7 @@ return { recommended = function() return LazyVim.extras.wants({ ft = { "handlebars", "typescript", "javascript", "typescript.glimmer", "javascript.glimmer" }, - root = { "ember-cli-build.js", ".git" }, + root = { "ember-cli-build.js" }, }) end, { From 46e419d27efb5b7282a5ab17a49f4745ce23b55a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 24 Oct 2025 15:35:49 -0700 Subject: [PATCH 150/171] fix(root): don't use fs_realpath on windows --- lua/lazyvim/util/root.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/util/root.lua b/lua/lazyvim/util/root.lua index b3d68721..9ce96141 100644 --- a/lua/lazyvim/util/root.lua +++ b/lua/lazyvim/util/root.lua @@ -78,7 +78,7 @@ function M.realpath(path) if path == "" or path == nil then return nil end - path = vim.uv.fs_realpath(path) or path + path = vim.fn.has("win32") == 0 and vim.uv.fs_realpath(path) or path return LazyVim.norm(path) end From 84ca4dffdbf175a5e7bc39904157700854d8b2ad Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 25 Oct 2025 07:57:37 +0200 Subject: [PATCH 151/171] feat(sidekick): added NES toggle `uN`. Closes #6692 --- lua/lazyvim/plugins/extras/ai/sidekick.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lua/lazyvim/plugins/extras/ai/sidekick.lua b/lua/lazyvim/plugins/extras/ai/sidekick.lua index c1c38c58..d9c0c2e2 100644 --- a/lua/lazyvim/plugins/extras/ai/sidekick.lua +++ b/lua/lazyvim/plugins/extras/ai/sidekick.lua @@ -65,6 +65,15 @@ return { return true end end + Snacks.toggle({ + name = "Sidekick NES", + get = function() + return require("sidekick.nes").enabled + end, + set = function(state) + require("sidekick.nes").enable(state) + end, + }):map("uN") end, -- stylua: ignore keys = { From f581de801319f07b296426a91a3f204d0cfd9f4c Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sat, 25 Oct 2025 05:59:28 +0000 Subject: [PATCH 152/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 8da45bff..aaffe254 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 24 +*LazyVim.txt* For Neovim Last change: 2025 October 25 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 39644330624139dddb857ed833987c1cfd8432cf Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 25 Oct 2025 16:56:19 +0200 Subject: [PATCH 153/171] feat(lsp): refactor lsp code to use `Snacks.util.lsp.on` --- lua/lazyvim/plugins/extras/ai/copilot.lua | 4 +- lua/lazyvim/plugins/extras/editor/navic.lua | 6 +- lua/lazyvim/plugins/extras/lang/angular.lua | 4 +- lua/lazyvim/plugins/extras/lang/go.lua | 4 +- lua/lazyvim/plugins/extras/lang/python.lua | 4 +- .../plugins/extras/lang/typescript.lua | 4 +- lua/lazyvim/plugins/lsp/init.lua | 17 ++-- lua/lazyvim/util/deprecated.lua | 16 +++ lua/lazyvim/util/lsp.lua | 97 ------------------- 9 files changed, 36 insertions(+), 120 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot.lua b/lua/lazyvim/plugins/extras/ai/copilot.lua index 3b5d2275..989d7d4f 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot.lua @@ -85,9 +85,9 @@ return { copilot_cmp.setup(opts) -- attach cmp source whenever copilot attaches -- fixes lazy-loading issues with the copilot cmp source - LazyVim.lsp.on_attach(function() + Snacks.util.lsp.on({ name = "copilot" }, function() copilot_cmp._on_insert_enter({}) - end, "copilot") + end) end, specs = { { diff --git a/lua/lazyvim/plugins/extras/editor/navic.lua b/lua/lazyvim/plugins/extras/editor/navic.lua index 91ec203c..eeac37a7 100644 --- a/lua/lazyvim/plugins/extras/editor/navic.lua +++ b/lua/lazyvim/plugins/extras/editor/navic.lua @@ -7,10 +7,8 @@ return { lazy = true, init = function() vim.g.navic_silence = true - LazyVim.lsp.on_attach(function(client, buffer) - if client:supports_method("textDocument/documentSymbol") then - require("nvim-navic").attach(client, buffer) - end + Snacks.util.lsp.on({ method = "textDocument/documentSymbol" }, function(buffer, client) + require("nvim-navic").attach(client, buffer) end) end, opts = function() diff --git a/lua/lazyvim/plugins/extras/lang/angular.lua b/lua/lazyvim/plugins/extras/lang/angular.lua index d2f7fdee..cbe0252c 100644 --- a/lua/lazyvim/plugins/extras/lang/angular.lua +++ b/lua/lazyvim/plugins/extras/lang/angular.lua @@ -35,10 +35,10 @@ return { }, setup = { angularls = function() - LazyVim.lsp.on_attach(function(client) + Snacks.util.lsp.on({ name = "angularls" }, function(_, client) --HACK: disable angular renaming capability due to duplicate rename popping up client.server_capabilities.renameProvider = false - end, "angularls") + end) end, }, }, diff --git a/lua/lazyvim/plugins/extras/lang/go.lua b/lua/lazyvim/plugins/extras/lang/go.lua index 86f984f5..7098a055 100644 --- a/lua/lazyvim/plugins/extras/lang/go.lua +++ b/lua/lazyvim/plugins/extras/lang/go.lua @@ -55,7 +55,7 @@ return { gopls = function(_, opts) -- workaround for gopls not supporting semanticTokensProvider -- https://github.com/golang/go/issues/54531#issuecomment-1464982242 - LazyVim.lsp.on_attach(function(client, _) + Snacks.util.lsp.on({ name = "gopls" }, function(_, client) if not client.server_capabilities.semanticTokensProvider then local semantic = client.config.capabilities.textDocument.semanticTokens client.server_capabilities.semanticTokensProvider = { @@ -67,7 +67,7 @@ return { range = true, } end - end, "gopls") + end) -- end workaround end, }, diff --git a/lua/lazyvim/plugins/extras/lang/python.lua b/lua/lazyvim/plugins/extras/lang/python.lua index 7a77cbc6..bfe9e210 100644 --- a/lua/lazyvim/plugins/extras/lang/python.lua +++ b/lua/lazyvim/plugins/extras/lang/python.lua @@ -58,10 +58,10 @@ return { }, setup = { [ruff] = function() - LazyVim.lsp.on_attach(function(client, _) + Snacks.util.lsp.on({ name = ruff }, function(_, client) -- Disable hover in favor of Pyright client.server_capabilities.hoverProvider = false - end, ruff) + end) end, }, }, diff --git a/lua/lazyvim/plugins/extras/lang/typescript.lua b/lua/lazyvim/plugins/extras/lang/typescript.lua index c859ff8d..101b83f2 100644 --- a/lua/lazyvim/plugins/extras/lang/typescript.lua +++ b/lua/lazyvim/plugins/extras/lang/typescript.lua @@ -154,7 +154,7 @@ return { resolve("vtsls") end - LazyVim.lsp.on_attach(function(client, buffer) + Snacks.util.lsp.on({ name = "vtsls" }, function(buffer, client) client.commands["_typescript.moveToFileRefactoring"] = function(command, ctx) ---@type string, string, lsp.Range local action, uri, range = unpack(command.arguments) @@ -203,7 +203,7 @@ return { end) end) end - end, "vtsls") + end) -- copy typescript settings to javascript opts.settings.javascript = vim.tbl_deep_extend("force", {}, opts.settings.typescript, opts.settings.javascript or {}) diff --git a/lua/lazyvim/plugins/lsp/init.lua b/lua/lazyvim/plugins/lsp/init.lua index 5d93c399..9128ba13 100644 --- a/lua/lazyvim/plugins/lsp/init.lua +++ b/lua/lazyvim/plugins/lsp/init.lua @@ -125,16 +125,15 @@ return { LazyVim.format.register(LazyVim.lsp.formatter()) -- setup keymaps - LazyVim.lsp.on_attach(function(client, buffer) - require("lazyvim.plugins.lsp.keymaps").on_attach(client, buffer) - end) - - LazyVim.lsp.setup() - LazyVim.lsp.on_dynamic_capability(require("lazyvim.plugins.lsp.keymaps").on_attach) + for server, server_opts in pairs(opts.servers) do + if type(server_opts) == "table" and server_opts.keys then + require("lazyvim.plugins.lsp.keymaps").set({ name = server ~= "*" and server or nil }, server_opts.keys) + end + end -- inlay hints if opts.inlay_hints.enabled then - LazyVim.lsp.on_supports_method("textDocument/inlayHint", function(client, buffer) + Snacks.util.lsp.on({ method = "textDocument/inlayHint" }, function(buffer) if vim.api.nvim_buf_is_valid(buffer) and vim.bo[buffer].buftype == "" @@ -147,7 +146,7 @@ return { -- folds if opts.folds.enabled then - LazyVim.lsp.on_supports_method("textDocument/foldingRange", function(client, buffer) + Snacks.util.lsp.on({ method = "textDocument/foldingRange" }, function() if LazyVim.set_default("foldmethod", "expr") then LazyVim.set_default("foldexpr", "v:lua.vim.lsp.foldexpr()") end @@ -156,7 +155,7 @@ return { -- code lens if opts.codelens.enabled and vim.lsp.codelens then - LazyVim.lsp.on_supports_method("textDocument/codeLens", function(client, buffer) + Snacks.util.lsp.on({ method = "textDocument/codeLens" }, function(buffer) vim.lsp.codelens.refresh() vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "InsertLeave" }, { buffer = buffer, diff --git a/lua/lazyvim/util/deprecated.lua b/lua/lazyvim/util/deprecated.lua index 3aad7318..49e24d68 100644 --- a/lua/lazyvim/util/deprecated.lua +++ b/lua/lazyvim/util/deprecated.lua @@ -6,6 +6,22 @@ M.moved = { rename_file = { "Snacks.rename.rename_file" }, on_rename = { "Snacks.rename.on_rename_file" }, words = { "Snacks.words" }, + on_supports_method = { + "Snacks.util.lsp.on", + fn = function(method, cb) + return Snacks.util.lsp.on({ method = method }, function(buffer, client) + cb(client, buffer) + end) + end, + }, + on_attach = { + "Snacks.util.lsp.on", + fn = function(cb, name) + return Snacks.util.lsp.on({ name = name }, function(buffer, client) + cb(client, buffer) + end) + end, + }, }, terminal = { open = { "Snacks.terminal" }, diff --git a/lua/lazyvim/util/lsp.lua b/lua/lazyvim/util/lsp.lua index a857422f..90a6a3c7 100644 --- a/lua/lazyvim/util/lsp.lua +++ b/lua/lazyvim/util/lsp.lua @@ -1,103 +1,6 @@ ---@class lazyvim.util.lsp local M = {} ----@param on_attach fun(client:vim.lsp.Client, buffer) ----@param name? string -function M.on_attach(on_attach, name) - return vim.api.nvim_create_autocmd("LspAttach", { - callback = function(args) - local buffer = args.buf ---@type number - local client = vim.lsp.get_client_by_id(args.data.client_id) - if client and (not name or client.name == name) then - return on_attach(client, buffer) - end - end, - }) -end - ----@type table>> -M._supports_method = {} - -function M.setup() - local register_capability = vim.lsp.handlers["client/registerCapability"] - vim.lsp.handlers["client/registerCapability"] = function(err, res, ctx) - ---@diagnostic disable-next-line: no-unknown - local ret = register_capability(err, res, ctx) - local client = vim.lsp.get_client_by_id(ctx.client_id) - if client then - for buffer in pairs(client.attached_buffers) do - vim.api.nvim_exec_autocmds("User", { - pattern = "LspDynamicCapability", - data = { client_id = client.id, buffer = buffer }, - }) - end - end - return ret - end - M.on_attach(M._check_methods) - M.on_dynamic_capability(M._check_methods) -end - ----@param client vim.lsp.Client -function M._check_methods(client, buffer) - -- don't trigger on invalid buffers - if not vim.api.nvim_buf_is_valid(buffer) then - return - end - -- don't trigger on non-listed buffers - if not vim.bo[buffer].buflisted then - return - end - -- don't trigger on nofile buffers - if vim.bo[buffer].buftype == "nofile" then - return - end - for method, clients in pairs(M._supports_method) do - clients[client] = clients[client] or {} - if not clients[client][buffer] then - if client.supports_method and client:supports_method(method, buffer) then - clients[client][buffer] = true - vim.api.nvim_exec_autocmds("User", { - pattern = "LspSupportsMethod", - data = { client_id = client.id, buffer = buffer, method = method }, - }) - end - end - end -end - ----@param fn fun(client:vim.lsp.Client, buffer):boolean? ----@param opts? {group?: integer} -function M.on_dynamic_capability(fn, opts) - return vim.api.nvim_create_autocmd("User", { - pattern = "LspDynamicCapability", - group = opts and opts.group or nil, - callback = function(args) - local client = vim.lsp.get_client_by_id(args.data.client_id) - local buffer = args.data.buffer ---@type number - if client then - return fn(client, buffer) - end - end, - }) -end - ----@param method string ----@param fn fun(client:vim.lsp.Client, buffer) -function M.on_supports_method(method, fn) - M._supports_method[method] = M._supports_method[method] or setmetatable({}, { __mode = "k" }) - return vim.api.nvim_create_autocmd("User", { - pattern = "LspSupportsMethod", - callback = function(args) - local client = vim.lsp.get_client_by_id(args.data.client_id) - local buffer = args.data.buffer ---@type number - if client and method == args.data.method then - return fn(client, buffer) - end - end, - }) -end - ---@param opts? LazyFormatter| {filter?: (string|vim.lsp.get_clients.Filter)} function M.formatter(opts) opts = opts or {} From cd8c4977a0a8e80750ed6a10992f988f811c6417 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 25 Oct 2025 16:57:16 +0200 Subject: [PATCH 154/171] feat(lsp): lsp keymaps can now be configured with `lsp-config.opts.servers['*'].keys` like for lsp servers --- lua/lazyvim/plugins/extras/editor/fzf.lua | 21 +-- .../plugins/extras/editor/inc-rename.lua | 31 +++-- .../plugins/extras/editor/snacks_picker.lua | 31 +++-- .../plugins/extras/editor/telescope.lua | 23 ++-- lua/lazyvim/plugins/lsp/init.lua | 62 +++++++-- lua/lazyvim/plugins/lsp/keymaps.lua | 129 +++++++----------- lua/lazyvim/util/init.lua | 2 +- 7 files changed, 160 insertions(+), 139 deletions(-) diff --git a/lua/lazyvim/plugins/extras/editor/fzf.lua b/lua/lazyvim/plugins/extras/editor/fzf.lua index 46e99ace..8e17c671 100644 --- a/lua/lazyvim/plugins/extras/editor/fzf.lua +++ b/lua/lazyvim/plugins/extras/editor/fzf.lua @@ -289,15 +289,16 @@ return { { "neovim/nvim-lspconfig", - opts = function() - local Keys = require("lazyvim.plugins.lsp.keymaps").get() - -- stylua: ignore - vim.list_extend(Keys, { - { "gd", "FzfLua lsp_definitions jump1=true ignore_current_line=true", desc = "Goto Definition", has = "definition" }, - { "gr", "FzfLua lsp_references jump1=true ignore_current_line=true", desc = "References", nowait = true }, - { "gI", "FzfLua lsp_implementations jump1=true ignore_current_line=true", desc = "Goto Implementation" }, - { "gy", "FzfLua lsp_typedefs jump1=true ignore_current_line=true", desc = "Goto T[y]pe Definition" }, - }) - end, + opts = { + servers = { + -- stylua: ignore + ["*"] = { + { "gd", "FzfLua lsp_definitions jump1=true ignore_current_line=true", desc = "Goto Definition", has = "definition" }, + { "gr", "FzfLua lsp_references jump1=true ignore_current_line=true", desc = "References", nowait = true }, + { "gI", "FzfLua lsp_implementations jump1=true ignore_current_line=true", desc = "Goto Implementation" }, + { "gy", "FzfLua lsp_typedefs jump1=true ignore_current_line=true", desc = "Goto T[y]pe Definition" }, + }, + }, + }, }, } diff --git a/lua/lazyvim/plugins/extras/editor/inc-rename.lua b/lua/lazyvim/plugins/extras/editor/inc-rename.lua index a7c65243..b01f65f3 100644 --- a/lua/lazyvim/plugins/extras/editor/inc-rename.lua +++ b/lua/lazyvim/plugins/extras/editor/inc-rename.lua @@ -12,19 +12,24 @@ return { -- LSP Keymaps { "neovim/nvim-lspconfig", - opts = function() - local keys = require("lazyvim.plugins.lsp.keymaps").get() - keys[#keys + 1] = { - "cr", - function() - local inc_rename = require("inc_rename") - return ":" .. inc_rename.config.cmd_name .. " " .. vim.fn.expand("") - end, - expr = true, - desc = "Rename (inc-rename.nvim)", - has = "rename", - } - end, + opts = { + servers = { + ["*"] = { + keys = { + { + "cr", + function() + local inc_rename = require("inc_rename") + return ":" .. inc_rename.config.cmd_name .. " " .. vim.fn.expand("") + end, + expr = true, + desc = "Rename (inc-rename.nvim)", + has = "rename", + }, + }, + }, + }, + }, }, --- Noice integration diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index 766a9e59..48eea01a 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -135,20 +135,23 @@ return { }, { "neovim/nvim-lspconfig", - opts = function() - local Keys = require("lazyvim.plugins.lsp.keymaps").get() - -- stylua: ignore - vim.list_extend(Keys, { - { "gd", function() Snacks.picker.lsp_definitions() end, desc = "Goto Definition", has = "definition" }, - { "gr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" }, - { "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" }, - { "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" }, - { "ss", function() Snacks.picker.lsp_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Symbols", has = "documentSymbol" }, - { "sS", function() Snacks.picker.lsp_workspace_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Workspace Symbols", has = "workspace/symbols" }, - { "gai", function() Snacks.picker.lsp_incoming_calls() end, desc = "C[a]lls Incoming", has = "callHierarchy/incomingCalls" }, - { "gao", function() Snacks.picker.lsp_outgoing_calls() end, desc = "C[a]lls Outgoing", has = "callHierarchy/outgoingCalls" }, - }) - end, + opts = { + servers = { + ["*"] = { + -- stylua: ignore + keys = { + { "gd", function() Snacks.picker.lsp_definitions() end, desc = "Goto Definition", has = "definition" }, + { "gr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" }, + { "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" }, + { "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" }, + { "ss", function() Snacks.picker.lsp_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Symbols", has = "documentSymbol" }, + { "sS", function() Snacks.picker.lsp_workspace_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Workspace Symbols", has = "workspace/symbols" }, + { "gai", function() Snacks.picker.lsp_incoming_calls() end, desc = "C[a]lls Incoming", has = "callHierarchy/incomingCalls" }, + { "gao", function() Snacks.picker.lsp_outgoing_calls() end, desc = "C[a]lls Outgoing", has = "callHierarchy/outgoingCalls" }, + }, + }, + }, + }, }, { "folke/todo-comments.nvim", diff --git a/lua/lazyvim/plugins/extras/editor/telescope.lua b/lua/lazyvim/plugins/extras/editor/telescope.lua index 0f5ee474..f8f3ed6a 100644 --- a/lua/lazyvim/plugins/extras/editor/telescope.lua +++ b/lua/lazyvim/plugins/extras/editor/telescope.lua @@ -284,15 +284,18 @@ return { { "neovim/nvim-lspconfig", - opts = function() - local Keys = require("lazyvim.plugins.lsp.keymaps").get() - -- stylua: ignore - vim.list_extend(Keys, { - { "gd", function() require("telescope.builtin").lsp_definitions({ reuse_win = true }) end, desc = "Goto Definition", has = "definition" }, - { "gr", "Telescope lsp_references", desc = "References", nowait = true }, - { "gI", function() require("telescope.builtin").lsp_implementations({ reuse_win = true }) end, desc = "Goto Implementation" }, - { "gy", function() require("telescope.builtin").lsp_type_definitions({ reuse_win = true }) end, desc = "Goto T[y]pe Definition" }, - }) - end, + opts = { + servers = { + ["*"] = { + -- stylua: ignore + keys = { + { "gd", function() require("telescope.builtin").lsp_definitions({ reuse_win = true }) end, desc = "Goto Definition", has = "definition" }, + { "gr", "Telescope lsp_references", desc = "References", nowait = true }, + { "gI", function() require("telescope.builtin").lsp_implementations({ reuse_win = true }) end, desc = "Goto Implementation" }, + { "gy", function() require("telescope.builtin").lsp_type_definitions({ reuse_win = true }) end, desc = "Goto T[y]pe Definition" }, + }, + }, + }, + }, }, } diff --git a/lua/lazyvim/plugins/lsp/init.lua b/lua/lazyvim/plugins/lsp/init.lua index 9128ba13..eb882c5c 100644 --- a/lua/lazyvim/plugins/lsp/init.lua +++ b/lua/lazyvim/plugins/lsp/init.lua @@ -7,6 +7,7 @@ return { "mason.nvim", { "mason-org/mason-lspconfig.nvim", config = function() end }, }, + opts_extend = { "servers.*.keys" }, opts = function() ---@class PluginLspOpts local ret = { @@ -51,15 +52,6 @@ return { folds = { enabled = true, }, - -- add any global capabilities here - capabilities = { - workspace = { - fileOperations = { - didRename = true, - willRename = true, - }, - }, - }, -- options for vim.lsp.buf.format -- `bufnr` and `filter` is handled by the LazyVim formatter, -- but can be also overridden when specified @@ -68,9 +60,47 @@ return { timeout_ms = nil, }, -- LSP Server Settings - ---@alias lazyvim.lsp.Config vim.lsp.Config|{mason?:boolean, enabled?:boolean} + -- Sets the default configuration for an LSP client (or all clients if the special name "*" is used). + ---@alias lazyvim.lsp.Config vim.lsp.Config|{mason?:boolean, enabled?:boolean, keys?:LazyKeysLspSpec[]} ---@type table servers = { + -- configuration for all lsp servers + ["*"] = { + capabilities = { + workspace = { + fileOperations = { + didRename = true, + willRename = true, + }, + }, + }, + -- stylua: ignore + keys = { + { "cl", function() Snacks.picker.lsp_config() end, desc = "Lsp Info" }, + { "gd", vim.lsp.buf.definition, desc = "Goto Definition", has = "definition" }, + { "gr", vim.lsp.buf.references, desc = "References", nowait = true }, + { "gI", vim.lsp.buf.implementation, desc = "Goto Implementation" }, + { "gy", vim.lsp.buf.type_definition, desc = "Goto T[y]pe Definition" }, + { "gD", vim.lsp.buf.declaration, desc = "Goto Declaration" }, + { "K", function() return vim.lsp.buf.hover() end, desc = "Hover" }, + { "gK", function() return vim.lsp.buf.signature_help() end, desc = "Signature Help", has = "signatureHelp" }, + { "", 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" }, + { "]]", function() Snacks.words.jump(vim.v.count1) end, has = "documentHighlight", + desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end }, + { "[[", function() Snacks.words.jump(-vim.v.count1) end, has = "documentHighlight", + desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end }, + { "", function() Snacks.words.jump(vim.v.count1, true) end, has = "documentHighlight", + desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end }, + { "", function() Snacks.words.jump(-vim.v.count1, true) end, has = "documentHighlight", + desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end }, + }, + }, stylua = { enabled = false }, lua_ls = { -- mason = false, -- set to false if you don't want this server to be installed with mason @@ -179,7 +209,14 @@ return { vim.diagnostic.config(vim.deepcopy(opts.diagnostics)) if opts.capabilities then - vim.lsp.config("*", { capabilities = opts.capabilities }) + LazyVim.deprecate("lsp-config.opts.capabilities", "Use lsp-config.opts.servers['*'].capabilities instead") + opts.servers["*"] = vim.tbl_deep_extend("force", opts.servers["*"] or {}, { + capabilities = opts.capabilities, + }) + end + + if opts.servers["*"] then + vim.lsp.config("*", opts.servers["*"]) end -- get all the servers that are available through mason-lspconfig @@ -191,6 +228,9 @@ return { ---@return boolean? exclude automatic setup local function configure(server) + if server == "*" then + return false + end local sopts = opts.servers[server] sopts = sopts == true and {} or (not sopts) and { enabled = false } or sopts --[[@as lazyvim.lsp.Config]] diff --git a/lua/lazyvim/plugins/lsp/keymaps.lua b/lua/lazyvim/plugins/lsp/keymaps.lua index 63be2902..8fe36647 100644 --- a/lua/lazyvim/plugins/lsp/keymaps.lua +++ b/lua/lazyvim/plugins/lsp/keymaps.lua @@ -1,97 +1,66 @@ local M = {} ---@type LazyKeysLspSpec[]|nil -M._keys = nil +M._keys = {} ---@alias LazyKeysLspSpec LazyKeysSpec|{has?:string|string[], cond?:fun():boolean} ---@alias LazyKeysLsp LazyKeys|{has?:string|string[], cond?:fun():boolean} +---@deprecated ---@return LazyKeysLspSpec[] function M.get() - if M._keys then - return M._keys - end - -- stylua: ignore - M._keys = { - { "cl", function() Snacks.picker.lsp_config() end, desc = "Lsp Info" }, - { "gd", vim.lsp.buf.definition, desc = "Goto Definition", has = "definition" }, - { "gr", vim.lsp.buf.references, desc = "References", nowait = true }, - { "gI", vim.lsp.buf.implementation, desc = "Goto Implementation" }, - { "gy", vim.lsp.buf.type_definition, desc = "Goto T[y]pe Definition" }, - { "gD", vim.lsp.buf.declaration, desc = "Goto Declaration" }, - { "K", function() return vim.lsp.buf.hover() end, desc = "Hover" }, - { "gK", function() return vim.lsp.buf.signature_help() end, desc = "Signature Help", has = "signatureHelp" }, - { "", 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" }, - { "]]", function() Snacks.words.jump(vim.v.count1) end, has = "documentHighlight", - desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end }, - { "[[", function() Snacks.words.jump(-vim.v.count1) end, has = "documentHighlight", - desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end }, - { "", function() Snacks.words.jump(vim.v.count1, true) end, has = "documentHighlight", - desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end }, - { "", function() Snacks.words.jump(-vim.v.count1, true) end, has = "documentHighlight", - desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end }, - } - + LazyVim.warn({ + 'Adding LSP keymaps via `require("lazyvim.plugins.lsp.keymaps").get()` is deprecated.', + "Please set keymaps via the `keys` field in the LSP server config.", + [[ +```lua +{ + "neovim/nvim-lspconfig", + opts = { + servers = { + ['*'] = { + keys = { + { "gd", "lua vim.lsp.buf.definition()", has = "definition"}, + }, + }, + }, + }, +} +```]], + }, { stacktrace = true }) + vim.schedule(function() + if #M._keys > 0 then + M.set({}, M._keys) + M._keys = {} + end + end) return M._keys end ----@param method string|string[] -function M.has(buffer, method) - if type(method) == "table" then - for _, m in ipairs(method) do - if M.has(buffer, m) then - return true +---@param filter vim.lsp.get_clients.Filter +---@param spec LazyKeysLspSpec[] +function M.set(filter, spec) + local Keys = require("lazy.core.handler.keys") + for _, keys in pairs(Keys.resolve(spec)) do + ---@cast keys LazyKeysLsp + if keys.cond == nil or keys.cond() then + local filters = {} ---@type vim.lsp.get_clients.Filter[] + if keys.has then + local methods = type(keys.has) == "string" and { keys.has } or keys.has --[[@as string[] ]] + for _, method in ipairs(methods) do + method = method:find("/") and method or ("textDocument/" .. method) + filters[#filters + 1] = vim.tbl_extend("force", vim.deepcopy(filter), { method = method }) + end + else + filters[#filters + 1] = filter end - end - return false - end - method = method:find("/") and method or "textDocument/" .. method - local clients = vim.lsp.get_clients({ bufnr = buffer }) - for _, client in ipairs(clients) do - if client:supports_method(method) then - return true - end - end - return false -end ----@return LazyKeysLsp[] -function M.resolve(buffer) - local Keys = require("lazy.core.handler.keys") - if not Keys.resolve then - return {} - end - local spec = vim.tbl_extend("force", {}, M.get()) - local opts = LazyVim.opts("nvim-lspconfig") - local clients = vim.lsp.get_clients({ bufnr = buffer }) - for _, client in ipairs(clients) do - local maps = opts.servers[client.name] and opts.servers[client.name].keys or {} - vim.list_extend(spec, maps) - end - return Keys.resolve(spec) -end - -function M.on_attach(_, buffer) - local Keys = require("lazy.core.handler.keys") - local keymaps = M.resolve(buffer) - - for _, keys in pairs(keymaps) do - local has = not keys.has or M.has(buffer, keys.has) - local cond = not (keys.cond == false or ((type(keys.cond) == "function") and not keys.cond())) - - if has and cond then - local opts = Keys.opts(keys) - opts.cond = nil - opts.has = nil - opts.silent = opts.silent ~= false - opts.buffer = buffer - vim.keymap.set(keys.mode or "n", keys.lhs, keys.rhs, opts) + for _, f in ipairs(filters) do + local opts = Keys.opts(keys) + ---@cast opts snacks.keymap.set.Opts + opts.lsp = f + Snacks.keymap.set(keys.mode or "n", keys.lhs, keys.rhs, opts) + end end end end diff --git a/lua/lazyvim/util/init.lua b/lua/lazyvim/util/init.lua index 812e6f22..be5f91f2 100644 --- a/lua/lazyvim/util/init.lua +++ b/lua/lazyvim/util/init.lua @@ -221,7 +221,7 @@ function M.safe_keymap_set(mode, lhs, rhs, opts) ---@diagnostic disable-next-line: no-unknown opts.remap = nil end - vim.keymap.set(modes, lhs, rhs, opts) + Snacks.keymap.set(modes, lhs, rhs, opts) end end From acc35382294d91b279b319510b906249a03b2764 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 25 Oct 2025 16:57:40 +0200 Subject: [PATCH 155/171] feat(keymaps): added `r` to run the selection/file with lua --- lua/lazyvim/config/keymaps.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 52bb9e9f..05d07a21 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -207,3 +207,6 @@ map("n", "", "tabnew", { desc = "New Tab" }) map("n", "]", "tabnext", { desc = "Next Tab" }) map("n", "d", "tabclose", { desc = "Close Tab" }) map("n", "[", "tabprevious", { desc = "Previous Tab" }) + +-- lua +map({"n", "x"}, "r", function() Snacks.debug.run() end, { desc = "Run Lua", ft = "lua" }) From 8b8ceb6c878cd9c44dac4b6beb70a7bb82d86c30 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 25 Oct 2025 17:18:21 +0200 Subject: [PATCH 156/171] chore(main): release 15.12.0 (#6677) :robot: I have created a release *beep* *boop* --- ## [15.12.0](https://github.com/LazyVim/LazyVim/compare/v15.11.0...v15.12.0) (2025-10-25) ### Features * **keymaps:** added `r` to run the selection/file with lua ([acc3538](https://github.com/LazyVim/LazyVim/commit/acc35382294d91b279b319510b906249a03b2764)) * **lsp:** lsp keymaps can now be configured with `lsp-config.opts.servers['*'].keys` like for lsp servers ([cd8c497](https://github.com/LazyVim/LazyVim/commit/cd8c4977a0a8e80750ed6a10992f988f811c6417)) * **lsp:** refactor lsp code to use `Snacks.util.lsp.on` ([3964433](https://github.com/LazyVim/LazyVim/commit/39644330624139dddb857ed833987c1cfd8432cf)) * **sidekick:** added NES toggle `uN`. Closes [#6692](https://github.com/LazyVim/LazyVim/issues/6692) ([84ca4df](https://github.com/LazyVim/LazyVim/commit/84ca4dffdbf175a5e7bc39904157700854d8b2ad)) ### Bug Fixes * **chezmoi:** use vim.env.HOME instead of os.getenv("HOME") for Windows compatibility ([231e476](https://github.com/LazyVim/LazyVim/commit/231e476ec9292b56258f86e28773843cddaf34b8)) * **clipboard:** connecting via vscpde's remote-ssh extension causes severe lag during yank and copy operations. ([#6664](https://github.com/LazyVim/LazyVim/issues/6664)) ([5098a69](https://github.com/LazyVim/LazyVim/commit/5098a6987009199d5a5c4bfb8086d0fe4a94e0bb)) * **lang.ember:** remove '.git' lang.ember ([#6685](https://github.com/LazyVim/LazyVim/issues/6685)) ([4796fb4](https://github.com/LazyVim/LazyVim/commit/4796fb4ac54744b69a45a6044655543b1c4231f0)) * **root:** don't use fs_realpath on windows ([46e419d](https://github.com/LazyVim/LazyVim/commit/46e419d27efb5b7282a5ab17a49f4745ce23b55a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 18 ++++++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 70ffac5e..425d0100 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.11.0" + ".": "15.12.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 5750eefe..ba1f2867 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## [15.12.0](https://github.com/LazyVim/LazyVim/compare/v15.11.0...v15.12.0) (2025-10-25) + + +### Features + +* **keymaps:** added `r` to run the selection/file with lua ([acc3538](https://github.com/LazyVim/LazyVim/commit/acc35382294d91b279b319510b906249a03b2764)) +* **lsp:** lsp keymaps can now be configured with `lsp-config.opts.servers['*'].keys` like for lsp servers ([cd8c497](https://github.com/LazyVim/LazyVim/commit/cd8c4977a0a8e80750ed6a10992f988f811c6417)) +* **lsp:** refactor lsp code to use `Snacks.util.lsp.on` ([3964433](https://github.com/LazyVim/LazyVim/commit/39644330624139dddb857ed833987c1cfd8432cf)) +* **sidekick:** added NES toggle `uN`. Closes [#6692](https://github.com/LazyVim/LazyVim/issues/6692) ([84ca4df](https://github.com/LazyVim/LazyVim/commit/84ca4dffdbf175a5e7bc39904157700854d8b2ad)) + + +### Bug Fixes + +* **chezmoi:** use vim.env.HOME instead of os.getenv("HOME") for Windows compatibility ([231e476](https://github.com/LazyVim/LazyVim/commit/231e476ec9292b56258f86e28773843cddaf34b8)) +* **clipboard:** connecting via vscpde's remote-ssh extension causes severe lag during yank and copy operations. ([#6664](https://github.com/LazyVim/LazyVim/issues/6664)) ([5098a69](https://github.com/LazyVim/LazyVim/commit/5098a6987009199d5a5c4bfb8086d0fe4a94e0bb)) +* **lang.ember:** remove '.git' lang.ember ([#6685](https://github.com/LazyVim/LazyVim/issues/6685)) ([4796fb4](https://github.com/LazyVim/LazyVim/commit/4796fb4ac54744b69a45a6044655543b1c4231f0)) +* **root:** don't use fs_realpath on windows ([46e419d](https://github.com/LazyVim/LazyVim/commit/46e419d27efb5b7282a5ab17a49f4745ce23b55a)) + ## [15.11.0](https://github.com/LazyVim/LazyVim/compare/v15.10.1...v15.11.0) (2025-10-23) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 5fc36492..d30ea584 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.11.0" -- x-release-please-version +M.version = "15.12.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From b5ea1e9d25202e38a47f0b03ac35cc587c80e6d7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 25 Oct 2025 23:20:52 +0200 Subject: [PATCH 157/171] fix(fzf-lua): LSP keymaps. Closes #6698 --- lua/lazyvim/plugins/extras/editor/fzf.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lua/lazyvim/plugins/extras/editor/fzf.lua b/lua/lazyvim/plugins/extras/editor/fzf.lua index 8e17c671..f63716c5 100644 --- a/lua/lazyvim/plugins/extras/editor/fzf.lua +++ b/lua/lazyvim/plugins/extras/editor/fzf.lua @@ -293,10 +293,12 @@ return { servers = { -- stylua: ignore ["*"] = { - { "gd", "FzfLua lsp_definitions jump1=true ignore_current_line=true", desc = "Goto Definition", has = "definition" }, - { "gr", "FzfLua lsp_references jump1=true ignore_current_line=true", desc = "References", nowait = true }, - { "gI", "FzfLua lsp_implementations jump1=true ignore_current_line=true", desc = "Goto Implementation" }, - { "gy", "FzfLua lsp_typedefs jump1=true ignore_current_line=true", desc = "Goto T[y]pe Definition" }, + keys = { + { "gd", "FzfLua lsp_definitions jump1=true ignore_current_line=true", desc = "Goto Definition", has = "definition" }, + { "gr", "FzfLua lsp_references jump1=true ignore_current_line=true", desc = "References", nowait = true }, + { "gI", "FzfLua lsp_implementations jump1=true ignore_current_line=true", desc = "Goto Implementation" }, + { "gy", "FzfLua lsp_typedefs jump1=true ignore_current_line=true", desc = "Goto T[y]pe Definition" }, + } }, }, }, From d2d0c641ed443f8d2ea9e131ec90df59ea149d0a Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 26 Oct 2025 11:58:23 +0100 Subject: [PATCH 158/171] fix(navic): navic attach. Closes #6702 --- lua/lazyvim/plugins/extras/editor/navic.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/plugins/extras/editor/navic.lua b/lua/lazyvim/plugins/extras/editor/navic.lua index eeac37a7..806a7bfe 100644 --- a/lua/lazyvim/plugins/extras/editor/navic.lua +++ b/lua/lazyvim/plugins/extras/editor/navic.lua @@ -7,11 +7,11 @@ return { lazy = true, init = function() vim.g.navic_silence = true + end, + opts = function() Snacks.util.lsp.on({ method = "textDocument/documentSymbol" }, function(buffer, client) require("nvim-navic").attach(client, buffer) end) - end, - opts = function() return { separator = " ", highlight = true, From 7831bff9af71a783e7d8dd52f56e9b8477521710 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sun, 26 Oct 2025 10:59:58 +0000 Subject: [PATCH 159/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index aaffe254..16c427cd 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 25 +*LazyVim.txt* For Neovim Last change: 2025 October 26 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 235cadf4cf5cfc32bb97ea3481221dbecfc30a00 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 26 Oct 2025 12:01:47 +0100 Subject: [PATCH 160/171] chore(main): release 15.12.1 (#6699) :robot: I have created a release *beep* *boop* --- ## [15.12.1](https://github.com/LazyVim/LazyVim/compare/v15.12.0...v15.12.1) (2025-10-26) ### Bug Fixes * **fzf-lua:** LSP keymaps. Closes [#6698](https://github.com/LazyVim/LazyVim/issues/6698) ([b5ea1e9](https://github.com/LazyVim/LazyVim/commit/b5ea1e9d25202e38a47f0b03ac35cc587c80e6d7)) * **navic:** navic attach. Closes [#6702](https://github.com/LazyVim/LazyVim/issues/6702) ([d2d0c64](https://github.com/LazyVim/LazyVim/commit/d2d0c641ed443f8d2ea9e131ec90df59ea149d0a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 425d0100..bc4d0453 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.12.0" + ".": "15.12.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index ba1f2867..5b05541c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [15.12.1](https://github.com/LazyVim/LazyVim/compare/v15.12.0...v15.12.1) (2025-10-26) + + +### Bug Fixes + +* **fzf-lua:** LSP keymaps. Closes [#6698](https://github.com/LazyVim/LazyVim/issues/6698) ([b5ea1e9](https://github.com/LazyVim/LazyVim/commit/b5ea1e9d25202e38a47f0b03ac35cc587c80e6d7)) +* **navic:** navic attach. Closes [#6702](https://github.com/LazyVim/LazyVim/issues/6702) ([d2d0c64](https://github.com/LazyVim/LazyVim/commit/d2d0c641ed443f8d2ea9e131ec90df59ea149d0a)) + ## [15.12.0](https://github.com/LazyVim/LazyVim/compare/v15.11.0...v15.12.0) (2025-10-25) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index d30ea584..63cdefdf 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.12.0" -- x-release-please-version +M.version = "15.12.1" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 1a401627146c66beaeb213f66dd02662f1006e82 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 26 Oct 2025 12:21:22 +0100 Subject: [PATCH 161/171] fix(lsp.keymaps): make cond -> enabled work again. Closes #6697 --- lua/lazyvim/plugins/lsp/init.lua | 8 +++---- lua/lazyvim/plugins/lsp/keymaps.lua | 35 ++++++++++++++--------------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/lua/lazyvim/plugins/lsp/init.lua b/lua/lazyvim/plugins/lsp/init.lua index eb882c5c..540b6c5c 100644 --- a/lua/lazyvim/plugins/lsp/init.lua +++ b/lua/lazyvim/plugins/lsp/init.lua @@ -92,13 +92,13 @@ return { { "cr", vim.lsp.buf.rename, desc = "Rename", has = "rename" }, { "cA", LazyVim.lsp.action.source, desc = "Source Action", has = "codeAction" }, { "]]", function() Snacks.words.jump(vim.v.count1) end, has = "documentHighlight", - desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end }, + desc = "Next Reference", enabled = function() return Snacks.words.is_enabled() end }, { "[[", function() Snacks.words.jump(-vim.v.count1) end, has = "documentHighlight", - desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end }, + desc = "Prev Reference", enabled = function() return Snacks.words.is_enabled() end }, { "", function() Snacks.words.jump(vim.v.count1, true) end, has = "documentHighlight", - desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end }, + desc = "Next Reference", enabled = function() return Snacks.words.is_enabled() end }, { "", function() Snacks.words.jump(-vim.v.count1, true) end, has = "documentHighlight", - desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end }, + desc = "Prev Reference", enabled = function() return Snacks.words.is_enabled() end }, }, }, stylua = { enabled = false }, diff --git a/lua/lazyvim/plugins/lsp/keymaps.lua b/lua/lazyvim/plugins/lsp/keymaps.lua index 8fe36647..57280055 100644 --- a/lua/lazyvim/plugins/lsp/keymaps.lua +++ b/lua/lazyvim/plugins/lsp/keymaps.lua @@ -3,8 +3,8 @@ local M = {} ---@type LazyKeysLspSpec[]|nil M._keys = {} ----@alias LazyKeysLspSpec LazyKeysSpec|{has?:string|string[], cond?:fun():boolean} ----@alias LazyKeysLsp LazyKeys|{has?:string|string[], cond?:fun():boolean} +---@alias LazyKeysLspSpec LazyKeysSpec|{has?:string|string[], enabled?:fun():boolean} +---@alias LazyKeysLsp LazyKeys|{has?:string|string[], enabled?:fun():boolean} ---@deprecated ---@return LazyKeysLspSpec[] @@ -43,24 +43,23 @@ function M.set(filter, spec) local Keys = require("lazy.core.handler.keys") for _, keys in pairs(Keys.resolve(spec)) do ---@cast keys LazyKeysLsp - if keys.cond == nil or keys.cond() then - local filters = {} ---@type vim.lsp.get_clients.Filter[] - if keys.has then - local methods = type(keys.has) == "string" and { keys.has } or keys.has --[[@as string[] ]] - for _, method in ipairs(methods) do - method = method:find("/") and method or ("textDocument/" .. method) - filters[#filters + 1] = vim.tbl_extend("force", vim.deepcopy(filter), { method = method }) - end - else - filters[#filters + 1] = filter + local filters = {} ---@type vim.lsp.get_clients.Filter[] + if keys.has then + local methods = type(keys.has) == "string" and { keys.has } or keys.has --[[@as string[] ]] + for _, method in ipairs(methods) do + method = method:find("/") and method or ("textDocument/" .. method) + filters[#filters + 1] = vim.tbl_extend("force", vim.deepcopy(filter), { method = method }) end + else + filters[#filters + 1] = filter + end - for _, f in ipairs(filters) do - local opts = Keys.opts(keys) - ---@cast opts snacks.keymap.set.Opts - opts.lsp = f - Snacks.keymap.set(keys.mode or "n", keys.lhs, keys.rhs, opts) - end + for _, f in ipairs(filters) do + local opts = Keys.opts(keys) + ---@cast opts snacks.keymap.set.Opts + opts.lsp = f + opts.enabled = keys.enabled + Snacks.keymap.set(keys.mode or "n", keys.lhs, keys.rhs, opts) end end end From d72127eb936f7f05d88d4fc316bc7e89080d69d8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 26 Oct 2025 12:27:05 +0100 Subject: [PATCH 162/171] chore(main): release 15.12.2 (#6703) :robot: I have created a release *beep* *boop* --- ## [15.12.2](https://github.com/LazyVim/LazyVim/compare/v15.12.1...v15.12.2) (2025-10-26) ### Bug Fixes * **lsp.keymaps:** make cond -> enabled work again. Closes [#6697](https://github.com/LazyVim/LazyVim/issues/6697) ([1a40162](https://github.com/LazyVim/LazyVim/commit/1a401627146c66beaeb213f66dd02662f1006e82)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index bc4d0453..350a6875 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.12.1" + ".": "15.12.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b05541c..d81a5b74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [15.12.2](https://github.com/LazyVim/LazyVim/compare/v15.12.1...v15.12.2) (2025-10-26) + + +### Bug Fixes + +* **lsp.keymaps:** make cond -> enabled work again. Closes [#6697](https://github.com/LazyVim/LazyVim/issues/6697) ([1a40162](https://github.com/LazyVim/LazyVim/commit/1a401627146c66beaeb213f66dd02662f1006e82)) + ## [15.12.1](https://github.com/LazyVim/LazyVim/compare/v15.12.0...v15.12.1) (2025-10-26) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 63cdefdf..5e56a073 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.12.1" -- x-release-please-version +M.version = "15.12.2" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 29fb479522e69971f1e57945b21b373190f4090f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sun, 26 Oct 2025 16:04:43 +0100 Subject: [PATCH 163/171] style: remove some vim.lsp calls during startup --- lua/lazyvim/plugins/extras/ai/copilot-native.lua | 2 +- lua/lazyvim/plugins/init.lua | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-native.lua b/lua/lazyvim/plugins/extras/ai/copilot-native.lua index a93e077a..3c1d0230 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-native.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-native.lua @@ -5,7 +5,7 @@ if lazyvim_docs then end if LazyVim.has_extra("ai.copilot-native") then - if not vim.lsp.inline_completion then + if vim.fn.has("nvim-0.12") == 0 then LazyVim.error("You need Neovim >= 0.12 to use the `ai.copilot-native` extra.") return {} end diff --git a/lua/lazyvim/plugins/init.lua b/lua/lazyvim/plugins/init.lua index 80394371..7797b047 100644 --- a/lua/lazyvim/plugins/init.lua +++ b/lua/lazyvim/plugins/init.lua @@ -7,14 +7,6 @@ if vim.fn.has("nvim-0.11.2") == 0 then vim.fn.getchar() vim.cmd([[quit]]) return {} -elseif not vim.lsp.is_enabled then - vim.schedule(function() - LazyVim.warn({ - "You're using an **old** `nightly` version of **Neovim**", - "Please update to a recent `nightly`,", - "or a stable version (`>= 0.11.2`).", - }) - end) end require("lazyvim.config").init() From cd745b14f84621caa5e9145509e9dd49c5d66f66 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sun, 26 Oct 2025 15:06:24 +0000 Subject: [PATCH 164/171] chore(build): auto-generate docs --- doc/LazyVim.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LazyVim.txt b/doc/LazyVim.txt index 16c427cd..1288f75d 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 October 26 +*LazyVim.txt* LazyVim docs ============================================================================== Table of Contents *LazyVim-table-of-contents* From 064e61058b6bbaef02a6143662628d105695b8e5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Oct 2025 16:14:16 +0100 Subject: [PATCH 165/171] chore(update): update repository (#6712) Automated changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action Co-authored-by: folke <292349+folke@users.noreply.github.com> --- .markdownlint-cli2.yaml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .markdownlint-cli2.yaml diff --git a/.markdownlint-cli2.yaml b/.markdownlint-cli2.yaml new file mode 100644 index 00000000..fc2ac02c --- /dev/null +++ b/.markdownlint-cli2.yaml @@ -0,0 +1,3 @@ +config: + MD013: false + MD033: false From 6b52a3059e52eed062b6ff3f56e70cffcbf879fe Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 31 Oct 2025 17:28:02 +0100 Subject: [PATCH 166/171] fix(treesitter): remove node requirement --- lua/lazyvim/util/treesitter.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazyvim/util/treesitter.lua b/lua/lazyvim/util/treesitter.lua index e8688a6f..c21908c6 100644 --- a/lua/lazyvim/util/treesitter.lua +++ b/lua/lazyvim/util/treesitter.lua @@ -80,7 +80,6 @@ function M.check() ["C compiler"] = have_cc, tar = have("tar"), curl = have("curl"), - node = have("node"), } local ok = true for _, v in pairs(ret) do From 5e981f9a8cd75eb6f49756e188411037b82b8045 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 1 Nov 2025 13:41:53 +0100 Subject: [PATCH 167/171] feat(snacks): `snacks.gh` integration. Enabled by default, unless the `util.octo` extra is enabled. --- lua/lazyvim/config/init.lua | 4 +++- lua/lazyvim/plugins/extras/editor/snacks_picker.lua | 6 +++++- lua/lazyvim/plugins/extras/util/octo.lua | 10 ++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 5e56a073..628e1099 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -34,7 +34,9 @@ local defaults = { dots = "󰇘", }, ft = { - octo = "", + octo = " ", + gh = " ", + ["markdown.gh"] = " ", }, dap = { Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" }, diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index 48eea01a..6220bfdf 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -73,9 +73,13 @@ return { { "fp", function() Snacks.picker.projects() end, desc = "Projects" }, -- git { "gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (hunks)" }, - { "gD", function() Snacks.picker.git_diff({ base = "origin" }) end, desc = "Git Diff (origin)" }, + { "gD", function() Snacks.picker.git_diff({ base = "origin", group = true }) end, desc = "Git Diff (origin)" }, { "gs", function() Snacks.picker.git_status() end, desc = "Git Status" }, { "gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" }, + { "gi", function() Snacks.picker.gh_issue() end, desc = "GitHub Issues (open)" }, + { "gI", function() Snacks.picker.gh_issue({ state = "all" }) end, desc = "GitHub Issues (all)" }, + { "gp", function() Snacks.picker.gh_pr() end, desc = "GitHub Pull Requests (open)" }, + { "gP", function() Snacks.picker.gh_pr({ state = "all" }) end, desc = "GitHub Pull Requests (all)" }, -- Grep { "sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" }, { "sB", function() Snacks.picker.grep_buffers() end, desc = "Grep Open Buffers" }, diff --git a/lua/lazyvim/plugins/extras/util/octo.lua b/lua/lazyvim/plugins/extras/util/octo.lua index d3316f5e..5637b8fd 100644 --- a/lua/lazyvim/plugins/extras/util/octo.lua +++ b/lua/lazyvim/plugins/extras/util/octo.lua @@ -3,6 +3,16 @@ return { -- depends on the git extra for highlighting and auto-completion of github issues/prs { import = "lazyvim.plugins.extras.lang.git" }, + { + "folke/snacks.nvim", + keys = { -- disable conflicting keymaps + { "gi", false }, + { "gI", false }, + { "gp", false }, + { "gP", false }, + }, + }, + -- Octo { "pwntester/octo.nvim", From 28db03f958d58dfff3c647ce28fdc1cb88ac158d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 13:44:04 +0100 Subject: [PATCH 168/171] chore(main): release 15.13.0 :robot: I have created a release *beep* *boop* --- ## [15.13.0](https://github.com/LazyVim/LazyVim/compare/v15.12.2...v15.13.0) (2025-11-01) ### Features * **snacks:** `snacks.gh` integration. Enabled by default, unless the `util.octo` extra is enabled. ([5e981f9](https://github.com/LazyVim/LazyVim/commit/5e981f9a8cd75eb6f49756e188411037b82b8045)) ### Bug Fixes * **treesitter:** remove node requirement ([6b52a30](https://github.com/LazyVim/LazyVim/commit/6b52a3059e52eed062b6ff3f56e70cffcbf879fe)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 12 ++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 350a6875..27277755 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.12.2" + ".": "15.13.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d81a5b74..24045345 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [15.13.0](https://github.com/LazyVim/LazyVim/compare/v15.12.2...v15.13.0) (2025-11-01) + + +### Features + +* **snacks:** `snacks.gh` integration. Enabled by default, unless the `util.octo` extra is enabled. ([5e981f9](https://github.com/LazyVim/LazyVim/commit/5e981f9a8cd75eb6f49756e188411037b82b8045)) + + +### Bug Fixes + +* **treesitter:** remove node requirement ([6b52a30](https://github.com/LazyVim/LazyVim/commit/6b52a3059e52eed062b6ff3f56e70cffcbf879fe)) + ## [15.12.2](https://github.com/LazyVim/LazyVim/compare/v15.12.1...v15.12.2) (2025-10-26) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 628e1099..562a0687 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.12.2" -- x-release-please-version +M.version = "15.13.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 42c9f7152b9bd1a4f739b115390370c208dc2a55 Mon Sep 17 00:00:00 2001 From: Thomas Vandal Date: Mon, 3 Nov 2025 01:51:07 -0500 Subject: [PATCH 169/171] feat(treesitter): support query table in treesitter-textobjects mappings (#6736) ## Description `treesitter-textobjects` mappings accept a table query (for the "move" mappings, at least, I haven't checked the others). Currently, in LazyVim, using a table causes an error due to the assumption that `query` is a string in the `config` function that creates the keymap description. This PR adds a simple loop to gather the queries from a table and join them with "or" in the description. Here is an example config and the resulting error. Everything works as expected with the PR and string (single) queries still behave as expected. ```lua { "nvim-treesitter/nvim-treesitter-textobjects", opts = { move = { keys = { goto_next_start = { ["]j"] = { "@function.outer", "@class.outer" } }, goto_next_end = { ["]J"] = { "@function.outer", "@class.outer" } }, goto_previous_start = { ["[j"] = { "@function.outer", "@class.outer" } }, goto_previous_end = { ["[J"] = { "@function.outer", "@class.outer" } }, }, }, }, } ``` ```lua Failed to run `config` for nvim-treesitter-textobjects ...vim-local/opt/LazyVim/lua/lazyvim/plugins/treesitter.lua:174: attempt to call method 'gsub' (a nil value) # stacktrace: - repos/nvim-local/opt/LazyVim/lua/lazyvim/plugins/treesitter.lua:174 - vim/shared.lua:0 _in_ **tbl_map** - repos/nvim-local/opt/LazyVim/lua/lazyvim/plugins/treesitter.lua:197 _in_ **config** ``` ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/treesitter.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 7fee6c38..4497ff1c 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -171,8 +171,14 @@ return { for method, keymaps in pairs(moves) do for key, query in pairs(keymaps) do - local desc = query:gsub("@", ""):gsub("%..*", "") - desc = desc:sub(1, 1):upper() .. desc:sub(2) + local queries = type(query) == "table" and query or { query } + local parts = {} + for _, q in ipairs(queries) do + local part = q:gsub("@", ""):gsub("%..*", "") + part = part:sub(1, 1):upper() .. part:sub(2) + table.insert(parts, part) + end + local desc = table.concat(parts, " or ") desc = (key:sub(1, 1) == "[" and "Prev " or "Next ") .. desc desc = desc .. (key:sub(2, 2) == key:sub(2, 2):upper() and " End" or " Start") if not (vim.wo.diff and key:find("[cC]")) then From a507822c0f67df661d1411f9274a65ca9cc832f5 Mon Sep 17 00:00:00 2001 From: AK47are <54732151+AK47are@users.noreply.github.com> Date: Thu, 6 Nov 2025 19:40:40 +0800 Subject: [PATCH 170/171] fix(terminal): add -NoProfile to powershell shellcmdflag (#6757) ## Description changing the PowerShell profile might accidentally cause errors in Neovim (see [issue](https://github.com/LazyVim/LazyVim/issues/4805)), which is a subtle bug. Add the `-NoProfile` flag to ensure Neovim is not affected by profile. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/util/terminal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/util/terminal.lua b/lua/lazyvim/util/terminal.lua index 0e1af758..4270d9c0 100644 --- a/lua/lazyvim/util/terminal.lua +++ b/lua/lazyvim/util/terminal.lua @@ -18,7 +18,7 @@ function M.setup(shell) -- Setting shell command flags vim.o.shellcmdflag = - "-NoLogo -NonInteractive -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new();$PSDefaultParameterValues['Out-File:Encoding']='utf8';$PSStyle.OutputRendering='plaintext';Remove-Alias -Force -ErrorAction SilentlyContinue tee;" + "-NoProfile -NoLogo -NonInteractive -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new();$PSDefaultParameterValues['Out-File:Encoding']='utf8';$PSStyle.OutputRendering='plaintext';Remove-Alias -Force -ErrorAction SilentlyContinue tee;" -- Setting shell redirection vim.o.shellredir = '2>&1 | %%{ "$_" } | Out-File %s; exit $LastExitCode' From c64a61734fc9d45470a72603395c02137802bc6f Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Tue, 11 Nov 2025 10:35:25 +0200 Subject: [PATCH 171/171] fix(terminal): partially revert previous mappings (#6770) ## Description Commit 4efd0e2bea2a387d6fcdea8cf36a62049e8bafed introduced some changes to terminal mappings. I tested in a new LazyVim installation and `sidekick.nvim` is not affected by `` any more. The mappings `hide_underscore` and `hide_slash` don't let user to create new terminals with `2`, `3` and so on. Instead they hide the terminal and user can't open split terminals next to each other any more. Therefore, I believe it would be a better default to revert these 2 mappings explicitly. ## Related Issue(s) None ## Screenshots ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/util.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/lua/lazyvim/plugins/util.lua b/lua/lazyvim/plugins/util.lua index 0357c3fb..8d8aa220 100644 --- a/lua/lazyvim/plugins/util.lua +++ b/lua/lazyvim/plugins/util.lua @@ -23,8 +23,6 @@ return { nav_j = { "", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" }, nav_k = { "", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" }, nav_l = { "", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" }, - hide_slash = { "", "hide", desc = "Hide Terminal", mode = { "t", "n" } }, - hide_underscore = { "", "hide", desc = "which_key_ignore", mode = { "t", "n" } }, }, }, },