From 477042d8c981991ebab14a31aa17c4cddcde7b0d Mon Sep 17 00:00:00 2001 From: Iordanis Petkakis <12776461+dpetka2001@users.noreply.github.com> Date: Mon, 23 Feb 2026 13:22:13 +0200 Subject: [PATCH] fix(keymaps): disable `scroll` for search mappings which use `zv` --- lua/lazyvim/config/keymaps.lua | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 05d07a21..05787def 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -62,10 +62,34 @@ map( ) -- https://github.com/mhinz/vim-galore#saner-behavior-of-n-and-n -map("n", "n", "'Nn'[v:searchforward].'zv'", { expr = true, desc = "Next Search Result" }) +map("n", "n", function() + local old = vim.g.snacks_scroll + vim.g.snacks_scroll = false + + local key = (vim.v.searchforward and "n" or "N") .. "zv" + + -- without `vim.schedule`, the mapping did not behave consistently, sometimes opening + -- the fold and highlighting the word and sometimes not + vim.schedule(function() + vim.g.snacks_scroll = old + end) + + return key +end, { expr = true, desc = "Next Search Result" }) map("x", "n", "'Nn'[v:searchforward]", { expr = true, desc = "Next Search Result" }) map("o", "n", "'Nn'[v:searchforward]", { expr = true, desc = "Next Search Result" }) -map("n", "N", "'nN'[v:searchforward].'zv'", { expr = true, desc = "Prev Search Result" }) +map("n", "N", function() + local old = vim.g.snacks_scroll + vim.g.snacks_scroll = false + + local key = (vim.v.searchforward and "n" or "N") .. "zv" + + vim.schedule(function() + vim.g.snacks_scroll = old + end) + + return key +end, { expr = true, desc = "Prev Search Result" }) map("x", "N", "'nN'[v:searchforward]", { expr = true, desc = "Prev Search Result" }) map("o", "N", "'nN'[v:searchforward]", { expr = true, desc = "Prev Search Result" })