From ab304426527723e116742cd7862fc976f876107c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 5 Feb 2025 08:00:58 +0100 Subject: [PATCH 01/51] feat(snacks.picker): some extra keymaps --- lua/lazyvim/plugins/extras/editor/snacks_picker.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index 9685c369..143d459a 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -75,6 +75,7 @@ return { { "gc", function() Snacks.picker.git_log() end, desc = "Git Log" }, { "gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (hunks)" }, { "gs", function() Snacks.picker.git_status() end, desc = "Git Status" }, + { "gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" }, -- Grep { "sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" }, { "sB", function() Snacks.picker.grep_buffers() end, desc = "Grep Open Buffers" }, @@ -85,10 +86,12 @@ return { { "sW", LazyVim.pick("grep_word", { root = false }), desc = "Visual selection or word (cwd)", mode = { "n", "x" } }, -- search { 's"', function() Snacks.picker.registers() end, desc = "Registers" }, + { 's/', function() Snacks.picker.search_history() end, desc = "Search History" }, { "sa", function() Snacks.picker.autocmds() end, desc = "Autocmds" }, { "sc", function() Snacks.picker.command_history() end, desc = "Command History" }, { "sC", function() Snacks.picker.commands() end, desc = "Commands" }, { "sd", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" }, + { "sD", function() Snacks.picker.diagnostics_buffer() end, desc = "Diagnostics" }, { "sh", function() Snacks.picker.help() end, desc = "Help Pages" }, { "sH", function() Snacks.picker.highlights() end, desc = "Highlights" }, { "si", function() Snacks.picker.icons() end, desc = "Icons" }, From 634f3ea28f84ceaac76e8d2a827024e4beeaeaa4 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Wed, 5 Feb 2025 07:02:02 +0000 Subject: [PATCH 02/51] 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 50d40e8e..b645e69e 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 02 +*LazyVim.txt* For Neovim Last change: 2025 February 05 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 3e8fddcd54ee57ab6c00353ff37a4e9d7df361bd Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Wed, 5 Feb 2025 14:41:29 +0100 Subject: [PATCH 03/51] style(snacks.picker): buffer diagnostics keymap desc --- lua/lazyvim/plugins/extras/editor/snacks_picker.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index 143d459a..bd160f26 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -91,7 +91,7 @@ return { { "sc", function() Snacks.picker.command_history() end, desc = "Command History" }, { "sC", function() Snacks.picker.commands() end, desc = "Commands" }, { "sd", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" }, - { "sD", function() Snacks.picker.diagnostics_buffer() end, desc = "Diagnostics" }, + { "sD", function() Snacks.picker.diagnostics_buffer() end, desc = "Buffer Diagnostics" }, { "sh", function() Snacks.picker.help() end, desc = "Help Pages" }, { "sH", function() Snacks.picker.highlights() end, desc = "Highlights" }, { "si", function() Snacks.picker.icons() end, desc = "Icons" }, From 23a1bbdae90f37aab4a86bfb4c113531a28e7f71 Mon Sep 17 00:00:00 2001 From: RohitB <19793591+rbhanot4739@users.noreply.github.com> Date: Fri, 7 Feb 2025 02:09:37 +0530 Subject: [PATCH 04/51] feat(refactoring): fallback to using vim ui select for refactoring.nvim (#5540) ## Description Fallback to using `require("refactoring").select_refactor()` if neither of `telescope` or `fzf-lua` is installed. Since `select_refactor()` uses `vim.ui.select` internally, it can use `snacks.picker` if it is enabled. ## 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/editor/refactoring.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/plugins/extras/editor/refactoring.lua b/lua/lazyvim/plugins/extras/editor/refactoring.lua index 29920347..832940e9 100644 --- a/lua/lazyvim/plugins/extras/editor/refactoring.lua +++ b/lua/lazyvim/plugins/extras/editor/refactoring.lua @@ -1,10 +1,10 @@ local pick = function() + local refactoring = require("refactoring") if LazyVim.pick.picker.name == "telescope" then return require("telescope").extensions.refactoring.refactors() elseif LazyVim.pick.picker.name == "fzf" then local fzf_lua = require("fzf-lua") - local results = require("refactoring").get_refactors() - local refactoring = require("refactoring") + local results = refactoring.get_refactors() local opts = { fzf_opts = {}, @@ -16,6 +16,8 @@ local pick = function() }, } fzf_lua.fzf_exec(results, opts) + else + refactoring.select_refactor() end end From 94d0ac0a0cae69ecdba4aebd062c18fee68ce5f2 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Thu, 6 Feb 2025 20:40:54 +0000 Subject: [PATCH 05/51] 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 b645e69e..f2f14206 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 05 +*LazyVim.txt* For Neovim Last change: 2025 February 06 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 5c9732733de62a4e15988826f53d16a4dfdf960c Mon Sep 17 00:00:00 2001 From: cjon256 <3659487+cjon256@users.noreply.github.com> Date: Fri, 7 Feb 2025 18:09:03 -0500 Subject: [PATCH 06/51] fix(go): update go.lua to eliminate fieldalignment from analyses (#5170) ## Description Removed a setting from the go lang plugin. The setting now just causes an error: LSP[gopls] Invalid settings: setting option "analyses": this setting is deprecated, use "the 'fieldalignment' analyzer was removed in gopls/v0.17.0; instead, hover over struct fields to see size/offset information (https://go.dev/issue/66861)" instead ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. Note: submitted similar request as f96aac6 but was rejected by CI/CD for naming reasons. Changing the name did not help. Retrying. --- lua/lazyvim/plugins/extras/lang/go.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/lang/go.lua b/lua/lazyvim/plugins/extras/lang/go.lua index b9544cfd..bf3b22ee 100644 --- a/lua/lazyvim/plugins/extras/lang/go.lua +++ b/lua/lazyvim/plugins/extras/lang/go.lua @@ -37,7 +37,6 @@ return { rangeVariableTypes = true, }, analyses = { - fieldalignment = true, nilness = true, unusedparams = true, unusedwrite = true, From a10706e819b9f40bd3493304be4d75cd69fdf45a Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Fri, 7 Feb 2025 23:10:27 +0000 Subject: [PATCH 07/51] 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 f2f14206..43127781 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 06 +*LazyVim.txt* For Neovim Last change: 2025 February 07 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 597cd8ffa3c54471df860c4036a8c20e123292b9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 8 Feb 2025 00:10:47 +0100 Subject: [PATCH 08/51] chore(main): release 14.10.0 (#5500) :robot: I have created a release *beep* *boop* --- ## [14.10.0](https://github.com/LazyVim/LazyVim/compare/v14.9.0...v14.10.0) (2025-02-07) ### Features * **bufferline:** support for snacks picker sidebars ([3500d6a](https://github.com/LazyVim/LazyVim/commit/3500d6a826a32d06d921f3e22342734c61ef09fe)) * **refactoring:** fallback to using vim ui select for refactoring.nvim ([#5540](https://github.com/LazyVim/LazyVim/issues/5540)) ([23a1bbd](https://github.com/LazyVim/LazyVim/commit/23a1bbdae90f37aab4a86bfb4c113531a28e7f71)) * **snacks.explorer:** enabled netrw integration ([4f006f1](https://github.com/LazyVim/LazyVim/commit/4f006f1fba5fdaa0150c544ad7966b96ec9cb04a)) * **snacks.picker:** add projects picker to dashboard if snacks picker is enabled ([fb256f2](https://github.com/LazyVim/LazyVim/commit/fb256f2b688cb7ac9875f704fe6c00f27efc2354)) * **snacks.picker:** some extra keymaps ([ab30442](https://github.com/LazyVim/LazyVim/commit/ab304426527723e116742cd7862fc976f876107c)) * **snippets:** mini.snippets is out of beta ([#5505](https://github.com/LazyVim/LazyVim/issues/5505)) ([4a81a37](https://github.com/LazyVim/LazyVim/commit/4a81a370d7868d7db32042f69b0fc5a6218059c5)) ### Bug Fixes * **copilot:** remove load on BufReadPost instead of InsertEnter ([8f4e9b8](https://github.com/LazyVim/LazyVim/commit/8f4e9b8c1e43e354d91529484aedca54f04bdcf6)) * **go:** update go.lua to eliminate fieldalignment from analyses ([#5170](https://github.com/LazyVim/LazyVim/issues/5170)) ([5c97327](https://github.com/LazyVim/LazyVim/commit/5c9732733de62a4e15988826f53d16a4dfdf960c)) ### Performance Improvements * **snacks_picker:** lazy-load trouble open action ([1a4d948](https://github.com/LazyVim/LazyVim/commit/1a4d948e0dae360836187be8c86283d7e814b7ef)) --- 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 | 23 +++++++++++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index d1d210f5..8b4f0289 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "14.9.0" + ".": "14.10.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c9c762e..8117fbb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## [14.10.0](https://github.com/LazyVim/LazyVim/compare/v14.9.0...v14.10.0) (2025-02-07) + + +### Features + +* **bufferline:** support for snacks picker sidebars ([3500d6a](https://github.com/LazyVim/LazyVim/commit/3500d6a826a32d06d921f3e22342734c61ef09fe)) +* **refactoring:** fallback to using vim ui select for refactoring.nvim ([#5540](https://github.com/LazyVim/LazyVim/issues/5540)) ([23a1bbd](https://github.com/LazyVim/LazyVim/commit/23a1bbdae90f37aab4a86bfb4c113531a28e7f71)) +* **snacks.explorer:** enabled netrw integration ([4f006f1](https://github.com/LazyVim/LazyVim/commit/4f006f1fba5fdaa0150c544ad7966b96ec9cb04a)) +* **snacks.picker:** add projects picker to dashboard if snacks picker is enabled ([fb256f2](https://github.com/LazyVim/LazyVim/commit/fb256f2b688cb7ac9875f704fe6c00f27efc2354)) +* **snacks.picker:** some extra keymaps ([ab30442](https://github.com/LazyVim/LazyVim/commit/ab304426527723e116742cd7862fc976f876107c)) +* **snippets:** mini.snippets is out of beta ([#5505](https://github.com/LazyVim/LazyVim/issues/5505)) ([4a81a37](https://github.com/LazyVim/LazyVim/commit/4a81a370d7868d7db32042f69b0fc5a6218059c5)) + + +### Bug Fixes + +* **copilot:** remove load on BufReadPost instead of InsertEnter ([8f4e9b8](https://github.com/LazyVim/LazyVim/commit/8f4e9b8c1e43e354d91529484aedca54f04bdcf6)) +* **go:** update go.lua to eliminate fieldalignment from analyses ([#5170](https://github.com/LazyVim/LazyVim/issues/5170)) ([5c97327](https://github.com/LazyVim/LazyVim/commit/5c9732733de62a4e15988826f53d16a4dfdf960c)) + + +### Performance Improvements + +* **snacks_picker:** lazy-load trouble open action ([1a4d948](https://github.com/LazyVim/LazyVim/commit/1a4d948e0dae360836187be8c86283d7e814b7ef)) + ## [14.9.0](https://github.com/LazyVim/LazyVim/compare/v14.8.0...v14.9.0) (2025-01-30) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index cbe0a571..e2bf10d9 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 = "14.9.0" -- x-release-please-version +M.version = "14.10.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 83988ea46eccbe20953cd807984d2e89d679aa6e Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 8 Feb 2025 12:47:41 +0100 Subject: [PATCH 09/51] feat(config): show a warning when lazy.nvim imports order is incorrect --- lua/lazyvim/config/init.lua | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index e2bf10d9..b826d2db 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -206,6 +206,26 @@ function M.setup(opts) "desc", "vscode", }) + + -- Check lazy.nvim import order + local imports = require("lazy.core.config").spec.modules + local function find(pat, last) + for i = last and #imports or 1, last and 1 or #imports, last and -1 or 1 do + if imports[i]:find(pat) then + return i + end + end + end + local lazyvim_plugins = find("^lazyvim%.plugins$") + local extras = find("^lazyvim%.plugins%.extras%.", true) or lazyvim_plugins + local plugins = find("^plugins$") or math.huge + if lazyvim_plugins ~= 1 or extras > plugins then + vim.notify( + "The order of your `lazy.nvim` imports is incorrect:\n- `lazyvim.plugins` should be first\n- followed by any `lazyvim.plugins.extras`\n- and finally your own `plugins`", + "warn", + { title = "LazyVim" } + ) + end end, }) From 041637673371db7866f8bf00d77fc2fb6cc673c6 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 8 Feb 2025 12:48:24 +0100 Subject: [PATCH 10/51] feat(util): `has_extra` now also checks for manual imports in `lazy.lua` --- lua/lazyvim/util/init.lua | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/util/init.lua b/lua/lazyvim/util/init.lua index 188544c3..66e6e18b 100644 --- a/lua/lazyvim/util/init.lua +++ b/lua/lazyvim/util/init.lua @@ -55,12 +55,33 @@ function M.has(plugin) return M.get_plugin(plugin) ~= nil end +--- Checks if the extras is enabled: +--- * If the module was imported +--- * If the module was added by LazyExtras +--- * If the module is in the user's lazy imports ---@param extra string function M.has_extra(extra) local Config = require("lazyvim.config") local modname = "lazyvim.plugins.extras." .. extra - return vim.tbl_contains(require("lazy.core.config").spec.modules, modname) - or vim.tbl_contains(Config.json.data.extras, modname) + local LazyConfig = require("lazy.core.config") + -- check if it was imported already + if vim.tbl_contains(LazyConfig.spec.modules, modname) then + return true + end + -- check if it was added by LazyExtras + if vim.tbl_contains(Config.json.data.extras, modname) then + return true + end + -- check if it's in the imports + local spec = LazyConfig.options.spec + if type(spec) == "table" then + for _, s in ipairs(spec) do + if type(s) == "table" and s.import == modname then + return true + end + end + end + return false end ---@param fn fun() From 525377dee9ac3d19f53e333538e4e85586163ad8 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 8 Feb 2025 15:04:46 +0100 Subject: [PATCH 11/51] feat(extras): big rework of default extras --- lua/lazyvim/config/init.lua | 58 +++++++ lua/lazyvim/plugins/coding.lua | 13 -- lua/lazyvim/plugins/editor.lua | 145 ------------------ lua/lazyvim/plugins/extras/editor/fzf.lua | 3 - .../plugins/extras/editor/neo-tree.lua | 128 ++++++++++++++++ .../plugins/extras/editor/snacks_picker.lua | 3 - .../plugins/extras/editor/telescope.lua | 9 -- lua/lazyvim/plugins/extras/lang/sql.lua | 2 +- lua/lazyvim/plugins/xtras.lua | 22 ++- lua/lazyvim/util/extras.lua | 6 +- lua/lazyvim/util/init.lua | 9 -- lua/lazyvim/util/pick.lua | 15 -- lua/lazyvim/util/plugin.lua | 9 ++ 13 files changed, 222 insertions(+), 200 deletions(-) create mode 100644 lua/lazyvim/plugins/extras/editor/neo-tree.lua diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index b826d2db..385d0b13 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -144,8 +144,10 @@ M.json = { extras = {}, ---@type string[] }, } +M.json_loaded = false function M.json.load() + M.json_loaded = true local f = io.open(M.json.path, "r") if f then local data = f:read("*a") @@ -322,6 +324,62 @@ function M.init() M.json.load() end +---@alias LazyVimDefault {name: string, extra: string, enabled?: boolean, origin?: "global" | "default" | "extra" } + +local default_extras ---@type table +function M.get_defaults() + if default_extras then + return default_extras + end + ---@type table + local checks = { + picker = { + { name = "fzf", extra = "editor.fzf" }, + { name = "snacks", extra = "editor.snacks_picker" }, + { name = "telescope", extra = "editor.telescope" }, + }, + cmp = { + { name = "blink.cmp", extra = "coding.blink", enabled = vim.fn.has("nvim-0.10") == 1 }, + { name = "nvim-cmp", extra = "coding.nvim-cmp" }, + }, + explorer = { + { name = "neo-tree", extra = "editor.neo-tree" }, + { name = "snacks", extra = "editor.snacks_explorer" }, + }, + } + default_extras = {} + for name, check in pairs(checks) do + local valid = {} ---@type string[] + for _, extra in ipairs(check) do + if extra.enabled ~= false then + valid[#valid + 1] = extra.name + end + end + local origin = "default" + local use = vim.g["lazyvim_" .. name] + use = vim.tbl_contains(valid, use or "auto") and use or nil + origin = use and "global" or origin + for _, extra in ipairs(use and {} or check) do + if extra.enabled ~= false and LazyVim.has_extra(extra.extra) then + use = extra.name + break + end + end + origin = use and "extra" or origin + use = use or valid[1] + for _, extra in ipairs(check) do + local import = "lazyvim.plugins.extras." .. extra.extra + extra = vim.deepcopy(extra) + extra.enabled = extra.name == use + if extra.enabled then + extra.origin = origin + end + default_extras[import] = extra + end + end + return default_extras +end + setmetatable(M, { __index = function(_, key) if options == nil then diff --git a/lua/lazyvim/plugins/coding.lua b/lua/lazyvim/plugins/coding.lua index adc76177..0e614e48 100644 --- a/lua/lazyvim/plugins/coding.lua +++ b/lua/lazyvim/plugins/coding.lua @@ -1,17 +1,4 @@ return { - { - import = "lazyvim.plugins.extras.coding.nvim-cmp", - enabled = function() - return LazyVim.cmp_engine() == "nvim-cmp" - end, - }, - { - import = "lazyvim.plugins.extras.coding.blink", - enabled = function() - return LazyVim.cmp_engine() == "blink.cmp" - end, - }, - -- auto pairs { "echasnovski/mini.pairs", diff --git a/lua/lazyvim/plugins/editor.lua b/lua/lazyvim/plugins/editor.lua index 95a1f7b9..4aaf3d1f 100644 --- a/lua/lazyvim/plugins/editor.lua +++ b/lua/lazyvim/plugins/editor.lua @@ -1,131 +1,5 @@ return { - -- file explorer - { - "nvim-neo-tree/neo-tree.nvim", - cmd = "Neotree", - keys = { - { - "fe", - function() - require("neo-tree.command").execute({ toggle = true, dir = LazyVim.root() }) - end, - desc = "Explorer NeoTree (Root Dir)", - }, - { - "fE", - function() - require("neo-tree.command").execute({ toggle = true, dir = vim.uv.cwd() }) - end, - desc = "Explorer NeoTree (cwd)", - }, - { "e", "fe", desc = "Explorer NeoTree (Root Dir)", remap = true }, - { "E", "fE", desc = "Explorer NeoTree (cwd)", remap = true }, - { - "ge", - function() - require("neo-tree.command").execute({ source = "git_status", toggle = true }) - end, - desc = "Git Explorer", - }, - { - "be", - function() - require("neo-tree.command").execute({ source = "buffers", toggle = true }) - end, - desc = "Buffer Explorer", - }, - }, - deactivate = function() - vim.cmd([[Neotree close]]) - end, - init = function() - -- FIX: use `autocmd` for lazy-loading neo-tree instead of directly requiring it, - -- because `cwd` is not set up properly. - vim.api.nvim_create_autocmd("BufEnter", { - group = vim.api.nvim_create_augroup("Neotree_start_directory", { clear = true }), - desc = "Start Neo-tree with directory", - once = true, - callback = function() - if package.loaded["neo-tree"] then - return - else - local stats = vim.uv.fs_stat(vim.fn.argv(0)) - if stats and stats.type == "directory" then - require("neo-tree") - end - end - end, - }) - end, - opts = { - sources = { "filesystem", "buffers", "git_status" }, - open_files_do_not_replace_types = { "terminal", "Trouble", "trouble", "qf", "Outline" }, - filesystem = { - bind_to_cwd = false, - follow_current_file = { enabled = true }, - use_libuv_file_watcher = true, - }, - window = { - mappings = { - ["l"] = "open", - ["h"] = "close_node", - [""] = "none", - ["Y"] = { - function(state) - local node = state.tree:get_node() - local path = node:get_id() - vim.fn.setreg("+", path, "c") - end, - desc = "Copy Path to Clipboard", - }, - ["O"] = { - function(state) - require("lazy.util").open(state.tree:get_node().path, { system = true }) - end, - desc = "Open with System Application", - }, - ["P"] = { "toggle_preview", config = { use_float = false } }, - }, - }, - default_component_configs = { - indent = { - with_expanders = true, -- if nil and file nesting is enabled, will enable expanders - expander_collapsed = "", - expander_expanded = "", - expander_highlight = "NeoTreeExpander", - }, - git_status = { - symbols = { - unstaged = "󰄱", - staged = "󰱒", - }, - }, - }, - }, - config = function(_, opts) - local function on_move(data) - Snacks.rename.on_rename_file(data.source, data.destination) - end - - local events = require("neo-tree.events") - opts.event_handlers = opts.event_handlers or {} - vim.list_extend(opts.event_handlers, { - { event = events.FILE_MOVED, handler = on_move }, - { event = events.FILE_RENAMED, handler = on_move }, - }) - require("neo-tree").setup(opts) - vim.api.nvim_create_autocmd("TermClose", { - pattern = "*lazygit", - callback = function() - if package.loaded["neo-tree.sources.git_status"] then - require("neo-tree.sources.git_status").refresh() - end - end, - }) - end, - }, - -- search/replace in multiple files { "MagicDuck/grug-far.nvim", @@ -384,23 +258,4 @@ return { { "sT", "TodoTelescope keywords=TODO,FIX,FIXME", desc = "Todo/Fix/Fixme" }, }, }, - - { - import = "lazyvim.plugins.extras.editor.fzf", - enabled = function() - return LazyVim.pick.want() == "fzf" - end, - }, - { - import = "lazyvim.plugins.extras.editor.telescope", - enabled = function() - return LazyVim.pick.want() == "telescope" - end, - }, - { - import = "lazyvim.plugins.extras.editor.snacks_picker", - enabled = function() - return LazyVim.pick.want() == "snacks" - end, - }, } diff --git a/lua/lazyvim/plugins/extras/editor/fzf.lua b/lua/lazyvim/plugins/extras/editor/fzf.lua index d4cd4093..aa26f6e1 100644 --- a/lua/lazyvim/plugins/extras/editor/fzf.lua +++ b/lua/lazyvim/plugins/extras/editor/fzf.lua @@ -286,9 +286,6 @@ return { { "neovim/nvim-lspconfig", opts = function() - if LazyVim.pick.want() ~= "fzf" then - return - end local Keys = require("lazyvim.plugins.lsp.keymaps").get() -- stylua: ignore vim.list_extend(Keys, { diff --git a/lua/lazyvim/plugins/extras/editor/neo-tree.lua b/lua/lazyvim/plugins/extras/editor/neo-tree.lua new file mode 100644 index 00000000..4a3f99bf --- /dev/null +++ b/lua/lazyvim/plugins/extras/editor/neo-tree.lua @@ -0,0 +1,128 @@ +return { + + -- file explorer + { + "nvim-neo-tree/neo-tree.nvim", + cmd = "Neotree", + keys = { + { + "fe", + function() + require("neo-tree.command").execute({ toggle = true, dir = LazyVim.root() }) + end, + desc = "Explorer NeoTree (Root Dir)", + }, + { + "fE", + function() + require("neo-tree.command").execute({ toggle = true, dir = vim.uv.cwd() }) + end, + desc = "Explorer NeoTree (cwd)", + }, + { "e", "fe", desc = "Explorer NeoTree (Root Dir)", remap = true }, + { "E", "fE", desc = "Explorer NeoTree (cwd)", remap = true }, + { + "ge", + function() + require("neo-tree.command").execute({ source = "git_status", toggle = true }) + end, + desc = "Git Explorer", + }, + { + "be", + function() + require("neo-tree.command").execute({ source = "buffers", toggle = true }) + end, + desc = "Buffer Explorer", + }, + }, + deactivate = function() + vim.cmd([[Neotree close]]) + end, + init = function() + -- FIX: use `autocmd` for lazy-loading neo-tree instead of directly requiring it, + -- because `cwd` is not set up properly. + vim.api.nvim_create_autocmd("BufEnter", { + group = vim.api.nvim_create_augroup("Neotree_start_directory", { clear = true }), + desc = "Start Neo-tree with directory", + once = true, + callback = function() + if package.loaded["neo-tree"] then + return + else + local stats = vim.uv.fs_stat(vim.fn.argv(0)) + if stats and stats.type == "directory" then + require("neo-tree") + end + end + end, + }) + end, + opts = { + sources = { "filesystem", "buffers", "git_status" }, + open_files_do_not_replace_types = { "terminal", "Trouble", "trouble", "qf", "Outline" }, + filesystem = { + bind_to_cwd = false, + follow_current_file = { enabled = true }, + use_libuv_file_watcher = true, + }, + window = { + mappings = { + ["l"] = "open", + ["h"] = "close_node", + [""] = "none", + ["Y"] = { + function(state) + local node = state.tree:get_node() + local path = node:get_id() + vim.fn.setreg("+", path, "c") + end, + desc = "Copy Path to Clipboard", + }, + ["O"] = { + function(state) + require("lazy.util").open(state.tree:get_node().path, { system = true }) + end, + desc = "Open with System Application", + }, + ["P"] = { "toggle_preview", config = { use_float = false } }, + }, + }, + default_component_configs = { + indent = { + with_expanders = true, -- if nil and file nesting is enabled, will enable expanders + expander_collapsed = "", + expander_expanded = "", + expander_highlight = "NeoTreeExpander", + }, + git_status = { + symbols = { + unstaged = "󰄱", + staged = "󰱒", + }, + }, + }, + }, + config = function(_, opts) + local function on_move(data) + Snacks.rename.on_rename_file(data.source, data.destination) + end + + local events = require("neo-tree.events") + opts.event_handlers = opts.event_handlers or {} + vim.list_extend(opts.event_handlers, { + { event = events.FILE_MOVED, handler = on_move }, + { event = events.FILE_RENAMED, handler = on_move }, + }) + require("neo-tree").setup(opts) + vim.api.nvim_create_autocmd("TermClose", { + pattern = "*lazygit", + callback = function() + if package.loaded["neo-tree.sources.git_status"] then + require("neo-tree.sources.git_status").refresh() + end + end, + }) + end, + }, +} diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index bd160f26..d77c0933 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -136,9 +136,6 @@ return { { "neovim/nvim-lspconfig", opts = function() - if LazyVim.pick.want() ~= "snacks" then - return - end local Keys = require("lazyvim.plugins.lsp.keymaps").get() -- stylua: ignore vim.list_extend(Keys, { diff --git a/lua/lazyvim/plugins/extras/editor/telescope.lua b/lua/lazyvim/plugins/extras/editor/telescope.lua index 55ccaceb..9fdf7e13 100644 --- a/lua/lazyvim/plugins/extras/editor/telescope.lua +++ b/lua/lazyvim/plugins/extras/editor/telescope.lua @@ -61,9 +61,6 @@ return { { "nvim-telescope/telescope.nvim", cmd = "Telescope", - enabled = function() - return LazyVim.pick.want() == "telescope" - end, version = false, -- telescope did only one release, so use HEAD for now dependencies = { { @@ -267,9 +264,6 @@ return { { "stevearc/dressing.nvim", lazy = true, - enabled = function() - return LazyVim.pick.want() == "telescope" - end, init = function() ---@diagnostic disable-next-line: duplicate-set-field vim.ui.select = function(...) @@ -287,9 +281,6 @@ return { { "neovim/nvim-lspconfig", opts = function() - if LazyVim.pick.want() ~= "telescope" then - return - end local Keys = require("lazyvim.plugins.lsp.keymaps").get() -- stylua: ignore vim.list_extend(Keys, { diff --git a/lua/lazyvim/plugins/extras/lang/sql.lua b/lua/lazyvim/plugins/extras/lang/sql.lua index 83de5ee1..8e69374c 100644 --- a/lua/lazyvim/plugins/extras/lang/sql.lua +++ b/lua/lazyvim/plugins/extras/lang/sql.lua @@ -48,7 +48,7 @@ return { vim.api.nvim_create_autocmd("FileType", { pattern = sql_ft, callback = function() - if LazyVim.cmp_engine() == "nvim-cmp" then + if LazyVim.has_extra("coding.nvim-cmp") then local cmp = require("cmp") -- global sources diff --git a/lua/lazyvim/plugins/xtras.lua b/lua/lazyvim/plugins/xtras.lua index ebb0dd89..30cab43f 100644 --- a/lua/lazyvim/plugins/xtras.lua +++ b/lua/lazyvim/plugins/xtras.lua @@ -7,6 +7,7 @@ local prios = { ["lazyvim.plugins.extras.lang.typescript"] = 5, ["lazyvim.plugins.extras.coding.blink"] = 5, ["lazyvim.plugins.extras.formatting.prettier"] = 10, + -- default core extra priority is 20 -- default priority is 50 ["lazyvim.plugins.extras.editor.aerial"] = 100, ["lazyvim.plugins.extras.editor.outline"] = 100, @@ -16,8 +17,27 @@ if vim.g.xtras_prios then prios = vim.tbl_deep_extend("force", prios, vim.g.xtras_prios or {}) end +local extras = {} ---@type string[] +local defaults = LazyVim.config.get_defaults() + +-- 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 + end +end + +-- Add default extras +for name, extra in pairs(defaults) do + if extra.enabled then + prios[name] = prios[name] or 20 + extras[#extras + 1] = name + end +end + ---@type string[] -local extras = LazyVim.dedup(LazyVim.config.json.data.extras) +extras = LazyVim.dedup(extras) local version = vim.version() local v = version.major .. "_" .. version.minor diff --git a/lua/lazyvim/util/extras.lua b/lua/lazyvim/util/extras.lua index bd5ca4f3..4984bf54 100644 --- a/lua/lazyvim/util/extras.lua +++ b/lua/lazyvim/util/extras.lua @@ -248,6 +248,9 @@ end ---@param extra LazyExtra function X:extra(extra) + local defaults = LazyVim.config.get_defaults() + local def = defaults[extra.module] + local origin = def and (def.origin or "user") or nil if not extra.managed then ---@type LazyExtra[] local parents = {} @@ -263,11 +266,12 @@ function X:extra(extra) self:diagnostic({ message = "Required by " .. table.concat(pp, ", "), }) - elseif vim.tbl_contains(LazyVim.plugin.core_imports, extra.module) then + elseif vim.tbl_contains(LazyVim.plugin.core_imports, extra.module) or origin == "default" then self:diagnostic({ message = "This extra is included by default", }) else + dd(origin) self:diagnostic({ message = "Not managed by LazyExtras (config)", severity = vim.diagnostic.severity.WARN, diff --git a/lua/lazyvim/util/init.lua b/lua/lazyvim/util/init.lua index 66e6e18b..4b49f539 100644 --- a/lua/lazyvim/util/init.lua +++ b/lua/lazyvim/util/init.lua @@ -286,13 +286,4 @@ function M.memoize(fn) end end ----@return "nvim-cmp" | "blink.cmp" -function M.cmp_engine() - vim.g.lazyvim_cmp = vim.g.lazyvim_cmp or "auto" - if vim.g.lazyvim_cmp == "auto" then - return LazyVim.has_extra("coding.nvim-cmp") and "nvim-cmp" or "blink.cmp" - end - return vim.g.lazyvim_cmp -end - return M diff --git a/lua/lazyvim/util/pick.lua b/lua/lazyvim/util/pick.lua index 2736d7a5..e07150d1 100644 --- a/lua/lazyvim/util/pick.lua +++ b/lua/lazyvim/util/pick.lua @@ -28,10 +28,6 @@ function M.register(picker) return true end - if M.picker and M.picker.name ~= M.want() then - M.picker = nil - end - if M.picker and M.picker.name ~= picker.name then LazyVim.warn( "`LazyVim.pick`: picker already set to `" .. M.picker.name .. "`,\nignoring new picker `" .. picker.name .. "`" @@ -42,17 +38,6 @@ function M.register(picker) return true end ----@return "telescope" | "fzf" | "snacks" -function M.want() - vim.g.lazyvim_picker = vim.g.lazyvim_picker or "auto" - if vim.g.lazyvim_picker == "auto" then - return LazyVim.has_extra("editor.snacks_picker") and "snacks" - or LazyVim.has_extra("editor.telescope") and "telescope" - or "fzf" - end - return vim.g.lazyvim_picker -end - ---@param command? string ---@param opts? lazyvim.util.pick.Opts function M.open(command, opts) diff --git a/lua/lazyvim/util/plugin.lua b/lua/lazyvim/util/plugin.lua index f4a933e9..5d9249fc 100644 --- a/lua/lazyvim/util/plugin.lua +++ b/lua/lazyvim/util/plugin.lua @@ -79,7 +79,16 @@ function M.lazy_file() end function M.fix_imports() + local defaults ---@type table Plugin.Spec.import = LazyVim.inject.args(Plugin.Spec.import, function(_, spec) + if LazyVim.config.json_loaded then + -- extra disabled by defaults? + defaults = defaults or LazyVim.config.get_defaults() + local def = defaults[spec.import] + if def and def.enabled == false then + return false + end + 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 d6829fb82cb2df7970d8312c2ed74d235b5760b9 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sat, 8 Feb 2025 14:05:52 +0000 Subject: [PATCH 12/51] 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 43127781..496f9713 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 07 +*LazyVim.txt* For Neovim Last change: 2025 February 08 ============================================================================== Table of Contents *LazyVim-table-of-contents* From b4c24a3fe882c21555e60a1ec44087526e856eb9 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 8 Feb 2025 15:06:56 +0100 Subject: [PATCH 13/51] fix(extras): remove debug --- lua/lazyvim/util/extras.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazyvim/util/extras.lua b/lua/lazyvim/util/extras.lua index 4984bf54..fa87e820 100644 --- a/lua/lazyvim/util/extras.lua +++ b/lua/lazyvim/util/extras.lua @@ -271,7 +271,6 @@ function X:extra(extra) message = "This extra is included by default", }) else - dd(origin) self:diagnostic({ message = "Not managed by LazyExtras (config)", severity = vim.diagnostic.severity.WARN, From 25d90b54a3b1863cb4428fd309ab855732289710 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 8 Feb 2025 15:23:30 +0100 Subject: [PATCH 14/51] feat(defaults): new installs now default to snacks picker/explorer. Existing installs don't change. --- lua/lazyvim/config/init.lua | 22 ++++++++++++++++------ lua/lazyvim/util/json.lua | 2 ++ lua/lazyvim/util/plugin.lua | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 385d0b13..e585dd70 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -136,18 +136,19 @@ local defaults = { } M.json = { - version = 7, + version = 8, + loaded = false, path = vim.g.lazyvim_json or vim.fn.stdpath("config") .. "/lazyvim.json", data = { - version = nil, ---@type string? + version = nil, ---@type number? + install_version = nil, ---@type number? news = {}, ---@type table extras = {}, ---@type string[] }, } -M.json_loaded = false function M.json.load() - M.json_loaded = true + M.json.loaded = true local f = io.open(M.json.path, "r") if f then local data = f:read("*a") @@ -159,6 +160,8 @@ function M.json.load() LazyVim.json.migrate() end end + else + M.json.data.install_version = M.json.version end end @@ -334,8 +337,8 @@ function M.get_defaults() ---@type table local checks = { picker = { - { name = "fzf", extra = "editor.fzf" }, { name = "snacks", extra = "editor.snacks_picker" }, + { name = "fzf", extra = "editor.fzf" }, { name = "telescope", extra = "editor.telescope" }, }, cmp = { @@ -343,10 +346,17 @@ function M.get_defaults() { name = "nvim-cmp", extra = "coding.nvim-cmp" }, }, explorer = { - { name = "neo-tree", extra = "editor.neo-tree" }, { name = "snacks", extra = "editor.snacks_explorer" }, + { name = "neo-tree", extra = "editor.neo-tree" }, }, } + + -- existing installs keep their defaults + if (LazyVim.config.json.data.install_version or 7) < 8 then + table.insert(checks.picker, 1, table.remove(checks.picker, 2)) + table.insert(checks.explorer, 1, table.remove(checks.explorer, 2)) + end + default_extras = {} for name, check in pairs(checks) do local valid = {} ---@type string[] diff --git a/lua/lazyvim/util/json.lua b/lua/lazyvim/util/json.lua index f3ca7fcf..ad843687 100644 --- a/lua/lazyvim/util/json.lua +++ b/lua/lazyvim/util/json.lua @@ -97,6 +97,8 @@ function M.migrate() return vim.tbl_contains(ai, name) and ("lazyvim.plugins.extras.ai." .. name) or extra end) end, json.data.extras or {}) + elseif json.data.version == 7 then + json.data.install_version = 7 end M.save() diff --git a/lua/lazyvim/util/plugin.lua b/lua/lazyvim/util/plugin.lua index 5d9249fc..c20a0fc8 100644 --- a/lua/lazyvim/util/plugin.lua +++ b/lua/lazyvim/util/plugin.lua @@ -81,7 +81,7 @@ end function M.fix_imports() local defaults ---@type table Plugin.Spec.import = LazyVim.inject.args(Plugin.Spec.import, function(_, spec) - if LazyVim.config.json_loaded then + if LazyVim.config.json.loaded then -- extra disabled by defaults? defaults = defaults or LazyVim.config.get_defaults() local def = defaults[spec.import] From 2d6b49281d2550222be6aada0b7eeca07bb26e10 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 8 Feb 2025 15:25:10 +0100 Subject: [PATCH 15/51] fix(snacks.explorer): no longer needed to disable neo-tree --- lua/lazyvim/plugins/extras/editor/snacks_explorer.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/editor/snacks_explorer.lua b/lua/lazyvim/plugins/extras/editor/snacks_explorer.lua index aa87e85c..3e91f3ea 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_explorer.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_explorer.lua @@ -1,5 +1,4 @@ return { - { "nvim-neo-tree/neo-tree.nvim", enabled = false }, { "folke/snacks.nvim", opts = { explorer = {} }, From 2b3bcf36b2392bef94afefc07e2fcf32960960d7 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 8 Feb 2025 15:27:20 +0100 Subject: [PATCH 16/51] fix(snacks.picker): move dashboard shortcut to picker extra. Closes #5549 --- .../plugins/extras/editor/snacks_picker.lua | 11 +++++++++++ lua/lazyvim/plugins/ui.lua | 14 -------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index d77c0933..e929ad50 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -157,6 +157,17 @@ return { { "sT", function () Snacks.picker.todo_comments({ keywords = { "TODO", "FIX", "FIXME" } }) end, desc = "Todo/Fix/Fixme" }, }, }, + { + "folke/snacks.nvim", + opts = function(_, opts) + table.insert(opts.dashboard.preset.keys, 3, { + icon = " ", + key = "p", + desc = "Projects", + action = ":lua Snacks.picker.projects()", + }) + end, + }, { "folke/flash.nvim", optional = true, diff --git a/lua/lazyvim/plugins/ui.lua b/lua/lazyvim/plugins/ui.lua index 0669054d..7985825a 100644 --- a/lua/lazyvim/plugins/ui.lua +++ b/lua/lazyvim/plugins/ui.lua @@ -325,18 +325,4 @@ return { }, }, }, - { - "folke/snacks.nvim", - opts = function(_, opts) - if not opts.picker then - return - end - table.insert(opts.dashboard.preset.keys, 3, { - icon = " ", - key = "p", - desc = "Projects", - action = ":lua Snacks.picker.projects()", - }) - end, - }, } From 29829f7eb6e937f9fe43e9455e55704b3fac8794 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 8 Feb 2025 15:37:13 +0100 Subject: [PATCH 17/51] chore(main): release 14.11.0 (#5550) :robot: I have created a release *beep* *boop* --- ## [14.11.0](https://github.com/LazyVim/LazyVim/compare/v14.10.0...v14.11.0) (2025-02-08) ### Features * **config:** show a warning when lazy.nvim imports order is incorrect ([83988ea](https://github.com/LazyVim/LazyVim/commit/83988ea46eccbe20953cd807984d2e89d679aa6e)) * **defaults:** new installs now default to snacks picker/explorer. Existing installs don't change. ([25d90b5](https://github.com/LazyVim/LazyVim/commit/25d90b54a3b1863cb4428fd309ab855732289710)) * **extras:** big rework of default extras ([525377d](https://github.com/LazyVim/LazyVim/commit/525377dee9ac3d19f53e333538e4e85586163ad8)) * **util:** `has_extra` now also checks for manual imports in `lazy.lua` ([0416376](https://github.com/LazyVim/LazyVim/commit/041637673371db7866f8bf00d77fc2fb6cc673c6)) ### Bug Fixes * **extras:** remove debug ([b4c24a3](https://github.com/LazyVim/LazyVim/commit/b4c24a3fe882c21555e60a1ec44087526e856eb9)) * **snacks.explorer:** no longer needed to disable neo-tree ([2d6b492](https://github.com/LazyVim/LazyVim/commit/2d6b49281d2550222be6aada0b7eeca07bb26e10)) * **snacks.picker:** move dashboard shortcut to picker extra. Closes [#5549](https://github.com/LazyVim/LazyVim/issues/5549) ([2b3bcf3](https://github.com/LazyVim/LazyVim/commit/2b3bcf36b2392bef94afefc07e2fcf32960960d7)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 17 +++++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 8b4f0289..c36e41c8 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "14.10.0" + ".": "14.11.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 8117fbb6..06ba397f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [14.11.0](https://github.com/LazyVim/LazyVim/compare/v14.10.0...v14.11.0) (2025-02-08) + + +### Features + +* **config:** show a warning when lazy.nvim imports order is incorrect ([83988ea](https://github.com/LazyVim/LazyVim/commit/83988ea46eccbe20953cd807984d2e89d679aa6e)) +* **defaults:** new installs now default to snacks picker/explorer. Existing installs don't change. ([25d90b5](https://github.com/LazyVim/LazyVim/commit/25d90b54a3b1863cb4428fd309ab855732289710)) +* **extras:** big rework of default extras ([525377d](https://github.com/LazyVim/LazyVim/commit/525377dee9ac3d19f53e333538e4e85586163ad8)) +* **util:** `has_extra` now also checks for manual imports in `lazy.lua` ([0416376](https://github.com/LazyVim/LazyVim/commit/041637673371db7866f8bf00d77fc2fb6cc673c6)) + + +### Bug Fixes + +* **extras:** remove debug ([b4c24a3](https://github.com/LazyVim/LazyVim/commit/b4c24a3fe882c21555e60a1ec44087526e856eb9)) +* **snacks.explorer:** no longer needed to disable neo-tree ([2d6b492](https://github.com/LazyVim/LazyVim/commit/2d6b49281d2550222be6aada0b7eeca07bb26e10)) +* **snacks.picker:** move dashboard shortcut to picker extra. Closes [#5549](https://github.com/LazyVim/LazyVim/issues/5549) ([2b3bcf3](https://github.com/LazyVim/LazyVim/commit/2b3bcf36b2392bef94afefc07e2fcf32960960d7)) + ## [14.10.0](https://github.com/LazyVim/LazyVim/compare/v14.9.0...v14.10.0) (2025-02-07) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index e585dd70..3ec3a62c 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 = "14.10.0" -- x-release-please-version +M.version = "14.11.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 2a608f00d47bb6679a27a313fb0404e4d3a2196c Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 8 Feb 2025 18:32:46 +0100 Subject: [PATCH 18/51] fix(copilot-chat): added support for snacks picker. Closes #5432. Closes #5552 --- lua/lazyvim/plugins/extras/ai/copilot-chat.lua | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-chat.lua b/lua/lazyvim/plugins/extras/ai/copilot-chat.lua index e71f4db1..d67da7b2 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-chat.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-chat.lua @@ -9,8 +9,17 @@ function M.pick(kind) LazyVim.warn("No " .. kind .. " found on the current line") return end - local ok = pcall(require, "fzf-lua") - require("CopilotChat.integrations." .. (ok and "fzflua" or "telescope")).pick(items) + local map = { + telescope = "telescope", + fzf = "fzflua", + snacks = "snacks", + } + for _, def in pairs(LazyVim.config.get_defaults()) do + if def.enabled and map[def.name] then + return require("CopilotChat.integrations." .. map[def.name]).pick(items) + end + end + Snacks.notify.error("No picker found") end end From 0bbce1775b7d6750d3c4d761f3ad1bcfb77fb805 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 8 Feb 2025 20:34:17 +0100 Subject: [PATCH 19/51] feat(config): allow disabling the order check with `vim.g.lazyvim_check_order = false` --- lua/lazyvim/config/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 3ec3a62c..42afd66a 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -212,6 +212,10 @@ function M.setup(opts) "vscode", }) + if vim.g.lazyvim_check_order == false then + return + end + -- Check lazy.nvim import order local imports = require("lazy.core.config").spec.modules local function find(pat, last) From da3b5159df326bc31d5a0ebdfa2c5cbbd32df9d2 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 10 Feb 2025 12:14:05 +0100 Subject: [PATCH 20/51] feat(config): add option to disable the order check to warning message --- lua/lazyvim/config/init.lua | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 42afd66a..5ef66fd8 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -229,11 +229,18 @@ function M.setup(opts) local extras = find("^lazyvim%.plugins%.extras%.", true) or lazyvim_plugins local plugins = find("^plugins$") or math.huge if lazyvim_plugins ~= 1 or extras > plugins then - vim.notify( - "The order of your `lazy.nvim` imports is incorrect:\n- `lazyvim.plugins` should be first\n- followed by any `lazyvim.plugins.extras`\n- and finally your own `plugins`", - "warn", - { title = "LazyVim" } - ) + local msg = { + "The order of your `lazy.nvim` imports is incorrect:", + "- `lazyvim.plugins` should be first", + "- followed by any `lazyvim.plugins.extras`", + "- and finally your own `plugins`", + "", + "If you think you know what you're doing, you can disable this check with:", + "```lua", + "vim.g.lazyvim_check_order = false", + "```", + } + vim.notify(table.concat(msg, "\n"), "warn", { title = "LazyVim" }) end end, }) From 66981fe5b2c220286a31292fce3cc82b0e17ae76 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Mon, 10 Feb 2025 11:15:22 +0000 Subject: [PATCH 21/51] 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 496f9713..979ab2e6 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 08 +*LazyVim.txt* For Neovim Last change: 2025 February 10 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 121a2e27ef0f4d8ab64bf76768b9600c45fd2364 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 10 Feb 2025 23:27:24 +0100 Subject: [PATCH 22/51] fix(extras): disable import handling when loading `:LazyExtras` + changed some recommendations --- .../plugins/extras/coding/mini-surround.lua | 1 - lua/lazyvim/plugins/extras/editor/fzf.lua | 1 - .../plugins/extras/editor/snacks_explorer.lua | 40 +++++++++---------- lua/lazyvim/util/extras.lua | 1 + lua/lazyvim/util/plugin.lua | 3 +- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/lua/lazyvim/plugins/extras/coding/mini-surround.lua b/lua/lazyvim/plugins/extras/coding/mini-surround.lua index 56d16a60..d8ff25c5 100644 --- a/lua/lazyvim/plugins/extras/coding/mini-surround.lua +++ b/lua/lazyvim/plugins/extras/coding/mini-surround.lua @@ -4,7 +4,6 @@ -- and more. return { "echasnovski/mini.surround", - recommended = true, keys = function(_, keys) -- Populate the keys based on the user's options local opts = LazyVim.opts("mini.surround") diff --git a/lua/lazyvim/plugins/extras/editor/fzf.lua b/lua/lazyvim/plugins/extras/editor/fzf.lua index aa26f6e1..c1dd76fd 100644 --- a/lua/lazyvim/plugins/extras/editor/fzf.lua +++ b/lua/lazyvim/plugins/extras/editor/fzf.lua @@ -40,7 +40,6 @@ end return { desc = "Awesome picker for FZF (alternative to Telescope)", - recommended = true, { "ibhagwan/fzf-lua", cmd = "FzfLua", diff --git a/lua/lazyvim/plugins/extras/editor/snacks_explorer.lua b/lua/lazyvim/plugins/extras/editor/snacks_explorer.lua index 3e91f3ea..4163c799 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_explorer.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_explorer.lua @@ -1,24 +1,24 @@ return { - { - "folke/snacks.nvim", - opts = { explorer = {} }, - keys = { - { - "fe", - function() - Snacks.explorer({ cwd = LazyVim.root() }) - end, - desc = "Explorer Snacks (root dir)", - }, - { - "fE", - function() - Snacks.explorer() - end, - desc = "Explorer Snacks (cwd)", - }, - { "e", "fe", desc = "Explorer Snacks (root dir)", remap = true }, - { "E", "fE", desc = "Explorer Snacks (cwd)", remap = true }, + desc = "Snacks File Explorer", + recommended = true, + "folke/snacks.nvim", + opts = { explorer = {} }, + keys = { + { + "fe", + function() + Snacks.explorer({ cwd = LazyVim.root() }) + end, + desc = "Explorer Snacks (root dir)", }, + { + "fE", + function() + Snacks.explorer() + end, + desc = "Explorer Snacks (cwd)", + }, + { "e", "fe", desc = "Explorer Snacks (root dir)", remap = true }, + { "E", "fE", desc = "Explorer Snacks (cwd)", remap = true }, }, } diff --git a/lua/lazyvim/util/extras.lua b/lua/lazyvim/util/extras.lua index fa87e820..6bc8eca2 100644 --- a/lua/lazyvim/util/extras.lua +++ b/lua/lazyvim/util/extras.lua @@ -83,6 +83,7 @@ end ---@param modname string ---@param source LazyExtraSource function M.get_extra(source, modname) + LazyVim.plugin.handle_defaults = false local enabled = vim.tbl_contains(M.state, modname) local spec = Plugin.Spec.new(nil, { optional = true, pkg = false }) spec:parse({ import = modname }) diff --git a/lua/lazyvim/util/plugin.lua b/lua/lazyvim/util/plugin.lua index c20a0fc8..e6cae997 100644 --- a/lua/lazyvim/util/plugin.lua +++ b/lua/lazyvim/util/plugin.lua @@ -5,6 +5,7 @@ local M = {} ---@type string[] M.core_imports = {} +M.handle_defaults = true M.lazy_file_events = { "BufReadPost", "BufNewFile", "BufWritePre" } @@ -81,7 +82,7 @@ end function M.fix_imports() local defaults ---@type table Plugin.Spec.import = LazyVim.inject.args(Plugin.Spec.import, function(_, spec) - if LazyVim.config.json.loaded then + if M.handle_defaults and LazyVim.config.json.loaded then -- extra disabled by defaults? defaults = defaults or LazyVim.config.get_defaults() local def = defaults[spec.import] From 9d426ed7fc57b285e0a89e011f7a35bd99cdc7f8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2025 11:53:22 +0100 Subject: [PATCH 23/51] chore(main): release 14.12.0 (#5553) :robot: I have created a release *beep* *boop* --- ## [14.12.0](https://github.com/LazyVim/LazyVim/compare/v14.11.0...v14.12.0) (2025-02-10) ### Features * **config:** add option to disable the order check to warning message ([da3b515](https://github.com/LazyVim/LazyVim/commit/da3b5159df326bc31d5a0ebdfa2c5cbbd32df9d2)) * **config:** allow disabling the order check with `vim.g.lazyvim_check_order = false` ([0bbce17](https://github.com/LazyVim/LazyVim/commit/0bbce1775b7d6750d3c4d761f3ad1bcfb77fb805)) ### Bug Fixes * **copilot-chat:** added support for snacks picker. Closes [#5432](https://github.com/LazyVim/LazyVim/issues/5432). Closes [#5552](https://github.com/LazyVim/LazyVim/issues/5552) ([2a608f0](https://github.com/LazyVim/LazyVim/commit/2a608f00d47bb6679a27a313fb0404e4d3a2196c)) * **extras:** disable import handling when loading `:LazyExtras` + changed some recommendations ([121a2e2](https://github.com/LazyVim/LazyVim/commit/121a2e27ef0f4d8ab64bf76768b9600c45fd2364)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index c36e41c8..88facebb 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "14.11.0" + ".": "14.12.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 06ba397f..2b7c403b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [14.12.0](https://github.com/LazyVim/LazyVim/compare/v14.11.0...v14.12.0) (2025-02-10) + + +### Features + +* **config:** add option to disable the order check to warning message ([da3b515](https://github.com/LazyVim/LazyVim/commit/da3b5159df326bc31d5a0ebdfa2c5cbbd32df9d2)) +* **config:** allow disabling the order check with `vim.g.lazyvim_check_order = false` ([0bbce17](https://github.com/LazyVim/LazyVim/commit/0bbce1775b7d6750d3c4d761f3ad1bcfb77fb805)) + + +### Bug Fixes + +* **copilot-chat:** added support for snacks picker. Closes [#5432](https://github.com/LazyVim/LazyVim/issues/5432). Closes [#5552](https://github.com/LazyVim/LazyVim/issues/5552) ([2a608f0](https://github.com/LazyVim/LazyVim/commit/2a608f00d47bb6679a27a313fb0404e4d3a2196c)) +* **extras:** disable import handling when loading `:LazyExtras` + changed some recommendations ([121a2e2](https://github.com/LazyVim/LazyVim/commit/121a2e27ef0f4d8ab64bf76768b9600c45fd2364)) + ## [14.11.0](https://github.com/LazyVim/LazyVim/compare/v14.10.0...v14.11.0) (2025-02-08) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 5ef66fd8..521cb808 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 = "14.11.0" -- x-release-please-version +M.version = "14.12.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 7fe0b47f177d1f47dd43dd44d9f267c4421a3684 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Tue, 11 Feb 2025 10:54:30 +0000 Subject: [PATCH 24/51] 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 979ab2e6..6a579c49 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 10 +*LazyVim.txt* For Neovim Last change: 2025 February 11 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 75297733710951e81b505d88b2d728a5b0a9b6ab Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 11 Feb 2025 14:00:01 +0100 Subject: [PATCH 25/51] feat(lsp): use lsp_config picker instead of `LspInfo` --- lua/lazyvim/plugins/lsp/keymaps.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/lsp/keymaps.lua b/lua/lazyvim/plugins/lsp/keymaps.lua index 1b62a911..318ec911 100644 --- a/lua/lazyvim/plugins/lsp/keymaps.lua +++ b/lua/lazyvim/plugins/lsp/keymaps.lua @@ -13,7 +13,7 @@ function M.get() end -- stylua: ignore M._keys = { - { "cl", "LspInfo", desc = "Lsp Info" }, + { "cl", function() Snacks.picker.lsp_config() end, desc = "Lsp Info" }, { "gd", vim.lsp.buf.definition, desc = "Goto Definition", has = "definition" }, { "gr", vim.lsp.buf.references, desc = "References", nowait = true }, { "gI", vim.lsp.buf.implementation, desc = "Goto Implementation" }, From 0a5965b787e4d513b5a2e1182b35bd11ceafeeb3 Mon Sep 17 00:00:00 2001 From: Beartama <8091245+uyha@users.noreply.github.com> Date: Wed, 12 Feb 2025 15:21:29 +0200 Subject: [PATCH 26/51] feat(editor): update parameter for fzf-lua (#5584) ## Description `fzf-lua` renames their parameter in https://github.com/ibhagwan/fzf-lua/commit/7cede182cf7463376669e102bd10d13f8ce05e52, so this PR updates the parameter also to stop the deprecation warning. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/editor/fzf.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lua/lazyvim/plugins/extras/editor/fzf.lua b/lua/lazyvim/plugins/extras/editor/fzf.lua index c1dd76fd..e9177457 100644 --- a/lua/lazyvim/plugins/extras/editor/fzf.lua +++ b/lua/lazyvim/plugins/extras/editor/fzf.lua @@ -288,10 +288,10 @@ return { local Keys = require("lazyvim.plugins.lsp.keymaps").get() -- stylua: ignore vim.list_extend(Keys, { - { "gd", "FzfLua lsp_definitions jump_to_single_result=true ignore_current_line=true", desc = "Goto Definition", has = "definition" }, - { "gr", "FzfLua lsp_references jump_to_single_result=true ignore_current_line=true", desc = "References", nowait = true }, - { "gI", "FzfLua lsp_implementations jump_to_single_result=true ignore_current_line=true", desc = "Goto Implementation" }, - { "gy", "FzfLua lsp_typedefs jump_to_single_result=true ignore_current_line=true", desc = "Goto T[y]pe Definition" }, + { "gd", "FzfLua lsp_definitions jump1=true ignore_current_line=true", desc = "Goto Definition", has = "definition" }, + { "gr", "FzfLua lsp_references jump1=true ignore_current_line=true", desc = "References", nowait = true }, + { "gI", "FzfLua lsp_implementations jump1=true ignore_current_line=true", desc = "Goto Implementation" }, + { "gy", "FzfLua lsp_typedefs jump1=true ignore_current_line=true", desc = "Goto T[y]pe Definition" }, }) end, }, From 0db68916790808fd4eb284842c4d1a3d1c214e18 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Wed, 12 Feb 2025 13:22:29 +0000 Subject: [PATCH 27/51] 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 6a579c49..6dd2917b 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 11 +*LazyVim.txt* For Neovim Last change: 2025 February 12 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 45d94b3197eaf3f35754b8ecb7adebfcebe5160d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 21:38:40 +0100 Subject: [PATCH 28/51] chore(main): release 14.13.0 (#5574) :robot: I have created a release *beep* *boop* --- ## [14.13.0](https://github.com/LazyVim/LazyVim/compare/v14.12.0...v14.13.0) (2025-02-12) ### Features * **editor:** update parameter for fzf-lua ([#5584](https://github.com/LazyVim/LazyVim/issues/5584)) ([0a5965b](https://github.com/LazyVim/LazyVim/commit/0a5965b787e4d513b5a2e1182b35bd11ceafeeb3)) * **lsp:** use lsp_config picker instead of `LspInfo` ([7529773](https://github.com/LazyVim/LazyVim/commit/75297733710951e81b505d88b2d728a5b0a9b6ab)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 88facebb..45cd5c1f 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "14.12.0" + ".": "14.13.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b7c403b..292053a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [14.13.0](https://github.com/LazyVim/LazyVim/compare/v14.12.0...v14.13.0) (2025-02-12) + + +### Features + +* **editor:** update parameter for fzf-lua ([#5584](https://github.com/LazyVim/LazyVim/issues/5584)) ([0a5965b](https://github.com/LazyVim/LazyVim/commit/0a5965b787e4d513b5a2e1182b35bd11ceafeeb3)) +* **lsp:** use lsp_config picker instead of `LspInfo` ([7529773](https://github.com/LazyVim/LazyVim/commit/75297733710951e81b505d88b2d728a5b0a9b6ab)) + ## [14.12.0](https://github.com/LazyVim/LazyVim/compare/v14.11.0...v14.12.0) (2025-02-10) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 521cb808..586d1e7d 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 = "14.12.0" -- x-release-please-version +M.version = "14.13.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 5788b9d1e06dfb5f99f92354dc550c9f2c5a6710 Mon Sep 17 00:00:00 2001 From: Roland Kaminski Date: Fri, 14 Feb 2025 17:32:33 +0100 Subject: [PATCH 29/51] feat(extras): setup neogen and mini.snippets integration (#5594) ## Description Configure neogen and mini.snippets integration. See also #5593. ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/coding/neogen.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/lazyvim/plugins/extras/coding/neogen.lua b/lua/lazyvim/plugins/extras/coding/neogen.lua index 88f7dd54..c8916676 100644 --- a/lua/lazyvim/plugins/extras/coding/neogen.lua +++ b/lua/lazyvim/plugins/extras/coding/neogen.lua @@ -1,5 +1,6 @@ return { "danymat/neogen", + dependencies = LazyVim.has("mini.snippets") and { "mini.snippets" } or {}, cmd = "Neogen", keys = { { @@ -17,6 +18,7 @@ return { local map = { ["LuaSnip"] = "luasnip", + ["mini.snippets"] = "mini", ["nvim-snippy"] = "snippy", ["vim-vsnip"] = "vsnip", } From 98fca895e863b3e518d6154edd8cdbca35efef88 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Fri, 14 Feb 2025 16:33:36 +0000 Subject: [PATCH 30/51] 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 6dd2917b..2d3af3d8 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 12 +*LazyVim.txt* For Neovim Last change: 2025 February 14 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 32e575aa75792c63f710f0bdc3e2fb5aa8ea75ad Mon Sep 17 00:00:00 2001 From: Zhou Fang Date: Sat, 15 Feb 2025 16:27:01 +0900 Subject: [PATCH 31/51] feat(keymaps): enable toggling in quickfix list and location list (#5608) ## Description This PR addresses issue #5503 by modifying the behavior of `xq` and `xl` so that they toggle the quickfix and location lists rather than simply opening them. To prevent the full Lua error stack from being printed when no list exists prior to using `copen` or `lopen`, I've wrapped the commands in `pcall` and used `vim.notify` to alert the user in the same manner as before. ## Related Issue(s) #5503 ## Screenshots https://github.com/user-attachments/assets/b22b1861-e6e5-4d8a-967e-f760cca15719 ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/config/keymaps.lua | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 3e3829d1..031e7054 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -94,8 +94,21 @@ map("n", "l", "Lazy", { desc = "Lazy" }) -- new file map("n", "fn", "enew", { desc = "New File" }) -map("n", "xl", "lopen", { desc = "Location List" }) -map("n", "xq", "copen", { desc = "Quickfix List" }) +-- location list +map("n", "xl", function() + local success, err = pcall(vim.fn.getloclist(0, { winid = 0 }).winid ~= 0 and vim.cmd.lclose or vim.cmd.lopen) + if not success and err then + vim.notify(err, vim.log.levels.ERROR) + end +end, { desc = "Location List" }) + +-- quickfix list +map("n", "xq", function() + local success, err = pcall(vim.fn.getqflist({ winid = 0 }).winid ~= 0 and vim.cmd.cclose or vim.cmd.copen) + if not success and err then + vim.notify(err, vim.log.levels.ERROR) + end +end, { desc = "Quickfix List" }) map("n", "[q", vim.cmd.cprev, { desc = "Previous Quickfix" }) map("n", "]q", vim.cmd.cnext, { desc = "Next Quickfix" }) From e9dad45f934bca467a40d0bb68c84c0aca178b0a Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sat, 15 Feb 2025 07:27:57 +0000 Subject: [PATCH 32/51] 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 2d3af3d8..3c5a9ce0 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 14 +*LazyVim.txt* For Neovim Last change: 2025 February 15 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 401ef48fcd617534b017ef471309bb1bd6465131 Mon Sep 17 00:00:00 2001 From: Jinfeng Guo Date: Sat, 15 Feb 2025 15:30:45 +0800 Subject: [PATCH 33/51] feat(snacks.picker): added support for Project shortcuts in other dashboards (#5607) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …shboard-nvim, and mini-starter ## Description Though the snacks.picker extra provides a project picker, it only adds the 'Projects' shortcut to snacks' dashboard, and no to the other three dashboard extra: alpha, dashboard-nvim and mini-starter. In this PR, I added the 'Projects' shortcuts to these three dashboard extras. ## Related Issue(s) - Fixes #5465 ## Screenshots alpha ![image](https://github.com/user-attachments/assets/c050f260-8602-4660-a386-62ab8400ef87) dashboard-nvim ![image](https://github.com/user-attachments/assets/8973cd62-ba97-4330-9462-74163b58dca9) mini.starter ![image](https://github.com/user-attachments/assets/a31ec27d-7efb-4aa3-a136-2a4ffedf5ba1) ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- .../plugins/extras/editor/snacks_picker.lua | 44 +++++++++++++++++++ lua/lazyvim/plugins/xtras.lua | 3 ++ 2 files changed, 47 insertions(+) diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index e929ad50..aee28d1d 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -168,6 +168,50 @@ return { }) end, }, + { + "goolord/alpha-nvim", + optional = true, + opts = function(_, dashboard) + local button = dashboard.button("p", " " .. " Projects", [[ lua Snacks.picker.projects() ]]) + button.opts.hl = "AlphaButtons" + button.opts.hl_shortcut = "AlphaShortcut" + table.insert(dashboard.section.buttons.val, 4, button) + end, + }, + { + "echasnovski/mini.starter", + optional = true, + opts = function(_, opts) + local items = { + { + name = "Projects", + action = [[lua Snacks.picker.projects()]], + section = string.rep(" ", 22) .. "Telescope", + }, + } + vim.list_extend(opts.items, items) + end, + }, + { + "nvimdev/dashboard-nvim", + optional = true, + opts = function(_, opts) + if not vim.tbl_get(opts, "config", "center") then + return + end + local projects = { + action = "lua Snacks.picker.projects()", + desc = " Projects", + icon = " ", + key = "p", + } + + projects.desc = projects.desc .. string.rep(" ", 43 - #projects.desc) + projects.key_format = " %s" + + table.insert(opts.config.center, 3, projects) + end, + }, { "folke/flash.nvim", optional = true, diff --git a/lua/lazyvim/plugins/xtras.lua b/lua/lazyvim/plugins/xtras.lua index 30cab43f..bb061d80 100644 --- a/lua/lazyvim/plugins/xtras.lua +++ b/lua/lazyvim/plugins/xtras.lua @@ -11,6 +11,9 @@ local prios = { -- default priority is 50 ["lazyvim.plugins.extras.editor.aerial"] = 100, ["lazyvim.plugins.extras.editor.outline"] = 100, + ["lazyvim.plugins.extras.ui.alpha"] = 19, + ["lazyvim.plugins.extras.ui.dashboard-nvim"] = 19, + ["lazyvim.plugins.extras.ui.mini-starter"] = 19, } if vim.g.xtras_prios then From 4aff0063a42bbc499cfa03feb6e58d4339c0950d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 15 Feb 2025 15:46:51 +0100 Subject: [PATCH 34/51] feat(snacks.picker): move trouble keymap from `ctrl+t` -> `alt+t` --- lua/lazyvim/plugins/extras/editor/snacks_picker.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index aee28d1d..aad6287f 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -121,7 +121,7 @@ return { win = { input = { keys = { - [""] = { + [""] = { "trouble_open", mode = { "n", "i" }, }, From 0458e46dcca49cc404062e04a9054a8bd058dcd3 Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Sat, 15 Feb 2025 22:57:48 +0200 Subject: [PATCH 35/51] fix(blink): `cmdline` is now top-level on main branch (#5615) ## Description This `blink.cmp` [commit](https://github.com/Saghen/blink.cmp/commit/93215d80346e14763a67d97785dccb1e1c3a6775) introduced a breaking change on main branch. `cmdline` is now top-level and the option is `opts.cmdline.sources = {}`. I also added a note to remove this hack when the next blink stable release comes out, which should be greater than current 0.11.0 and just do it normally in `opts` instead. ## 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/coding/blink.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/coding/blink.lua b/lua/lazyvim/plugins/extras/coding/blink.lua index 45e393e1..7cd67fc8 100644 --- a/lua/lazyvim/plugins/extras/coding/blink.lua +++ b/lua/lazyvim/plugins/extras/coding/blink.lua @@ -79,7 +79,6 @@ return { -- with blink.compat compat = {}, default = { "lsp", "path", "snippets", "buffer" }, - cmdline = {}, }, keymap = { @@ -89,6 +88,15 @@ return { }, ---@param opts blink.cmp.Config | { sources: { compat: string[] } } config = function(_, opts) + -- HACK: remove when next `blink.cmp` stable release is available + -- and just do `opts.cmdline.sources = {}` directly in `opts` + -- Should be greater than current 0.11.0 + if not vim.g.lazyvim_blink_main then + opts.sources["cmdline"] = {} + else + opts.cmdline = opts.cmdline or {} + opts.cmdline.sources = {} + end -- setup compat sources local enabled = opts.sources.default for _, source in ipairs(opts.sources.compat or {}) do From b35015ac59f0c630b2efe18ccf10d693397d0ca4 Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:51:17 +0200 Subject: [PATCH 36/51] fix(blink): `blink` released new version, remove previous hack (#5616) ## Description `blink.cmp` just made a new stable release. So, remove the hack and define the option properly in `opts`. If I knew it would make a release tonight, I'd definitely hold off my recent PR. ## 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/coding/blink.lua | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lua/lazyvim/plugins/extras/coding/blink.lua b/lua/lazyvim/plugins/extras/coding/blink.lua index 7cd67fc8..f43be920 100644 --- a/lua/lazyvim/plugins/extras/coding/blink.lua +++ b/lua/lazyvim/plugins/extras/coding/blink.lua @@ -81,6 +81,10 @@ return { default = { "lsp", "path", "snippets", "buffer" }, }, + cmdline = { + sources = {}, + }, + keymap = { preset = "enter", [""] = { "select_and_accept" }, @@ -88,15 +92,6 @@ return { }, ---@param opts blink.cmp.Config | { sources: { compat: string[] } } config = function(_, opts) - -- HACK: remove when next `blink.cmp` stable release is available - -- and just do `opts.cmdline.sources = {}` directly in `opts` - -- Should be greater than current 0.11.0 - if not vim.g.lazyvim_blink_main then - opts.sources["cmdline"] = {} - else - opts.cmdline = opts.cmdline or {} - opts.cmdline.sources = {} - end -- setup compat sources local enabled = opts.sources.default for _, source in ipairs(opts.sources.compat or {}) do From e7f8e4faba0c6d397526238923f1aeff1740d09c Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Sun, 16 Feb 2025 00:47:17 +0200 Subject: [PATCH 37/51] fix(blink): enable Neovim native mapping with `` (#5617) ## Description Another blink fix unfortunately. I noticed that native Neovim `` completion didn't work after the breaking commit. I checked the commit and noticed it had a boolean `enabled` field, so I thought maybe that would disable the blink cmdline since we already have `sources = {}`, but it didn't work. Looking through the commit, I stumbled upon this piece of [code](https://github.com/Saghen/blink.cmp/commit/93215d80346e14763a67d97785dccb1e1c3a6775#diff-f313d6f0270f6fed848f1cb7e62c82d3cfaf9b6c7e0072266908eeaf202f11d5R66-R68) and it seems that it's only checked for applying the blink cmdline mappings. So, it seems both `enabled = false` (for Neovim native cmdline mapping) and `sources = {}` are needed to have default Neovim cmdline experience. PS: Apparently I don't know how to link from the commit the necessary part of the commit, so I'm just referencing here the part of the code [directly in the file](https://github.com/Saghen/blink.cmp/blob/426a605518f81ea7ba335ecca8df565637e7e259/lua/blink/cmp/keymap/init.lua#L66-L70). ## 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/coding/blink.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazyvim/plugins/extras/coding/blink.lua b/lua/lazyvim/plugins/extras/coding/blink.lua index f43be920..4488b721 100644 --- a/lua/lazyvim/plugins/extras/coding/blink.lua +++ b/lua/lazyvim/plugins/extras/coding/blink.lua @@ -82,6 +82,7 @@ return { }, cmdline = { + enabled = false, sources = {}, }, From 3f034d0a7f58031123300309f2efd3bb0356ee21 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:51:07 +0100 Subject: [PATCH 38/51] chore(main): release 14.14.0 (#5603) :robot: I have created a release *beep* *boop* --- ## [14.14.0](https://github.com/LazyVim/LazyVim/compare/v14.13.0...v14.14.0) (2025-02-15) ### Features * **extras:** setup neogen and mini.snippets integration ([#5594](https://github.com/LazyVim/LazyVim/issues/5594)) ([5788b9d](https://github.com/LazyVim/LazyVim/commit/5788b9d1e06dfb5f99f92354dc550c9f2c5a6710)) * **keymaps:** enable toggling in quickfix list and location list ([#5608](https://github.com/LazyVim/LazyVim/issues/5608)) ([32e575a](https://github.com/LazyVim/LazyVim/commit/32e575aa75792c63f710f0bdc3e2fb5aa8ea75ad)) * **snacks.picker:** added support for Project shortcuts in other dashboards ([#5607](https://github.com/LazyVim/LazyVim/issues/5607)) ([401ef48](https://github.com/LazyVim/LazyVim/commit/401ef48fcd617534b017ef471309bb1bd6465131)) * **snacks.picker:** move trouble keymap from `ctrl+t` -> `alt+t` ([4aff006](https://github.com/LazyVim/LazyVim/commit/4aff0063a42bbc499cfa03feb6e58d4339c0950d)) ### Bug Fixes * **blink:** `blink` released new version, remove previous hack ([#5616](https://github.com/LazyVim/LazyVim/issues/5616)) ([b35015a](https://github.com/LazyVim/LazyVim/commit/b35015ac59f0c630b2efe18ccf10d693397d0ca4)) * **blink:** `cmdline` is now top-level on main branch ([#5615](https://github.com/LazyVim/LazyVim/issues/5615)) ([0458e46](https://github.com/LazyVim/LazyVim/commit/0458e46dcca49cc404062e04a9054a8bd058dcd3)) * **blink:** enable Neovim native mapping with `<Tab>` ([#5617](https://github.com/LazyVim/LazyVim/issues/5617)) ([e7f8e4f](https://github.com/LazyVim/LazyVim/commit/e7f8e4faba0c6d397526238923f1aeff1740d09c)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 17 +++++++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 45cd5c1f..926af9ee 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "14.13.0" + ".": "14.14.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 292053a3..90fbb7c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [14.14.0](https://github.com/LazyVim/LazyVim/compare/v14.13.0...v14.14.0) (2025-02-15) + + +### Features + +* **extras:** setup neogen and mini.snippets integration ([#5594](https://github.com/LazyVim/LazyVim/issues/5594)) ([5788b9d](https://github.com/LazyVim/LazyVim/commit/5788b9d1e06dfb5f99f92354dc550c9f2c5a6710)) +* **keymaps:** enable toggling in quickfix list and location list ([#5608](https://github.com/LazyVim/LazyVim/issues/5608)) ([32e575a](https://github.com/LazyVim/LazyVim/commit/32e575aa75792c63f710f0bdc3e2fb5aa8ea75ad)) +* **snacks.picker:** added support for Project shortcuts in other dashboards ([#5607](https://github.com/LazyVim/LazyVim/issues/5607)) ([401ef48](https://github.com/LazyVim/LazyVim/commit/401ef48fcd617534b017ef471309bb1bd6465131)) +* **snacks.picker:** move trouble keymap from `ctrl+t` -> `alt+t` ([4aff006](https://github.com/LazyVim/LazyVim/commit/4aff0063a42bbc499cfa03feb6e58d4339c0950d)) + + +### Bug Fixes + +* **blink:** `blink` released new version, remove previous hack ([#5616](https://github.com/LazyVim/LazyVim/issues/5616)) ([b35015a](https://github.com/LazyVim/LazyVim/commit/b35015ac59f0c630b2efe18ccf10d693397d0ca4)) +* **blink:** `cmdline` is now top-level on main branch ([#5615](https://github.com/LazyVim/LazyVim/issues/5615)) ([0458e46](https://github.com/LazyVim/LazyVim/commit/0458e46dcca49cc404062e04a9054a8bd058dcd3)) +* **blink:** enable Neovim native mapping with `<Tab>` ([#5617](https://github.com/LazyVim/LazyVim/issues/5617)) ([e7f8e4f](https://github.com/LazyVim/LazyVim/commit/e7f8e4faba0c6d397526238923f1aeff1740d09c)) + ## [14.13.0](https://github.com/LazyVim/LazyVim/compare/v14.12.0...v14.13.0) (2025-02-12) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 586d1e7d..56f2397e 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 = "14.13.0" -- x-release-please-version +M.version = "14.14.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 5b94baa1d2e7d8ec7e9a9cab82fabd8c3655d369 Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Sun, 16 Feb 2025 09:05:52 +0200 Subject: [PATCH 39/51] fix(blink): remove unnecessary `sources` from `cmdline` (#5620) ## Description Like Saghen already mentioned in the other PR, this [commit](https://github.com/Saghen/blink.cmp/commit/19f60a675eaaf4b160bd6458bfd72fc005da5b3f) does a check based on the `enabled` field before adding sources, so it's no longer needed to define it. ## 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/coding/blink.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/coding/blink.lua b/lua/lazyvim/plugins/extras/coding/blink.lua index 4488b721..99a2748e 100644 --- a/lua/lazyvim/plugins/extras/coding/blink.lua +++ b/lua/lazyvim/plugins/extras/coding/blink.lua @@ -83,7 +83,6 @@ return { cmdline = { enabled = false, - sources = {}, }, keymap = { From 0ca49bcfed059516b5e860f6d6bc028dfe149b3f Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sun, 16 Feb 2025 07:06:54 +0000 Subject: [PATCH 40/51] 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 3c5a9ce0..5a16440c 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 15 +*LazyVim.txt* For Neovim Last change: 2025 February 16 ============================================================================== Table of Contents *LazyVim-table-of-contents* From f2f2aea6722b530281b476c08ec60f2d320f1c3d Mon Sep 17 00:00:00 2001 From: abeldekat <58370433+abeldekat@users.noreply.github.com> Date: Sun, 16 Feb 2025 08:06:35 +0000 Subject: [PATCH 41/51] feat(snippets): mini.snippets standalone and blink.resubscribe (#5507) ## Description When using blink.cmp and mini.snippets, the same problem regarding outdated completion items as solved in [nvim-cmp](https://github.com/hrsh7th/nvim-cmp/pull/2126) can arise. [This](https://github.com/Saghen/blink.cmp/pull/1035) PR has been included into main. When the PR is included into the next stable release, this PR can be merged. Current blink release: 0.11.0 ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. Co-authored-by: abeldekat --- lua/lazyvim/plugins/extras/coding/mini-snippets.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lua/lazyvim/plugins/extras/coding/mini-snippets.lua b/lua/lazyvim/plugins/extras/coding/mini-snippets.lua index 5ce82c80..d0a747a8 100644 --- a/lua/lazyvim/plugins/extras/coding/mini-snippets.lua +++ b/lua/lazyvim/plugins/extras/coding/mini-snippets.lua @@ -140,21 +140,25 @@ return { end -- Standalone -- + local blink = require("blink.cmp") expand_select_override = function(snippets, insert) -- Schedule, otherwise blink's virtual text is not removed on vim.ui.select - require("blink.cmp").cancel() + blink.cancel() vim.schedule(function() MiniSnippets.default_select(snippets, insert) end) end -- -- Blink performs a require on blink.cmp.sources.snippets.default - -- By removing the source, the default engine will not be used + -- By removing the source, that default engine will not be used opts.sources.default = vim.tbl_filter(function(source) return source ~= "snippets" end, opts.sources.default) opts.snippets = { -- need to repeat blink's preset here - expand = expand_from_lsp, + expand = function(snippet) + expand_from_lsp(snippet) + blink.resubscribe() + end, active = function() return MiniSnippets.session.get(false) ~= nil end, From 16a772452a515790c3304b358dd66a618fda3260 Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Sun, 16 Feb 2025 13:20:06 +0200 Subject: [PATCH 42/51] feat(octo): add support for snacks picker (#5625) ## Description A [PR](https://github.com/pwntester/octo.nvim/pull/858) has landed in `octo.nvim` that adds initial support for `snacks.picker`. Enable it in `octo.nvim` Extra if user uses `snacks.picker`. I also changed the checks to use `has_extra`. This was needed for `snacks.picker`, since `has("snacks.nvim")` doesn't ensure that user also has `snacks.picker` enabled. For the others I just changed it for conformity, but if you think there might be something wrong about that (that I'm unable to think of), please feel free to change them back. ## 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/util/octo.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lua/lazyvim/plugins/extras/util/octo.lua b/lua/lazyvim/plugins/extras/util/octo.lua index 9412e54c..d3316f5e 100644 --- a/lua/lazyvim/plugins/extras/util/octo.lua +++ b/lua/lazyvim/plugins/extras/util/octo.lua @@ -42,12 +42,14 @@ return { "pwntester/octo.nvim", opts = function(_, opts) vim.treesitter.language.register("markdown", "octo") - if LazyVim.has("telescope.nvim") then + if LazyVim.has_extra("editor.telescope") then opts.picker = "telescope" - elseif LazyVim.has("fzf-lua") then + elseif LazyVim.has_extra("editor.fzf") then opts.picker = "fzf-lua" + elseif LazyVim.has_extra("editor.snacks_picker") then + opts.picker = "snacks" else - LazyVim.error("`octo.nvim` requires `telescope.nvim` or `fzf-lua`") + LazyVim.error("`octo.nvim` requires `telescope.nvim` or `fzf-lua` or `snacks.nvim`") end -- Keep some empty windows in sessions From 606b96466eeb39b1c1bb576c9b99041b64705f43 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Feb 2025 23:10:44 +0100 Subject: [PATCH 43/51] fix(snacks.picker): remove redundant leader-gc keymap. Closes #5646 --- lua/lazyvim/plugins/extras/editor/snacks_picker.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index aad6287f..93f32fab 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -72,7 +72,6 @@ return { { "fR", function() Snacks.picker.recent({ filter = { cwd = true }}) end, desc = "Recent (cwd)" }, { "fp", function() Snacks.picker.projects() end, desc = "Projects" }, -- git - { "gc", function() Snacks.picker.git_log() end, desc = "Git Log" }, { "gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (hunks)" }, { "gs", function() Snacks.picker.git_status() end, desc = "Git Status" }, { "gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" }, From 9c596681f684c549e69652a5c77a68bd5ecc93e3 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Tue, 18 Feb 2025 23:11:12 +0100 Subject: [PATCH 44/51] feat(keymaps): show lang when opening treesitter inspect --- lua/lazyvim/config/keymaps.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 031e7054..fbc7f5d1 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -179,7 +179,7 @@ map("n", "qq", "qa", { desc = "Quit All" }) -- highlights under cursor map("n", "ui", vim.show_pos, { desc = "Inspect Pos" }) -map("n", "uI", "InspectTree", { desc = "Inspect Tree" }) +map("n", "uI", function() vim.treesitter.inspect_tree() vim.api.nvim_input("I") end, { desc = "Inspect Tree" }) -- LazyVim Changelog map("n", "L", function() LazyVim.news.changelog() end, { desc = "LazyVim Changelog" }) From f3e37a1f836448772b3e63a3add542236f9e7375 Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Tue, 18 Feb 2025 22:12:23 +0000 Subject: [PATCH 45/51] 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 5a16440c..debec307 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 16 +*LazyVim.txt* For Neovim Last change: 2025 February 18 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 759a19e785735eb8513b4f8d4483ec5ab1b75307 Mon Sep 17 00:00:00 2001 From: Thomas Vandal Date: Fri, 21 Feb 2025 08:28:05 -0500 Subject: [PATCH 46/51] feat(chezmoi): enhance fzf-lua chezmoi picker and add snacks.dasbhoard entry (#5275) ## Description This PR enhances the fzf-lua picker for chezmoi by using the built-in `files` picker and by opening the selected file with `ChezmoiEdit` and `vimcmd_entry` to parse the entry. This simplifies the code and adds icons and file preview. The PR also replaces the config entry in snacks.dashboard with the chezmoi picker, similar to what was already implemented for dashboard-nvim ## Screenshots Current picker: ![image](https://github.com/user-attachments/assets/d0be9279-f199-4349-8055-04d8a351c6f9) New picker: ![image](https://github.com/user-attachments/assets/c68fcb6a-79fa-4f65-8c48-60ce64450350) ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/util/chezmoi.lua | 42 +++++++++++++-------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/lua/lazyvim/plugins/extras/util/chezmoi.lua b/lua/lazyvim/plugins/extras/util/chezmoi.lua index cffa6749..6c88fc45 100644 --- a/lua/lazyvim/plugins/extras/util/chezmoi.lua +++ b/lua/lazyvim/plugins/extras/util/chezmoi.lua @@ -3,22 +3,12 @@ local pick_chezmoi = function() require("telescope").extensions.chezmoi.find_files() elseif LazyVim.pick.picker.name == "fzf" then local fzf_lua = require("fzf-lua") - local results = require("chezmoi.commands").list() - local chezmoi = require("chezmoi.commands") - - local opts = { - fzf_opts = {}, - fzf_colors = true, - actions = { - ["default"] = function(selected) - chezmoi.edit({ - targets = { "~/" .. selected[1] }, - args = { "--watch" }, - }) - end, - }, + local actions = { + ["enter"] = function(selected) + fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = os.getenv("HOME") }) + end, } - fzf_lua.fzf_exec(results, opts) + fzf_lua.files({ cmd = "chezmoi managed --include=files,symlinks", actions = actions }) elseif LazyVim.pick.picker.name == "snacks" then local results = require("chezmoi.commands").list({ args = { @@ -65,6 +55,7 @@ return { }, { "xvzc/chezmoi.nvim", + cmd = { "ChezmoiEdit" }, keys = { { "sz", @@ -120,6 +111,27 @@ return { table.insert(opts.config.center, 5, projects) end, }, + { + "folke/snacks.nvim", + optional = true, + opts = function(_, opts) + local chezmoi_entry = { + icon = " ", + key = "c", + desc = "Config", + action = pick_chezmoi, + } + local config_index + for i = #opts.dashboard.preset.keys, 1, -1 do + if opts.dashboard.preset.keys[i].key == "c" then + table.remove(opts.dashboard.preset.keys, i) + config_index = i + break + end + end + table.insert(opts.dashboard.preset.keys, config_index, chezmoi_entry) + end, + }, -- Filetype icons { From 541b83276e0fe92f7d0d6c9f283cd15ccba5a2fd Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Fri, 21 Feb 2025 13:29:08 +0000 Subject: [PATCH 47/51] 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 debec307..447b9369 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 18 +*LazyVim.txt* For Neovim Last change: 2025 February 21 ============================================================================== Table of Contents *LazyVim-table-of-contents* From 771089f6928512ab0f431e9db04e7dc802a5e1a5 Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Sat, 22 Feb 2025 08:47:27 +0200 Subject: [PATCH 48/51] fix(blink): make sure to use `LazyVim.config.icons.kinds` (#5668) ## Description This blink [commit](https://github.com/Saghen/blink.cmp/commit/010d939e7fd6cb8d8e4a9b1dec228b8405d15fb4) made a change, so that third party sources can provide their own `item.kind_icon` and `item.kind_name`. The problem is that these icons will take precedence over `config.kind_icons[kind]`, which LazyVim sets [here](https://github.com/LazyVim/LazyVim/blob/541b83276e0fe92f7d0d6c9f283cd15ccba5a2fd/lua/lazyvim/plugins/extras/coding/blink.lua#L164-L164). I noticed that `blink-cmp-copilot` also started providing its own in the items that it returns. I noticed this because I have the following in my configuration `columns = { { "label", "label_description", gap = 1 }, { "kind_icon", "kind" } }`. The icon that it uses is a smaller icon one character long, which by default it will scale up and show normally like the LazyVim icon. But when you put another component next to it (like `kind`) in the `columns` field, then it shows the normal size of the icon next to the `kind` and it looks kinda weird compared to the default LazyVim icon. ## Related Issue(s) None ## Screenshots Before (the default icon provided by `blink-cmp-copilot`) ![2025-02-22_02-17](https://github.com/user-attachments/assets/aa7da566-a577-4d32-822c-f2d891b3c047) After (the LazyVim icon) ![2025-02-22_02-18](https://github.com/user-attachments/assets/342580a9-5a36-47fa-aad7-c139f2765d74) ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/extras/coding/blink.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/lazyvim/plugins/extras/coding/blink.lua b/lua/lazyvim/plugins/extras/coding/blink.lua index 99a2748e..10b2ee62 100644 --- a/lua/lazyvim/plugins/extras/coding/blink.lua +++ b/lua/lazyvim/plugins/extras/coding/blink.lua @@ -143,6 +143,7 @@ return { items = transform_items and transform_items(ctx, items) or items for _, item in ipairs(items) do item.kind = kind_idx or item.kind + item.kind_icon = LazyVim.config.icons.kinds[item.kind_name] or item.kind_icon or nil end return items end From cb223553ff73eb2f37ffb5dc0bb75b76a4677faf Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sat, 22 Feb 2025 06:48:29 +0000 Subject: [PATCH 49/51] 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 447b9369..881984e8 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 21 +*LazyVim.txt* For Neovim Last change: 2025 February 22 ============================================================================== Table of Contents *LazyVim-table-of-contents* From b0334fd57cdb920e03afab3c1940114ad43e4fbe Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sat, 1 Mar 2025 15:21:12 +0100 Subject: [PATCH 50/51] fix(copilot-chat): switch from deprecated picker integrations (#5707) - Instead of using picker integrations (that are now deprecated), switch to using CopilotChat.select_prompt() that is using `vim.ui.select` which brings the selector integration responsibility to pickers instead of plugin - Use vim.ui.input instead of vim.fn.input for consistency Reason why this was deprecated in CopilotChat.nvim (by me) and will be removed in future is because these integrations never made any sense anyway when `vim.ui.select` overrides exist. ## Screenshots Using fzf-lua in my config, outside of LazyNvim but same thing applies: ![image](https://github.com/user-attachments/assets/a5171ffe-63a6-4b79-9925-fd8bef52e52f) ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. Signed-off-by: Tomas Slusny --- .../plugins/extras/ai/copilot-chat.lua | 46 ++++++------------- 1 file changed, 15 insertions(+), 31 deletions(-) diff --git a/lua/lazyvim/plugins/extras/ai/copilot-chat.lua b/lua/lazyvim/plugins/extras/ai/copilot-chat.lua index d67da7b2..58169b1e 100644 --- a/lua/lazyvim/plugins/extras/ai/copilot-chat.lua +++ b/lua/lazyvim/plugins/extras/ai/copilot-chat.lua @@ -1,28 +1,3 @@ -local M = {} - ----@param kind string -function M.pick(kind) - return function() - local actions = require("CopilotChat.actions") - local items = actions[kind .. "_actions"]() - if not items then - LazyVim.warn("No " .. kind .. " found on the current line") - return - end - local map = { - telescope = "telescope", - fzf = "fzflua", - snacks = "snacks", - } - for _, def in pairs(LazyVim.config.get_defaults()) do - if def.enabled and map[def.name] then - return require("CopilotChat.integrations." .. map[def.name]).pick(items) - end - end - Snacks.notify.error("No picker found") - end -end - return { { "CopilotC-Nvim/CopilotChat.nvim", @@ -62,16 +37,25 @@ return { { "aq", function() - local input = vim.fn.input("Quick Chat: ") - if input ~= "" then - require("CopilotChat").ask(input) - end + vim.ui.input({ + prompt = "Quick Chat: ", + }, function(input) + if input ~= "" then + require("CopilotChat").ask(input) + end + end) end, desc = "Quick Chat (CopilotChat)", mode = { "n", "v" }, }, - -- Show prompts actions with telescope - { "ap", M.pick("prompt"), desc = "Prompt Actions (CopilotChat)", mode = { "n", "v" } }, + { + "ap", + function() + require("CopilotChat").select_prompt() + end, + desc = "Prompt Actions (CopilotChat)", + mode = { "n", "v" }, + }, }, config = function(_, opts) local chat = require("CopilotChat") From ec5981dfb1222c3bf246d9bcaa713d5cfa486fbd Mon Sep 17 00:00:00 2001 From: folke <292349+folke@users.noreply.github.com> Date: Sat, 1 Mar 2025 14:22:16 +0000 Subject: [PATCH 51/51] 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 881984e8..b5d95b12 100644 --- a/doc/LazyVim.txt +++ b/doc/LazyVim.txt @@ -1,4 +1,4 @@ -*LazyVim.txt* For Neovim Last change: 2025 February 22 +*LazyVim.txt* For Neovim Last change: 2025 March 01 ============================================================================== Table of Contents *LazyVim-table-of-contents*