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 01/74] 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 02/74] 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 03/74] 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 04/74] 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 05/74] 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 06/74] 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 07/74] 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 08/74] 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 09/74] 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 10/74] 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 11/74] 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 12/74] 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 13/74] 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 14/74] 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 15/74] 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 16/74] 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 17/74] 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 18/74] 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 19/74] 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 20/74] 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 21/74] 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 22/74] 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 23/74] 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 24/74] 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 25/74] 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 26/74] 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 27/74] 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 28/74] 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 29/74] 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 30/74] 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 31/74] 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 32/74] 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 33/74] 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 34/74] 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 35/74] 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 36/74] 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 37/74] 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 38/74] 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 39/74] 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 40/74] 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 41/74] 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 42/74] 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 43/74] 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 44/74] 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 45/74] 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 46/74] 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 47/74] 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 48/74] 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 49/74] 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 50/74] 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 51/74] 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 52/74] 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 53/74] 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 54/74] 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 55/74] 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 56/74] 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 57/74] 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 58/74] 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 59/74] 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 60/74] 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 61/74] 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 62/74] 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 63/74] 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 64/74] 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 65/74] 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 66/74] 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 67/74] 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 68/74] 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 69/74] 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 70/74] 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 71/74] 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 72/74] 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 73/74] 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 74/74] 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*