Skip to content

Releases: folke/snacks.nvim

v2.28.0

01 Nov 12:44
eadb0ca

Choose a tag to compare

2.28.0 (2025-11-01)

Features

  • gh: new gh (GitHub cli) integration (85b8ec2)
  • image: when opts.conceal, conceal remainig lines that are not covered by the image. See #2391 (404027c)
  • picker.buffers: add filetype/buftype to search text (a249c86)
  • picker.buffers: added buftype and filetype for scratch buffers (6a13271)
  • picker.diff: moved git_diff finder to separate file so it can be re-used + made it more robust. Closes #2366 (3049ad8)
  • picker.diff: native diff now also highlights the language of the diffed code in the diff (7260957)
  • picker.git_diff: git_diff now also shows staged hunks and added stage/unstage/restore actions for hunks. Closes #2382 (1fb3f4d)
  • picker.git_diff: added staged flag (118648c)
  • picker.highlights: badges (202e595)
  • picker.preview: allow items to define a title used in the preview window (4b572f4)
  • picker.preview: support for images and render markdown (9585da6)
  • picker.util: cmdline parser used to properly parse diff args (5025989)
  • picker: better integration with markview and render-markdown when previewing (4708e9a)
  • scratch: store scratch info in meta files, instead of the filename + custom filekeys (85f8e22)
  • util.spawn: Proc:json() (5589c9d)
  • util: Snacks.util.stop() to safely stop/close a luv handle (ce9e299)

Bug Fixes

  • explorer.tree: only strip trasiling forward slashes if not at root. Closes #2375 (72dc621)
  • explorer: differentiate if file or folder when deleting on Windows (#2373) (59c5545)
  • explorer: do reveal in on_show if explorer is not open yet. Closes #2388 (ba529d4)
  • explorer: schedule on_find (typically reveal), for both files finder and when git status updates the finder. Closes #2388 (a9b57b2)
  • gh: add action idx to gh_actions text (d94184d)
  • image.inline: off-by-one for finding visible images at the last line of the buffer (04b3a54)
  • image: avoid nested math environments (#2345) (66e3dc4)
  • image: check for invalid buffer (9ad4178)
  • image: check to update on BufWinEnter and attach to buffer changes (e18e4f6)
  • image: don't add placements to concealed lines. Closes #2391 (13963b1)
  • image: guard against invalid buffers. Closes #2383 (4bb1ce1)
  • keymap docs (583a0c1)
  • keymap: make sure opts are a table. Closes #2392 (367d1bd)
  • layout: only max zindex for snacks windows/layouts (8eddc0b)
  • picker.actions: drop and tabdrop should never reload existing buffers (#2368) (6cf2fee)
  • picker.actions: use buffer! instead of buffer for edit. Closes #2378 (2a1a001)
  • picker.diff: better filename parsing. See #2366 (377f3bf)
  • picker.diff: first line of header (fb011c2)
  • picker.diff: only process --- diffs directly if it doesn't start with a diff header (0a33aec)
  • picker.filter: get cwd from active tabpage if available (c1b517f)
  • picker.finder: mutate existing opts (c91e230)
  • picker.finder: tmp fix for #2386 (5eea5f9)
  • picker.git_branches: git log preview. Closes #2360 (597ebd4)
  • picker.git_diff: remove --default-prefix, since that's no longer needed. See #2382 (40774ae)
  • picker.git_diff: set group=false by default, since we also have git_status (530e591)
  • picker.highlights: modifiable for set_lines (98345fb)
  • picker.keymaps: try to locate neovim compiled lua source files for keymaps (76160be)
  • picker.lsp: fixed vim.str_byteindex capability check. Closes #2389 (46917d0)
  • picker.lsp: some LSP servers notify completion before sending the actual result. See #2372 (aa8a318)
  • picker.lsp: use LspRequest to track completed and cancelled requests. Fixes #2364 (8afb609)
  • picker.preview: again. docgen seems broken (758bbfa)
  • picker.preview: don't show locations for diff preview (b064488)
  • picker.preview: fckup (fd7795e)
  • picker.preview: fix (e2c1c52)
  • picker.preview: show proper preview message for deleted scratch buffers (4ad8a41)
  • picker.util: better relative time format (3e30fb6)
  • picker.util: ignore errors from corrupted kv stores. Closes #2394 (b3d01c5)
  • picker.watch: ...
Read more

v2.27.0

26 Oct 11:23
4b3bb54

Choose a tag to compare

2.27.0 (2025-10-26)

Features

  • keymap: added new enabled option (b0f21fa)
  • picker.proc: finder to process json (5294c4f)
  • util.job: simple wrapper around jobstart to work with terminals (used in dashboards and pickers) (de05631)
  • util.lsp: added overload for Snacks.util.lsp.on(cb) (f33aa20)

Bug Fixes

  • dashboard: don't add sleep in nushell. Closes #1706 (44f71d2)
  • explorer: refresh git status on all tabs when needed. Closes #2348 (1472211)
  • explorer: windows path fixes (e1dc6b3)

v2.26.0

25 Oct 14:56
fc84ed4

Choose a tag to compare

2.26.0 (2025-10-25)

Features

  • explorer: add cross-platform trash support (ed08ef1)
  • keymap: add filetype and LSP-aware keymap management (0bf34af)
  • util: add LSP utility module with dynamic capability handlers (7a63ba5)
  • win: add SnacksWinSeparator to default win.wo.winhighlight (#2340) (869709d), closes #2336
  • win: add default Snacks prefixed WinSeparator (#2338) (381265b), closes #2336

Bug Fixes

  • dahboard: do full terminal reset when receiving first output and displayed cached contents (c952834)
  • dashboard: don't write to closed terminal buffer (f75eaf1)
  • dashboard: work-around for jobstart+pty issue where not all output is processed before exit. Closes #1706 (4d776bd)
  • explorer: macos has trash pre-installed, so no need to try osascript and move to first. Closes #2349 (d569072)
  • image: detach image when reloading image file. Closes #2343 (7bf4175)
  • image: increase timeout for querying the terminal. Closes #2344 (4122143)
  • image: let healthcheck wait till terminal detection is done (b029511)
  • image: only attach to a buffer once. Closes #2343 (6f72643)
  • image: work around tmux extended-keys breaking TermResponse. Closes #2332 (e93dcfd)
  • layout: provide parent win width/height when relative to win (#2346) (602393a)
  • picker: fix race condition causing "Finder yielded after done" error. Closes #2327 (c9ccbe5)
  • picker: set min file width to 40 (69417ac)
  • win: use sbuffer instead of split for split windows (bbd6d42)

Performance Improvements

  • picker: don't use treesitter string parser, since a change in nightly creates thousands of unlisted buffers in that case (ad6c0a5)
  • picker: re-use existing string parsers per language to prevent needing to create new parsers (efa304a)

v2.25.0

23 Oct 19:31
d1eaa30

Choose a tag to compare

2.25.0 (2025-10-23)

Features

  • notifier: added gap option. Closes #2331 (b1acbb0)
  • select: allow configuring options for specific vim.ui.select kinds (bca5b05)
  • snacks: added Snacks.version. auto updated by the release workflow (a283beb)

Bug Fixes

  • dashboard: fix issue with opening file at location due to splitkeep and restoring laststatus/showtabline (1a2b34d)
  • scroll: stop animations when buf/changedtick changes (a42b376)

v2.24.0

23 Oct 09:44
daa3ddd

Choose a tag to compare

2.24.0 (2025-10-23)

Features

  • bigfile: disable mini-hipatterns (#2170) (3d4dd13)
  • dashboard: optional filter for projects. Closes #798 (fe88a07)
  • debug: allow debug evaluation of block selections (#1331) (231ffae)
  • git: allow configuring extra git args and git cmd args for all git sources. See #2178 (5782b5c)
  • image: add icns support (#2120) (9df47bc)
  • image: added clear fun. Closes #1394 (30687d1)
  • image: added support for base64 encoded images in url. Closes #2304 (2c56e10)
  • image: allow specifying a page number for inlined pdfs (#1806) (3f0fe34)
  • indent: pass win to filter func. Closes #2307 (8116e0b)
  • input: added support for a custom highlight functions. Closes #2216 (9b80137)
  • layout: height=0.7 for preview in vscode layout (c3d6c01)
  • layout: static (non-flex) layouts now shrink the root box to fit the contents. See #2035 (ba7845b)
  • picker.finder: added assertions that finder is still running when receiving results (a45503b)
  • picker.git_diff: add base option to show diff against a merge base. Useful to see changes on a branch/PR (7964f04)
  • picker.git: allow passing extra args to git log command for file renames (#1964) (2aee35d)
  • picker.git: use default previewer args in git_show (#1736) (f324f96)
  • picker.layout: added config hook for resolved layouts. See #2035 (722f9ea)
  • picker.lsp_config: added more info to lsp picker (636be5c)
  • picker.lsp: added lsp_incoming_calls and lsp_outgoing_calls. Closes #1843 (55d6670)
  • picker.lsp: added option keep_parents to lsp_symbols (default false). See #2083. closes #2266 (2b9d522)
  • picker.projects: make max_depth customizable (#2253) (3e9e2e2)
  • picker.scratch: add scratch picker with grep, new and delete keybinds (#1019) (ca0f8b2)
  • picker.select: select now fits the list to the items independent of the layout. Closes #2035 (5c63614)
  • picker: add author field to git log (#2295) (2cf864a)
  • picker: add exact match position highlighting for grep results (3b54c8d)
  • picker: add git_restore action for git_status picker (2b22fe7)
  • picker: add toggle_regex for grep (#1594) (bd6ee23)
  • picker: added Snacks.picker.tags() a picker for ctags. Closes #1728 (4290287)
  • picker: added custom options to vim.ui.select that snacks can use for a better select (264cab1)
  • picker: added live support to git_log, which uses -S (pickaxe) to search. Closes #1544 (c9fa6f7)
  • picker: allow configuring pathspec for git grep (#2311) (57fbda7)
  • picker: also ignore dot bare git files (#2058) (4bb0dae)
  • picker: enhanced resume with multi-state support and flexible API (bc6c446)
  • picker: flexible filename format (#2294) (9ad5d53)
  • picker: mapped <c-g> to print_cwd in list. See #2244 (faa6aba)
  • picker: Support rmagatti/autosession session manager (#1825) (fc06234)
  • picker: updated Snacks.picker.lsp_config to work with vim.lsp.config (292d46f)
  • picker: when resuming a source that has nothing to resume, start a picker with the source instead (db3c13c)
  • terminal: minor improvements for user experience (#2276) (39b14c4)
  • toggle: allow notification customization via function (#2247) (3ccab97)
  • win: added support for vim.o.winborder. Set win.border = true to use it (b30523c)
  • win: all existing snacks windows for all plugins now honor vim.o.winborder. Defaults to rounded if not set. (c1737d8)
  • win: generalize footer options for keys (#363) (b8d1719)
  • win: make split window "stacking" configurable (e46a094)

Bug Fixes

  • bigfile: bigfile doesn't work on windows. (#1969) (b4944ff), closes #1722
  • bufdelete: try alternate buffer first and otherwise last used buffer (914c900)
  • dashboard: fix path filtering for recent_files with cwd option (#2201) (057d4ab)
  • dashboard: oldfiles filter should return a boolean instead of the resul...
Read more

v2.23.0

15 Sep 06:37
da230e3

Choose a tag to compare

2.23.0 (2025-09-15)

Features

  • image.doc: enable inline math rendering for neorg files. Closes #1438 (ec487f5)
  • image.inline: honor concealcursor and hide conceal when selecting lines. Closes #1478 (bc0630e)
  • image: proper inline rendering of math expressions. Closes #1318. Closes #1454 (6ea4fa7)
  • picker.git: added all option to also list remote branched for git_branches. Closes #1465 (3d695ab)
  • scope: allow disabling scopes with vim.g.snacks_scope = false or vim.b.snacks_scope = false. Closes #1463 (5315e26)
  • util: small ts parse wrapper that parses async when available (9f0aa20)

Bug Fixes

  • dashboard: escape filenames for edit. Closes #1453 (8b0e79a)
  • explorer: confirm prompt now defaults to No (f970cbb)
  • image.inline: remove debug (d9bb639)
  • image.latex: don't nest image nodes (714d761)
  • image.queries: add image type (1bbd479)
  • image: only show anchor icon for inline images shown on the lines below. Closes #1479 (bc2ed15)
  • indent: zero indent for blank lines. Closes #1477 (cddf714)
  • input: add cr keybind for normal mode. Closes #1468. Closes #1466 (78f0ad6)
  • lsp: fix deprecated warnings related to lsp client (07fefd2)
  • picker.preview: always use builtin for git log preview (f0d3433)
  • statuscolumn: better way of determining open folds. Closes #1445 (1239fb8)
  • util.spawn: correctly mark as faild on abort (6917597)
  • win: make sure the border is set when setting the title (76311ab)

Performance Improvements

  • image: async treesitter parsing for images (e55ae37)

Reverts

  • dont always set border when setting title. Closes #1436 (fa29c6c)

v2.22.0

25 Feb 18:18
5eac729

Choose a tag to compare

2.22.0 (2025-02-25)

Features

  • image: allow disabling math rendering. Closes #1247 (1543a06)
  • image: configurable templates for math expressions. Closes #1338 (e039139)
  • image: removed org integration, since that is now handled by the org mode plugin directly. (956fe69)
  • picker.input: added some ctrl+r keymaps similar to cmdline. Closes #1420 (c864a7d)
  • util: util method to check if ts lang is available on any Neovim version. See #1422 (e2cb9df)

Bug Fixes

  • compat: fixup (ceabfc1)
  • compat: properly detect async treesitter parsing (842605f)
  • compat: vim.fs.normalize. Closes #1321 (2295cfc)
  • dim: check that win is valid when animating dim. Closes #1342 (47e1440)
  • image.placement: max width/height in cells is 297. Closes #1345 (5fa93cb)
  • image.terminal: reset queue when timer runs (2b34c4d)
  • image.terminal: write queued terminal output on main (1b63b18)
  • picker.buffers: add a flag when buffer is visible in a window. See #1417 (91c3da0)
  • picker.recent: expand to full path before normalizing. Closes #1406 (cf47fa7)
  • picker: allow overriding winhl of layout box wins. Closes #1424 (b0f983e)
  • picker: disable regex for grep_word (#1363) (54298eb)
  • picker: remove unused keymaps for mouse scrolling (33df54d)
  • picker: update titles before showing. Closes #1337 (3ae9863)
  • scope: use rawequal to check if scope impl is treesitter. Closes #1413 (4ce197b)
  • scroll: compat with Neovim 0.9.4 (4c52b7f)
  • statuscolumn: right-align the current line number when relativenumber=true. Closes #1376 (dd15e3a)
  • win: don't update title is relative win is invalid. Closes #1348 (a00c323)
  • win: use correct keys for displaying help. Closes #1364 (b100c93)
  • zen: always count cmdheight towards Zen bottom offset (#1402) (041bf1d)

Performance Improvements

  • scope: use async treesitter parsing when available (e0f882e)

v2.21.0

20 Feb 10:41
51542bb

Choose a tag to compare

2.21.0 (2025-02-20)

Features

  • added new image snacks plugin for the kitty graphics protocol (4e4e630)
  • bigfile: configurable average line length (default = 1000). Useful for minified files. Closes #576. Closes #372 (7fa92a2)
  • compat: added svim, a compatibility layer for Neovim. Closes #1321 (bc902f7)
  • debug: graduate proc debug to Snacks.debug.cmd (eced303)
  • explorer: opts.include and opts.exclude. Closes #1068 (ab1889c)
  • explorer: added Snacks.explorer.reveal() to reveal the current file in the tree. (b4cf6bb)
  • explorer: added copy/paste (yank/paste) for files. Closes #1195 (938aee4)
  • explorer: added ctrl+f to grep in the item's directory (0454b21)
  • explorer: added ctrl+t to open a terminal in the item's directory (81f9006)
  • explorer: added diagnostics file/directory status (7f1b60d)
  • explorer: added quick nav with [, ] with d/w/e for diagnostics (d1d5585)
  • explorer: added support for live search (82c4a50)
  • explorer: allow disabling untracked git status. Closes #983 (a3b083b)
  • explorer: deal with existing buffers when renaming / deleting files. Closes #1315 (6614a2c)
  • explorer: different hl group for broken links (1989921)
  • explorer: disable fuzzy searches by default for explorer since it's too noisy and we can't sort on score due to tree view (b07788f)
  • explorer: file watching that works on all platforms (8399465)
  • explorer: focus on first file when searching in the explorer (1d4bea4)
  • explorer: git index watcher (4c12475)
  • explorer: show symlink target (dfa79e0)
  • git_log: add author filter (#1091) (8c11661)
  • gitbrowse: add support for git.sr.ht (#1297) (a3b47e5)
  • gitbrowse: open permalinks to files. Fixes #320 (#438) (2a06e4c)
  • image.doc: allow configuring the header for latex / typst inline in the document. Closes #1303 (bde3add)
  • image.doc: allow setting image.src with #set!. Closes #1276 (65f89e2)
  • image.doc: check for image.ignore in ts meta. See #1276 (29c777a)
  • image: conceal option for inline rendering (disabled by default) (684666f)
  • image: Snacks.image.hover() (5f466be)
  • image: add support for svelte (#1277) (54ab77c)
  • image: adde support for Image in jsx (95878ad)
  • image: added opts.img_dirs to configure the search path for resolving images. Closes #1222 (ad0b88d)
  • image: added Snacks.image.doc.at_cursor(). See #1108 (6348ccf)
  • image: added fallback image rendering for wezterm. Closes #1063 (9e6b1a6)
  • image: added math rendering for typst. Closes #1260 (e225823)
  • image: added proper support for tmux (b1a3b66)
  • image: added support for .image tags in neorg (59bbe8d)
  • image: added support for typst. Closes #1235 (507c183)
  • image: added support for a bunch of aditional languages (a596f8a)
  • image: added support for angle bracket urls. Closes #1209 (14a1f32)
  • image: added support for math expressions in latex and markdown doc + images in latex. Closes #1223 (1bca71a)
  • image: added support for mermaid diagrams in markdown (f8e7942)
  • image: added support for remote image viewing. Closes #1156 (#1165) (a5748ea)
  • image: added support for tsx, jsx, vue and angular (ab0ba5c)
  • image: added support for wikilink style images. Closes #1210 (3fda272)
  • image: allow customizing font size for math expressions (b052eb9)
  • image: allow customizing the default magick args for vector images (2096fcd)
  • image: allow forcing image rendering even when the terminal support detection fails (d17a6e4)
  • image: apply image window options (73366fa)
  • image: better detection of image capabilities of the terminal/mux environment (1795d4b)
  • image: better error handling + option to disable error notifications (1adfd29)
  • image: better health checks (d389c5d)
  • image: check for magick in health check (1284835)
  • image: custom src resolve function (af21ea3)
  • image: enabled pdf previ...
Read more

v2.20.0

08 Feb 16:36
76a5dcf

Choose a tag to compare

2.20.0 (2025-02-08)

Features

  • picker.undo: ctrl+y to yank added lines, ctrl+shift+y to yank deleted lines (3baf95d)
  • picker: added treesitter symbols picker (a6beb0f)
  • terminal: added Snacks.terminal.list(). Closes #421. Closes #759 (73c4b62)

Bug Fixes

  • explorer: change grep in item dir keymap to leader-/. Closes #1000 (9dfa276)
  • layout: take winbar into account for split layouts. Closes #996 (e4e5040)
  • picker.git: account for deleted files in git diff. Closes #1001 (e9e2e69)
  • picker.git: handle git status renames. Closes #1003 (93ad23a)
  • picker.lines: use original buf instead of current (which can be the picker on refresh) (7ccf9c9)
  • picker.proc: don't close stdout on proc exit, since it might still contain buffered output. Closes #966 (3b7021e)

v2.19.0

07 Feb 11:40
789f161

Choose a tag to compare

2.19.0 (2025-02-07)

Features

  • bigfile: configurable average line length (default = 1000). Useful for minified files. Closes #576. Closes #372 (7fa92a2)
  • explorer: add hl groups for ignored / hidden files. Closes #887 (85e1b34)
  • explorer: added ctrl+f to grep in the item's directory (0454b21)
  • explorer: added ctrl+t to open a terminal in the item's directory (81f9006)
  • explorer: added diagnostics file/directory status (7f1b60d)
  • explorer: added quick nav with [, ] with d/w/e for diagnostics (d1d5585)
  • explorer: added support for live search (82c4a50)
  • explorer: allow disabling untracked git status. Closes #983 (a3b083b)
  • explorer: different hl group for broken links (1989921)
  • explorer: disable fuzzy searches by default for explorer since it's too noisy and we can't sort on score due to tree view (b07788f)
  • explorer: file watcher when explorer is open (6936c14)
  • explorer: file watching that works on all platforms (8399465)
  • explorer: focus on first file when searching in the explorer (1d4bea4)
  • explorer: git index watcher (4c12475)
  • explorer: rewrite that no longer depends on fd for exploring (6149a7b)
  • explorer: show symlink target (dfa79e0)
  • matcher: call on_match after setting score (23ce529)
  • picker.git: add confirmation before deleting a git branch (#951) (337a3ae)
  • picker.git: add create and delete branch to git_branches (#909) (8676c40)
  • picker.lazy: don't use grep. Parse spec files manually. Closes #972 (0928007)
  • picker.lsp: use existing buffers for preview when opened (d4e6353)
  • picker.matcher: internal on_match (47b3b69)
  • picker.preview: allow confguring preview = {main = true, enabled = false} (1839c65)
  • picker.undo: added ctrl+y to yank added lines from undo (811a24c)
  • picker: picker:dir() to get the dir of the item (when a directory) or it's parent (when a file) (969608a)
  • picker: added git_grep picker. Closes #986 (2dc9016)
  • picker: allow configuring file icon width. Closes #981 (52c1086)
  • picker: better checkhealth (b773368)
  • picker: get filetype from modeline when needed. Closes #987 (5af04ab)
  • picker: opts.on_close (6235f44)
  • picker: pin picker as a split to left/bottom/top/right with ctrl+z+(hjkl) (27cba53)
  • rename: add old to on_rename callback (455228e)
  • scope: allow injected languages to be parsed by treesitter (#823) (aba21dd)
  • statuscolumn: added mouse click handler to open/close folds. Closes #968 (98a7b64)
  • terminal: added start_insert (64129e4)
  • terminal: auto_close and auto_insert. Closes #965 (bb76cae)

Bug Fixes

  • bigfile: check that passed path is the one from the buffer (8deea64)
  • explorer.git: better git status watching (09349ec)
  • explorer.git: dont reset cursor when git status is done updating (bc87992)
  • explorer.git: vim.schedule git updates (3aad761)
  • explorer.tree: fix linux (6f5399b)
  • explorer.tree: symlink directories (e5f1e91)
  • explorer.watch: pcall watcher, since it can give errors on windows (af96818)
  • explorer: always refresh state when opening the picker since changes might have happened that were not monitored (c61114f)
  • explorer: call original on_close. Closes #971 (a0bee9f)
  • explorer: check that picker is still open (50fa1be)
  • explorer: clear cache after action. Fixes #890 (34097ff)
  • explorer: clear selection after delete. Closes #898 (44733ea)
  • explorer: disable follow for explorer search by default. No longer needed. Link directories may show as files then though, but that's not an issue. See #960 (b9a17d8)
  • explorer: don't use --absolute-path option, since that resolves paths to realpath. See #901. See #905. See #904 (97570d2)
  • explorer: dont focus first file when not searching (3fd437c)
  • explorer: dont process git when picker closed (c255d9c)
  • explorer: last status for indent guides taking hidden / ignored files into account (94bd2ef)
  • explorer: strip cwd from search text for explorer items (38f392a)
  • explorer: windows ([...
Read more