Skip to content

Latest commit

 

History

History
1540 lines (1314 loc) · 222 KB

CHANGELOG.md

File metadata and controls

1540 lines (1314 loc) · 222 KB

Changelog

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)

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 previews (39bf513)
  • image: floats in markdown. Closes #1151 (4e10e31)
  • image: health checks (0d5b106)
  • image: images are now properly scaled based on device DPI and image DPI. Closing #1257 (004050c)
  • image: make manual hover work correctly (942cb92)
  • image: make math packages configurable. Closes #1295 (e27ba72)
  • image: markdown inline image preview. opts.image must be enabled and terminal needs support (001f300)
  • image: refactor + css/html + beter image fitting (e35d6cd)
  • image: refactor of treesitter queries to support inline image data (0bf0c62)
  • images: added support for org-mode. Closes #1276 (10387af)
  • image: show progress indicator when converting image files (b65178b)
  • image: try resolving paths relative to the document and to the cwd. See #1203 (668cbbb)
  • image: url_decode strings (d41704f)
  • image: use tectonic when available (8d073cc)
  • image: use kitty's unicode placeholder images (7d655fe)
  • image: use search dirs to resolve file from both cwd and dirname of file. Closes #1305 (bf01460)
  • image: utility function to get a png dimensions from the file header (a6d866a)
  • matcher: call on_match after setting score (23ce529)
  • picker.actions: cmd action now always allows to edit the command. Closes #1033 (a177885)
  • picker.actions: option to disable notify for yank action. Closes #1117 (f6a807d)
  • picker.config: better source field spec (6c58b67)
  • picker.db: allow configuring the sqlite3 lib path. Closes #1025 (b990044)
  • picker.files: added ft option to filter by extension(s) (12a7ea2)
  • picker.format: opts.formatters.file.use_git_status_hl defaults to true and adds git status hl to filename (243eeca)
  • picker.git_diff: use the diff previewer for git_diff so that delta can be used. See #1302 (92786c5)
  • picker.git: add confirmation before deleting a git branch (#951) (337a3ae)
  • picker.git: add create and delete branch to git_branches (#909) (8676c40)
  • picker.git: allow passing extra args to git grep. Closes #1184 (7122a03)
  • picker.git: allow passing extra args to other git pickers (#1205) (4d46574)
  • picker.lazy: don't use grep. Parse spec files manually. Closes #972 (0928007)
  • picker.lsp: added original symbol to item.item. Closes #1171 (45a6f8d)
  • picker.lsp: use existing buffers for preview when opened (d4e6353)
  • picker.preview: allow confguring preview = {main = true, enabled = false} (1839c65)
  • picker.preview: allow passing additional args to the git preview command (910437f)
  • picker.proc: added proc debug mode (d870f16)
  • picker.undo: ctrl+y to yank added lines, ctrl+shift+y to yank deleted lines (3baf95d)
  • picker.undo: added ctrl+y to yank added lines from undo (811a24c)
  • picker.util: lua globber (97dcd9c)
  • picker.util: utility function to get all bins on the PATH (5d42c7e)
  • picker: opts.focus can be used to set default focus window. opts.enter if picker should be focused on enter. Closes #1162 (e8de28b)
  • picker: add LSP symbol range to result item (#1123) (c0481ab)
  • picker: added c-q to list (6d0d2dc)
  • picker: added git_grep picker. Closes #986 (2dc9016)
  • picker: added lsp_config source (0d4aa98)
  • picker: added treesitter symbols picker (a6beb0f)
  • picker: allow complex titles (#1112) (f200b3f)
  • picker: allow configuring file icon width. Closes #981 (52c1086)
  • picker: allow overriding default file/dir/dir_open icons. Closes #1199 (41c4391)
  • picker: default c-t keymap to open in tab (ffc6fe3)
  • picker: each window can now be toggled (also input), hidden and have auto_hide (01efab2)
  • picker: get filetype from modeline when needed. Closes #987 (5af04ab)
  • picker: image previewer using kitty graphics protocol (2b0aa93)
  • picker: new native diff mode (disabled by default). Can be used to show delta diffs for undo. Closes #1288 (d6a38ac)
  • picker: pin picker as a split to left/bottom/top/right with ctrl+z+(hjkl) (27cba53)
  • picker: renamed native -> builtin + fixed diff mode used for undo. Closes #1302 (bd6a62a)
  • scope: allow injected languages to be parsed by treesitter (#823) (aba21dd)
  • scroll: big rework to make scroll play nice with virtual lines (e71955a)
  • scroll: scroll improvements. Closes #1024 (73d2f0f)
  • statuscolumn: added mouse click handler to open/close folds. Closes #968 (98a7b64)
  • terminal: added Snacks.terminal.list(). Closes #421. Closes #759 (73c4b62)
  • terminal: added start_insert (64129e4)
  • terminal: auto_close and auto_insert. Closes #965 (bb76cae)
  • terminal: don't use deprecated vim.fn.termopen on Neovim >= 0.10 (37f6665)
  • test (520ed85)
  • toggle: allow user to add custom which-key description (#1121) (369732e)
  • treesitter: add tree boolean to toggle on/off tree symbols (#1105) (c61f9eb)
  • util: Snacks.util.winhl helper to deal with vim.wo.winhighlight (4c1d7b4)
  • util: base64 shim for Neovim < 0.10 (96f1227)
  • util: Snacks.util.color can now get the color from a list of hl groups (a33f65d)
  • util: util.spawn (a76fe13)
  • words: add filter function for user to disable specific filetypes (#1296) (d62e752)

Bug Fixes

  • all: better support for opening windows / pickers / ... on multiple tab pages. Closes #1043 (8272c1c)
  • bigfile: check that passed path is the one from the buffer (8deea64)
  • buffers: use " mark for full buffer position when set. Closes #1160 (7d350bc)
  • compat: correct Neovim 0.11 check (448a55a)
  • dashboard: allow dashboard to be the main editor window (e3ead3c)
  • dashboard: dashboard can be a main editor window (f36c70a)
  • dashboard: use Snacks.util.icon for icons. Closes #1192 (c2f06da)
  • debug: better args handling for debugging cmds (48a3fed)
  • explorer.git: always at .git directory to ignored (f7a35b8)
  • 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: change grep in item dir keymap to leader-/. Closes #1000 (9dfa276)
  • explorer: check that picker is still open (50fa1be)
  • 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: 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 (b560054)
  • exporer.tree: and now hopefully on windows (ef9b12d)
  • gitbrowse: add support for GitHub Enterprise Cloud repo url (#1089) (97fd57e)
  • gitbrowse: cwd for permalinks (#1038) (0bf47dc)
  • gitbrowse: previous logic always overwrote 'commit' (#1127) (2f3f080)
  • git: use nul char as separator for git status (8e0dfd2)
  • health: skip dot dirs... Closes #1293 (aaed4a9)
  • image.doc: crop inline typst equations properly (#1320) (4f8b9eb)
  • image.doc: fixed at_cursor. Closes #1258 (76f5ee4)
  • image.health: add check for ghost-script to render pdfs. Closes #1248 (2b52d89)
  • image.health: allow convert if magick not available (4589e25)
  • image.hover: close when needed. Closes #1229 (1f9ba12)
  • image.latex: include doc packages for math rendering. Closes #1262 (2ee6488)
  • image.latex: inline math formulas. Closes #1246 (9e422e1)
  • image.markdown: fix image treesitter query. Closes #1300 (830ac62)
  • image.terminal: set passthrough=all instead of on for tmux. Closes #1249 (efcc25d)
  • image: added support for relative paths. Closes #1143 (2ef6375)
  • image: better cell size calculation for non-HDPI displays (e146a66)
  • image: better image position caluclation. Closes #1268 (5c0607e)
  • image: create cache dir (f8c4e03)
  • image: delay sending first image, to make ghostty happy. Closes #1333 (9aa8cbb)
  • image: delete terminal image on exit, just to be sure (317bfac)
  • image: do not attach to invalid buffers (#1238) (9a5e4de)
  • image: don't fallback to convert on windows, since that is a system tool (c1a1984)
  • image: failed state (5a37d83)
  • image: fix disappearing images when changing colorscheme (44e2f8e)
  • image: fixed gsub for angle brackets. Closes #1301 (beaa1c2)
  • image: fixup (de3cba5)
  • image: handle file uppercase file extensions. Closes #1202 (356f621)
  • image: handle inline images at the same TS node, but that changed url. See #1203 (86e3ddf)
  • image: hide progress when finished loading in for wezterm (526896a)
  • image: let text conversion continue on errors. See #1303 (6d1cda4)
  • image: mermaid theme. Closes #1282 (8117fb4)
  • image: move assertion for src/content. See #1276 (31e21cc)
  • image: only load image when the file exists. Closes #1143 (298499d)
  • image: only setup tmux pass-through on supported terminals. Fixes #1054 (78e692c)
  • image: prevent image id collisions by interleaving the nvim pid hash in the image id (31788ba)
  • image: relax check for wezterm. Closes #1076 (8d5ae25)
  • image: remove wezterm from supported terminals, since they don't support unicode placeholders. Closes #1063 (345260f)
  • image: remove debug (13863ea)
  • image: remove ft check, since we use lang already. Closes #1177 (4bcd26a)
  • image: remove some default latex packages (f45dd6c)
  • image: remove test (462578e)
  • image: return converted filename instead of original src. Closes #1213 (118eab0)
  • image: show full size when not showing image inline (d7c8fd9)
  • image: support Neovim < 0.10 (c067ffe)
  • image: wrong return when trying second command (74c4298)
  • input: add missing hl group for input title (#1164) (7014b91)
  • layout: deep merge instead of shallow merge for window options. Closes #1166 (27256cf)
  • layout: just hide any layouts below a backdrop. easier and looks better. (0dab071)
  • layout: make sure width/height are at least 1. Closes #1090 (c554097)
  • layout: take winbar into account for split layouts. Closes #996 (e4e5040)
  • layout: zindex weirdness on stable. Closes #1180 (72ffb3d)
  • notifier: keep notif when current buf is notif buf (a13c891)
  • picker.actions: better set cmdline. Closes #1291 (570c035)
  • picker.actions: check that plugin exists before loading it in help. Closes #1134 (e326de9)
  • picker.actions: don't delete empty buffer when its in another tabpage. Closes #1005 (1491b54)
  • picker.actions: don't reuse_win in floating windows (like the picker preview) (4b9ea98)
  • picker.actions: fix qflist position (#911) (6d3c135)
  • picker.actions: keymap confirm. Closes #1252 (a9a84dd)
  • picker.actions: reverse prev/next on select with a reversed list layout. Closes #1124 (eae55e7)
  • picker.actions: use vim.v.register instead of + as default. (9ab6637)
  • picker.buffers: remove dd to delete buffer from input keymaps. Closes #1193 (f311d1c)
  • picker.colorscheme: use wildignore. Closes #969 (ba8badf)
  • picker.config: use &lt;c-w&gt;HJKL to move float to far left/bottom/top/right. Only in normal mode. (34dd83c)
  • picker.explorer: ensure diagnostics can be disabled (#1145) (885c140)
  • picker.git: account for deleted files in git diff. Closes #1001 (e9e2e69)
  • picker.git: apply args to git, and not git grep. (2e284e2)
  • picker.git: better handling of multi file staging (b39a3ba)
  • picker.git: correct root dir for git log (c114a0d)
  • picker.git: formatting of git log (f320026)
  • picker.git: handle git status renames. Closes #1003 (93ad23a)
  • picker.git: preserve chronological order when matching (#1216) (8b19fd0)
  • picker.git: properly handle file renames for git log. Closes #1154 (9c436cb)
  • picker.help: make sure plugin is loaded for which we want to view the help (3841a87)
  • picker.highlight: lower case treesitter parser name (3367983)
  • picker.highlights: close on confirm. Closes #1096 (76f6e4f)
  • picker.input: prevent save dialog (fcb2f50)
  • picker.lines: use original buf instead of current (which can be the picker on refresh) (7ccf9c9)
  • picker.list: list:view should never transform reverse. Closes #1016 (be781f9)
  • picker.list: allow horizontal scrolling in the list (572436b)
  • picker.list: better wrap settings for when wrapping is enabled (a542ea4)
  • picker.list: correct offset calculation for large scrolloff. Closes #1208 (f4ca368)
  • picker.list: don't return non-matching items. Closes #1133 (d07e7ac)
  • picker.list: don't show preview when target cursor/top not yet reached. Closes #1204 (b02cb5e)
  • picker.list: dont transform with reverse for resolving target. Closes #1142 (0e36317)
  • picker.list: keep existing target if it exists unless force = true. Closes #1152 (121e74e)
  • picker.list: let user override wrap (22da4bd)
  • picker.list: reset preview when no results. Closes #1133 (f8bc119)
  • picker.lsp: fix indent guides for sorted document symbols (17360e4)
  • picker.lsp: handle invalid lsp kinds. Closes #1182 (f3cdd02)
  • picker.lsp: only sort when not getting workspace symbols. Closes #1071 (d607d2e)
  • picker.lsp: sort document symbols by position (cc22177)
  • picker.matcher: don't optimize pattern subsets when pattern has a negation (a6b3d78)
  • picker.matcher: only consider subset patterns that contain only whitespace and alpha numeric chars. Closes #1013 (fcf2311)
  • picker.notifications: close on confirm. Closes #1092 (a8dda99)
  • picker.preview: clear namespace on reset (a6d418e)
  • picker.preview: don't clear preview state on close so that colorscheme can be restored. Closes #932 (9688bd9)
  • picker.preview: don't reset preview when filtering and the same item is previewed (c8285c2)
  • picker.preview: fix newlines before setting lines of a buffer (62c2c62)
  • picker.preview: hide line numbers / status column for directory preview. Closes #1029 (f9aca86)
  • picker.preview: preview for uris. Closes #1075 (c1f93e2)
  • picker.preview: update titles on layout update. Closes #1113 (89b3ce1)
  • picker.preview: work-around for Neovim's messy window-local options (that are never truly local). Closes #1100 (e5960d8)
  • picker.proc: don't close stdout on proc exit, since it might still contain buffered output. Closes #966 (3b7021e)
  • picker.proc: make sure to emit the last line when done. Closes #1095 (b94926e)
  • picker.projects: add custom project dirs (c7293bd)
  • picker.projects: use fd or fdfind (270250c)
  • picker.watch: schedule_wrap. Closes #1049 (f489d61)
  • picker.zoxide: directory icon (#1031) (33dbebb)
  • picker: nil on :quit. Closes #1107 (1219f5e)
  • picker: opts.focus = false now works again (031f9e9)
  • picker: closed check for show preview. Closes #1181 (c1f4d30)
  • picker: consider zen windows as main. Closes #973 (b1db65a)
  • picker: disabled preview main (9fe43bd)
  • picker: don't render list when closed. See #1308 (681ae6e)
  • picker: exit insert mode before closing with &lt;c-c&gt; to prevent cursor shifting left. Close #956 (71eae96)
  • picker: go back to last window on cancel instead of main (4551f49)
  • picker: initial preview state when main (cd6e336)
  • picker: only show extmark errors when debug is enabled. Closes #988 (f6d9af7)
  • picker: remove debug (a23b10e)
  • picker: remove debug :) (3d53a73)
  • picker: save toggles for resume. Closes #1085 (e390713)
  • picker: sometimes main layout win gets selected. Closes #1015 (4799f82)
  • picker: update titles last on show. Closes #1113 (96796db)
  • picker: vim.ui.select callback is called when canceling selection (#1115) (4c3bfa2)
  • scroll: added keepjumps (7161dc1)
  • statuscolumn: only execute za when fold exists (#1093) (345eeb6)
  • terminal: check for 0.11 (6e45829)
  • terminal: softer check for using jobstart with term=true instead of deprecated termopen (544a2ae)
  • toggle: hide toggle when real keymap does not exist. Closes #378 (ee9e617)
  • win: apply win-local window options for new buffers displayed in a window. Fixes #925 (cb99c46)
  • win: better handling when the command window is open. Closes #1245 (7720410)
  • win: call on_close before actually closing so that prev win can be set. Closes #962 (a1cb54c)
  • words: default count to 1. Closes #1307 (45ec90b)
  • zen: properly get zoom options. Closes #1207 (3100333)

Performance Improvements

  • dashboard: speed up filtering for recent_files (#1250) (b91f417)
  • explorer: disable watchdirs fallback watcher (5d34380)
  • explorer: early exit for tree calculation (1a30610)
  • explorer: no need to get git status with -uall. Closes #983 (bc087d3)
  • explorer: only update tree if git status actually changed (5a2acf8)
  • explorer: only update tree when diagnostics actually changed (1142f46)
  • image.convert: identify during convert instead of calling identify afterwards (7b7f42f)
  • image: no need to run identify before convert for local files (e2d9941)
  • picker.list: only re-render when visible items changed (c72e62e)
  • picker: cache treesitter line highlights (af31c31)
  • picker: cache wether ts lang exists and disable smooth scrolling on big files (719b36f)
  • scroll: much better/easier/faster method for vertical cursor positioning (a3194d9)

Documentation

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)

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 (b560054)
  • exporer.tree: and now hopefully on windows (ef9b12d)
  • git: use nul char as separator for git status (8e0dfd2)
  • health: better health checks for picker. Closes #917 (427f036)
  • picker.actions: close preview before buffer delete (762821e)
  • picker.actions: don't reuse_win in floating windows (like the picker preview) (4b9ea98)
  • picker.actions: fix qflist position (#911) (6d3c135)
  • picker.actions: get win after splitting or tabnew. Fixes #896 (95d3e7f)
  • picker.colorscheme: use wildignore. Closes #969 (ba8badf)
  • picker.db: better script to download sqlite3 on windows. See #918 (84d1a92)
  • picker.finder: correct check if filter changed (52bc24c)
  • picker.input: fixed startinsert weirdness with prompt buffers (again) (c030827)
  • picker.input: set as not modified when setting input through API (54a041f)
  • picker.list: better wrap settings for when wrapping is enabled (a542ea4)
  • picker.list: let user override wrap (22da4bd)
  • picker.list: nil check (c22e46a)
  • picker.lsp: fix indent guides for sorted document symbols (17360e4)
  • picker.lsp: sort document symbols by position (cc22177)
  • picker.matcher: don't optimize pattern subsets when pattern has a negation (a6b3d78)
  • picker.preview: don't clear preview state on close so that colorscheme can be restored. Closes #932 (9688bd9)
  • picker.preview: update main preview when changing the layout (604c603)
  • picker.projects: add custom project dirs (c7293bd)
  • picker.projects: use fd or fdfind (270250c)
  • picker.select: default height shows just the items. See #902 (c667622)
  • picker: better handling when entering the root layout window. Closes #894 (e294fd8)
  • picker: consider zen windows as main. Closes #973 (b1db65a)
  • picker: disabled preview main (9fe43bd)
  • picker: exit insert mode before closing with &lt;c-c&gt; to prevent cursor shifting left. Close #956 (71eae96)
  • picker: initial preview state when main (cd6e336)
  • picker: only show extmark errors when debug is enabled. Closes #988 (f6d9af7)
  • win: apply win-local window options for new buffers displayed in a window. Fixes #925 (cb99c46)
  • win: better handling of alien buffers opening in managed windows. See #886 (c8430fd)

Performance Improvements

  • explorer: disable watchdirs fallback watcher (5d34380)
  • explorer: early exit for tree calculation (1a30610)
  • explorer: no need to get git status with -uall. Closes #983 (bc087d3)
  • picker.list: only re-render when visible items changed (c72e62e)
  • picker: cache treesitter line highlights (af31c31)
  • picker: cache wether ts lang exists and disable smooth scrolling on big files (719b36f)

2.18.0 (2025-02-03)

Features

  • dashboard: play nice with file explorer netrw replacement (5420a64)
  • explorer.git: added git_status_open. When false, then dont show recursive git status in open directories (8646ba4)
  • explorer: added ]g and [g to jump between files mentioned in git status (263dfde)
  • explorer: added git status. Closes #817 (5cae48d)
  • explorer: hide git status for open directories by default. it's mostly redundant (b40c0d4)
  • explorer: keep expanded dir state. Closes #816 (31984e8)
  • explorer: more keymaps and tree rework. See #837 (2ff3893)
  • explorer: navigate with h/l to close/open directories. Closes #833 (4b29ddc)
  • explorer: new explorer module with shortcut to start explorer picker and netrw replacement functionlity (670c673)
  • explorer: recursive copy and copying of selected items with c (2528fcb)
  • explorer: update on cwd change (8dea225)
  • explorer: update status when saving a file that is currently visible (78d4116)
  • picker.commands: do not autorun commands that require arguments (#879) (62d99ed)
  • picker.frecency: added frecency support for directories (ce67fa9)
  • picker.input: search syntax highlighting (4242f90)
  • picker.lines: jump to first position of match. Closes #806 (ae897f3)
  • picker.list: use regular CursorLine when picker window is not focused (8a570bb)
  • picker.matcher: added opts.matcher.history_bonus that does fzf's scheme=history. Closes #882. Closes #872 (78c2853)
  • picker.pickwin: optional win/buf filter. Closes #877 (5c5b40b)
  • picker.projects: added &lt;c-t&gt; to open a new tab page with the projects picker (ced377a)
  • picker.projects: allow disabling projects from recent files (c2dedb6)
  • picker.projects: default to tcd instead of cd (3d2a075)
  • picker.projects: enabled frecency for projects picker (5a20565)
  • picker.projects: projects now automatically processes dev folders and added a bunch of actions/keymaps. Closes #871 (6f8f0d3)
  • picker.undo: better undo tree visualization. Closes #863 (44b8e38)
  • picker.undo: make diff opts for undo configurable (d61fb45)
  • picker: added support for double cliking and confirm (8b26bae)
  • picker: automatically download sqlite3.dll on Windows when using frecency / history for the first time. (65907f7)
  • picker: beter API to interact with active pickers. Closes #851 (6a83373)
  • picker: better health checks. Fixes #855 (d245925)
  • picker: history per source. Closes #843 (35295e0)

Bug Fixes

  • dashboard: open pull requests with P instead of p in the github exmaple (b2815d7)
  • dashboard: update on VimResized and WinResized (558b0ee)
  • explorer: after search, cursor always jumped to top. Closes #827 (d17449e)
  • explorer: always use --follow to make sure we see dir symlinks as dirs. Fixes #814 (151fd3d)
  • explorer: cwd is now changed automatically, so no need to update state. (5549d4e)
  • explorer: don't disable netrw fully. Just the autocmd that loads a directory (836eb9a)
  • explorer: don't try to show when closed. Fixes #836 (6921cd0)
  • explorer: fix git status sorting (551d053)
  • explorer: fixed hierarchical sorting. Closes #828 (fa32e20)
  • explorer: keep global git status cache (a54a21a)
  • explorer: remove sleep :) (efbc4a1)
  • git: use os.getenv to get env var. Fixes #5504 (16d700e)
  • layout: adjust zindex when needed when another layout is already open. Closes #826 (ab8af1b)
  • layout: destroy in schedule. Fixes #861 (c955a8d)
  • picker.actions: fix split/vsplit/tab. Closes #818 (ff02241)
  • picker.actions: pass edit commands to jump. Closes #859 (df0e3e3)
  • picker.actions: reworked split/vsplit/drop/tab cmds to better do what's intended. Closes #854 (2946875)
  • picker.actions: tab -> tabnew. Closes #842 (d962d5f)
  • picker.explorer: do LSP stuff on move (894ff74)
  • picker.explorer: use cached git status (1ce435c)
  • picker.format: extra slash in path (dad3e00)
  • picker.format: use item.file for filename_only (e784a9e)
  • picker.git_log: add extra space between the date and the message (#885) (d897ead)
  • picker.keymaps: added normalized lhs to search text (fbd39a4)
  • picker.lazy: don't use live searches. Fixes #809 (1a5fd93)
  • picker.lines: col is first non-whitespace. Closes #806 (ec8eb60)
  • picker.list: better virtual scrolling that works from any window (4a50291)
  • picker.matcher: fix cwd_bonus check (00af290)
  • picker.matcher: regex offset by one. Fixes #878 (9a82f0a)
  • picker.undo: add newlines (72826a7)
  • picker.undo: cleanup tmp buffer (8368176)
  • picker.undo: copy over buffer lines instead of just the file (c900e2c)
  • picker.undo: disable swap for tmp undo buffer (033db25)
  • picker: better main window management. Closes #842 (f0f053a)
  • picker: improve resume. Closes #853 (0f5b30b)
  • picker: make pick_win work with split layouts. Closes #834 (6dbc267)
  • picker: multi layouts that need async task work again. (cd44efb)
  • picker: no auto-close when entering a floating window (08e6c12)
  • picker: no need to track jumping (b37ea74)
  • picker: propagate WinEnter when going to the real window after entering the layout split window (8555789)
  • picker: show regex matches in list when needed. Fixes #878 (1d99bac)
  • picker: show_empty for files / grep. Closes #808 (a13ff6f)
  • util: better default icons when no icon plugin is installed (0e4ddfd)
  • util: better keymap normalization (e1566a4)
  • util: normkey. Closes #763 (6972960)
  • win: close help when leaving the win buffer (4aba559)

Performance Improvements

  • explorer: don't wait till git status finished. Update tree when needed. See #869 (287db30)
  • explorer: use cache when possible for opening/closing directories. Closes #869 (cef4fc9)
  • git: also check top-level path to see if it's a git root. Closes #807 (b9e7c51)
  • picker.files: no need to check every time for cmd availability (8f87c2c)
  • picker.undo: more performance improvements for the undo picker (3d4b8ee)
  • picker.undo: use a tmp buffer to get diffs. Way faster than before. Closes #863 (d4a5449)

2.17.0 (2025-01-30)

Features

  • picker.actions: allow selecting the visual selection with &lt;Tab&gt; (96c76c6)
  • picker.explorer: focus dir on confirm from search (605f745)

Bug Fixes

  • git: basic support for git work trees (d76d9aa)
  • picker.preview: properly refresh the preview after layout changes. Fixes #802 (47993f9)
  • picker: add proper close (15a9411)
  • picker: make jumping work again... (f40f338)
  • picker: show help for input / list window with ?. (87dab7e)
  • win: properly handle closing the last window. Fixes #793 (18de5bb)

2.16.0 (2025-01-30)

Features

  • layout: added support for split layouts (root box can be a split) (6da592e)
  • layout: make fullscreen work for split layouts (115f8c6)
  • picker.actions: added separate hl group for pick win current (9b80e44)
  • picker.actions: separate edit_split etc in separate split and edit actions. Fixes #791 (3564f4f)
  • picker.config: added opts.config which can be a function that can change the resolved options (b37f368)
  • picker.explorer: added explorer_move action mapped to m (08b9083)
  • picker.explorer: live search (db52796)
  • picker.files: allow forcing the files finder to use a certain cmd (3e1dc30)
  • picker.format: better path formatting for directories (08f3c32)
  • picker.format: directory formatting (847509e)
  • picker.jump: added opts.jump.close, which default to true, but is false for explorer (a9591ed)
  • picker.list: added support for setting a cursor/topline target for the next render. Target clears when reached, or when finders finishes. (da08379)
  • picker: opts.focus = "input"|"list"|false to configure what to focus (if anything) when showing the picker (5a8d798)
  • picker: picker:iter() now also returns idx (118d908)
  • picker: added edit_win action bound to ctrl+enter to pick a window and edit (2ba5be8)
  • picker: added git_stash picker. Closes #762 (bb3db11)
  • picker: added notifications picker. Closes #738 (32cffd2)
  • picker: added support for split layouts to picker (sidebar and ivy_split) (5496c22)
  • picker: added support to keep the picker open when focusing another window (auto_close = false) (ad8f166)
  • picker: new file explorer Snacks.picker.explorer() (00613bd)
  • picker: opening a picker with the same source as an active picker, will close it instead (toggle) (b6cf033)
  • picker: reworked toggles (flags). they're now configurable. Closes #770 (e16a6a4)
  • rename: optional file, on_rename for Snacks.rename.rename_file() (9d8c277)

Bug Fixes

  • bigfile: check if buf still exists when applying syntax. Fixes #737 (08852ac)
  • bufdelete: ctrl-c throw error in fn.confirm (#750) (3a3e795)
  • bufdelete: invalid lua (b1f4f99)
  • dashboard: better handling of closed dashboard win (6cb7fdf)
  • dashboard: don't override user configuration (#774) (5ff2ad3)
  • dashboard: fix dasdhboard when opening in a new win. Closes #767 (d44b978)
  • dashboard: prevent starting picker twice when no session manager. Fixes #783 (2f396b3)
  • filter: insert path from filter.paths into self.paths (#761) (ac20c6f)
  • layout: better handling of resizing of split layouts (c8ce9e2)
  • layout: better update check for split layouts (b50d697)
  • layout: make sure split layouts are still visible when a float layout with backdrop opens (696d198)
  • matcher.score: correct prev_class for transition bonusses when in a gap. Fixes #787 (b45d0e0)
  • picker.actions: detect and report circular action references (0ffc003)
  • picker.actions: proper cr check (6c9f866)
  • picker.actions: stop pick_win when no target and only unhide when picker wasn't stopped (4a1d189)
  • picker.actions: when only 1 win, pick_win will select that automatically. Show warning when no windows. See #623 (ba5a70b)
  • picker.config: fix wrong opts.cwd = true config. Closes #757 (ea44a2d)
  • picker.config: normalize opts.cwd (69c013e)
  • picker.explorer: fix cwd for items (71070b7)
  • picker.explorer: stop file follow when picker was closed (89fcb3b)
  • picker.explorer: when searching, go to first non internal node in the list (276497b)
  • picker.filter: proper cwd check. See #757 (e4ae9e3)
  • picker.git: better stash pattern. Closes #775 (e960010)
  • picker.git: default to git root for git_files. Closes #751 (3cdebee)
  • picker.git: ignore autostash (2b15357)
  • picker.git: show diff for staged files. Fixes #747 (e87f0ff)
  • picker.layout: fix list cursorline when layout updates (3f43026)
  • picker.layout: make split layouts work in layout preview (215ae72)
  • picker.lsp: remove symbol detail from search text. too noisy (92710df)
  • picker.multi: apply source filter settings for multi source pickers. See #761 (4e30ff0)
  • picker.preview: don't enable numbers when minimal=true (04e2995)
  • picker.preview: don't error on invalid start positions for regex. Fixes #784 (460b58b)
  • picker.preview: only show binary message when binary and no ft. Closes #729 (ea838e2)
  • picker.resume: fix picker is nil (#772) (1a5a087)
  • picker.score: scoring closer to fzf. See #787 (390f017)
  • picker.select: allow configuring vim.ui.select with the select source. Closes #776 (d70af2d)
  • picker.util: proper cwd check for paths. Fixes #754. See #757 (1069d78)
  • picker: better handling of win Enter/Leave mostly for split layouts (046653a)
  • picker: don't destroy active pickers (only an issue when multiple pickers were open) (b479f10)
  • picker: only do preview scrolling when preview is scrolling and removed default preview horizontal scrolling keymaps (a998c71)
  • picker: show new notifications on top (0df7c0b)
  • picker: split edit_win in {"pick_win", "jump"} (dcd3bc0)
  • picker: stopinsert again (2250c57)
  • win: don't destroy opts. Fixes #726 (473be03)
  • win: error when enabling padding with listchars="" (#786) (6effbcd)

Performance Improvements

  • picker.matcher: optimize matcher priorities and skip items that can't match for pattern subset (dfaa18d)
  • picker.recent: correct generator for old files (5f32414)
  • picker.score: no need to track in_gap status. redundant since we can depend on gap instead (fdf4b0b)

2.15.0 (2025-01-23)

Features

  • debug: truncate inspect to 2000 lines max (570d219)
  • input: input history. Closes #591 (80db91f)
  • input: persistent history. Closes #591 (0ed68bd)
  • picker.debug: more info about potential leaks (8d9677f)
  • picker.filter: Filter arg for filter (5a4b684)
  • picker.finder: optional transform function (5e69fb8)
  • picker.format: filename_only option (0396bdf)
  • picker.git: git_log, git_log_file, git_log_line now do git_checkout as confirm. Closes #722 (e6fb538)
  • picker.help: add more color to help tags (5778234)
  • picker.keymaps: add global + buffer toggles (#705) (b7c08df)
  • picker.keymaps: improvements to keymaps picker (2762c37)
  • picker.matcher: frecency and cwd bonus can now be enabled on any picker (7b85dfc)
  • picker.multi: multi now also merges keymaps (8b2c78a)
  • picker.preview: better positioning of preview location (3864955)
  • picker.preview: fallback highlight of results when no end_pos. Mostly useful for grep. (d12e454)
  • picker.smart: add bufdelete actions from buffers picker (#679) (67fbab1)
  • picker.smart: re-implemented smart as multi-source picker (450d1d4)
  • picker.util: smart path truncate. Defaults to 40. Closes #708 (bab8243)
  • picker: added lazy source to search for a plugin spec. Closes #680 (d03bd00)
  • picker: added opts.rtp (bool) to find/grep over files in the rtp. See #680 (9d5d3bd)
  • picker: added new icons picker for nerd fonts and emoji. Closes #703 (97898e9)
  • picker: getters and setters for cwd (2c2ff4c)
  • picker: multi source picker. Combine multiple pickers (as opposed to just finders) in one picker (9434986)
  • picker: persistent history. Closes #528 (ea665eb)
  • picker: preview window horizontal scrolling (#686) (bc47e0b)
  • picker: syntax highlighting for command and search history (efb6d1f)
  • profiler: added support for Snacks.profiler and dropped support for fzf-lua / telescope. Closes #695 (ada83de)

Bug Fixes

  • picker.actions: checktime after git_checkout (b86d90e)
  • picker.async: better handling of abort and schedule/defer util function (dfcf27e)
  • picker.async: fixed aborting a coroutine from the coroutine itself. See #665 (c1e2c61)
  • picker.files: include symlinks (dc9c6fb)
  • picker.frecency: track visit on BufWinEnter instead of BufReadPost and exclude floating windows (024a448)
  • picker.git_branches: handle detached HEAD (#671) (390f687)
  • picker.git: --follow only works for git_log_file. Closes #666 (23a8668)
  • picker.git: parse all detached states. See #671 (2cac667)
  • picker.grep: off-by-one for grep results col (e3455ef)
  • picker.icons: bump build for nerd fonts (ba108e2)
  • picker.icons: fix typo in Nerd Fonts and display the full category name (#716) (a4b0a85)
  • picker.icons: opts.icons -> opts.icon_sources. Fixes #715 (9e7bfc0)
  • picker.input: better handling of stopinsert with prompt buffers. Closes #723 (c2916cb)
  • picker.input: correct cursor position in input when cycling / focus. Fixes #688 (93cca7a)
  • picker.lsp: include_current on Windows. Closes #678 (66d2854)
  • picker.lsp: make lsp_symbols work for unloaded buffers (9db49b7)
  • picker.lsp: schedule_wrap cancel functions and resume when no clients (6cbca8a)
  • picker.lsp: use async from ctx (b878caa)
  • picker.lsp: use correct buf/win (8006caa)
  • picker.preview: clear buftype for file previews (5429dff)
  • picker.undo: use new API. Closes #707 (79a6eab)
  • picker.util: for -- args require a space before (ee6f21b)
  • picker.util: more relaxed resolve_loc (964beb1)
  • picker.util: prevent empty shortened paths if it's the cwd. Fixes #721 (14f16ce)
  • picker: better handling of buffers with custom URIs. Fixes #677 (cd5eddb)
  • picker: don't jump to invalid positions. Fixes #712 (51adb67)
  • picker: don't try showing the preview when the picker is closed. Fixes #714 (11c0761)
  • picker: resume. Closes #709 (9b55a90)
  • picker: starting a picker from the picker sometimes didnt start in insert mode. Fixes #718 (08d4f14)
  • picker: update title on find. Fixes #717 (431a24e)
  • scroll: handle buffer changes while animating (3da0b0e)
  • win: better way of finding a main window when fixbuf is true (84ee7dd)
  • zen: parent buf. Fixes #720 (f314676)

Performance Improvements

  • picker.frecency: cache all deadlines on load (5b3625b)
  • picker: gc optims (3fa2ea3)
  • picker: small optims (ee76e9b)
  • picker: small optims for abort (317a209)
  • picker: use picker ref in progress updater. Fixes #710 (37f3888)

2.14.0 (2025-01-20)

Features

  • picker.buffer: add filetype to bufname for buffers without name (83baea0)
  • picker.debug: debug option to detect garbage collection leaks (b59f4ff)
  • picker.matcher: new opts.matcher.file_pos which defaults to true to support patterns like file:line:col or file:line. Closes #517. Closes #496. Closes #651 (5e00b0a)
  • picker: added args option for files and grep. Closes #621 (781b6f6)
  • picker: added undo picker to navigate the undo tree. Closes #638 (5c45f1c)
  • picker: added support for item.resolve that gets called if needed during list rendering / preview (b0d3266)
  • terminal: allow overriding default shell. Closes #450 (3146fd1)
  • terminal: close terminals on ExitPre. Fixes #419 (2abf208)

Bug Fixes

  • dashboard: added optional filter for recent files (32cd343)
  • debug.run: schedule only nvim_buf_set_extmark in on_print (#425) (81572b5)
  • indent: use correct hl based on indent. Fixes #422 (627af73)
  • input: put the cursor right after the default prompt (#549) (f904481)
  • notifier: added SnacksNotifierMinimal. Closes #410 (daa575e)
  • notifier: win:close instead of win:hide (f29f7a4)
  • picker.buffers: add buf number to text (70106a7)
  • picker.buffer: unselect on delete. Fixes #653 (0ac5605)
  • picker.grep: correctly insert args from pattern. See #601 (8601a8c)
  • picker.grep: debug (f0d51ce)
  • picker.lsp.symbols: only include filename for search with workspace symbols (eb0e5b7)
  • picker.lsp: backward compat with Neovim 0.95 (3df2408)
  • picker.lsp: lazy resolve item lsp locations. Fixes #650 (d0a0046)
  • picker.preview: disable relativenumber by default. Closes #664 (384b9a7)
  • picker.preview: off-by-one for cmd output (da5556a)
  • picker.preview: reset before notify (e50f2e3)
  • picker.undo: disable number and signcolumn in preview (40cea79)
  • picker.util: item.resolve for nil item (2ff21b4)
  • picker.util: relax pattern for args (6b7705c)
  • scope: parse treesitter injections. Closes #430 (985ada3)
  • statusline: fix status line cache key (#656) (af55934)
  • win: always close created scratch buffers when win closes (abd7e61)
  • zen: properly handle close (920a9d2)
  • zen: sync cursor with parent window (#547) (ba45c28), closes #539

Performance Improvements

  • picker: fixed some issues with closed pickers not always being garbage collected (eebf44a)

2.13.0 (2025-01-19)

Features

  • picker.actions: added support for action options. Fixes #598 (8035398)
  • picker.buffers: del buffer with ctrl+x (2479ff7)
  • picker.buffers: delete buffers with dd (2ab18a0)
  • picker.commands: added builtin commands. Fixes #634 (ee988fa)
  • picker.frecency: cleanup old entries from sqlite3 database (320a4a6)
  • picker.git: added git_diff picker for diff hunks (#519) (cc69043)
  • picker.git: git diff/show can now use native or neovim for preview. defaults to neovim. Closes #500. Closes #494. Closes #491. Closes #478 (e36e6af)
  • picker.git: stage/unstage files in git status with &lt;tab&gt; key (0892db4)
  • picker.grep: added ft (rg's type) and regex (rg's --fixed-strings) options (0437cfd)
  • picker.list: added debug option to show scores (821e231)
  • picker.list: added select_all action mapped to ctrl+a (c9e2695)
  • picker.list: better way of highlighting field patterns (924a988)
  • picker.list: make conceallevel configurable. Fixes #635 (d88eab6)
  • picker.lsp: added lsp_workspace_symbols. Supports live search. Closes #473 (348307a)
  • picker.matcher: added opts.matcher.sort_empty and opts.matcher.filename_bonus (ed91078)
  • picker.matcher: better scoring algorithm based on fzf. Closes #512. Fixes #513 (e4e2e88)
  • picker.matcher: integrate custom item scores (7267e24)
  • picker.matcher: moved length tiebreak to sorter instead (d5ccb30)
  • picker.recent: include open files in recent files. Closes #487 (96ffaba)
  • picker.score: prioritize matches in filenames (5cf5ec1)
  • picker.smart: better frecency bonus (74feefc)
  • picker.sort: default sorter can now sort by len of a field (6ae87d9)
  • picker.sources: lines just sorts by score/idx. Smart sorts on empty (be42182)
  • picker: add qflist_all action to send all even when already sel… (#600) (c7354d8)
  • picker: add some source aliases like the Telescope / FzfLua names (5a83a8e)
  • picker: added {preview} and {flags} title placeholders. Closes #557, Closes #540 (2e70b7f)
  • picker: added git_branches picker. Closes #614 (8563dfc)
  • picker: added inspect action mapped to &lt;c-i&gt;. Useful to see what search fields are available on an item. (2ba165b)
  • picker: added smart picker (772f3e9)
  • picker: added exclude option for files and grep. Closes #581 (192fb31)
  • picker: added jump options jumplist(true for all), reuse_win & tagstack (true for lsp). Closes #589. Closes #568 (84c3738)
  • picker: added preliminary support for combining finder results. More info coming soon (000db17)
  • picker: added spelling picker. Closes #625 (b170ced)
  • picker: added support for live args for grep and files. Closes #601 (50f3c3e)
  • picker: added toggle/flag/action for follow. Closes #633 (aa53f6c)
  • picker: allow disabling file icons (76fbf9e)
  • picker: allow setting a custom opts.title. Fixes #620 (6001fb2)
  • picker: custom icon for unselected entries (#588) (6402687)
  • picker: restore cursor / topline on resume (ca54948)
  • pickers.format: added opts.picker.formatters.file.filename_first (98562ae)
  • picker: use an sqlite3 database for frecency data when available (c43969d)
  • scroll: faster animations for scroll repeats after delay. (replaces spamming handling) (d494a9e)
  • snacks: added snacks.picker (#445) (559d6c6)
  • toggle: allow toggling global options. Fixes #534 (b50effc)
  • win: warn on duplicate keymaps that differ in case. See #554 (a71b7c0)

Bug Fixes

  • animate: never animate stopped animations (197b0a9)
  • bigfile: check existence of NoMatchParen before executing (#561) (9b8f57b)
  • config: better vim.tbl_deep_extend that prevents issues with list-like tables. Fixes #554 (75eb16f)
  • config: dont exclude metatables (2d4a0b5)
  • grep: explicitely set --no-hidden because of the git filter (ae2de9a)
  • indent: dont redraw when list/shiftwidth/listchars change. Triggered way too often. Fixes #613. Closes #627 (d212e3c)
  • input: bring back &lt;c-w&gt;. Fixes #426. Closes #429 (5affa72)
  • layout: allow root with relative=cursor. Closes #479 (f06f14c)
  • layout: don't trigger events during re-layout on resize. Fixes #552 (d73a4a6)
  • layout: open/update windows in order of the layout to make sure offsets are correct (034d50d)
  • layout: use eventignore when updating windows that are already visible to fix issues with synatx. Fixes #552 (f7d967c)
  • lsp: use treesitter highlights for LSP locations (fc06a36)
  • notifier: content width. Fixes #631 (0e27737)
  • picker.actions: added hack to make folds work. Fixes #514 (df1060f)
  • picker.actions: close existing empty buffer if it's the current buffer (0745505)
  • picker.actions: full path for qflist and loclist actions (3e39250)
  • picker.actions: only delete empty buffer if it's not displayed in a window. Fixes #566 (b7ab888)
  • picker.actions: return action result. Fixes #612. See #611 (4a482be)
  • picker.colorscheme: nil check. Fixes #575 (de01907)
  • picker.config: allow merging list-like layouts with table layout options (706b1ab)
  • picker.config: better config merging and tests (9986b47)
  • picker.config: normalize keys before merging so you can override &lt;c-s&gt; with <C-S> (afef949)
  • picker.db: remove tests (71f69e5)
  • picker.diagnostics: sort on empty pattern. Fixes #641 (c6c76a6)
  • picker.files: ignore errors since it's not possible to know if the error isbecause of an incomplete pattern. Fixes #551 (4823f2d)
  • picker.format: filename (a194bbc)
  • picker.format: use forward slashes for paths. Closes #624 (5f82ffd)
  • picker.git: git log file/line for a file not in cwd. Fixes #616 (9034319)
  • picker.git: git_file and git_line should only show diffs including the file. Fixes #522 (1481a90)
  • picker.git: use Snacks.git.get_root instead vim.fs.root for backward compatibility (a2fb70e)
  • picker.highlight: properly deal with multiline treesitter captures (27b72ec)
  • picker.input: don't set prompt interrupt, but use a &lt;c-c&gt; mapping instead that can be changed (123f0d9)
  • picker.input: leave insert mode when closing and before executing confirm. Fixes #543 (05eb22c)
  • picker.input: statuscolumn on resize / re-layout. Fixes #643 (4d8d844)
  • picker.input: strip newllines from pattern (mainly due to pasting in the input box) (c6a9955)
  • picker.input: use Snacks.util.wo instead of vim.wo. Fixes #643 (d6284d5)
  • picker.list: disable folds (5582a84)
  • picker.list: include search filter for highlighting items (live search). See #474 (1693fbb)
  • picker.list: newlines in text. Fixes #607. Closes #580 (c45a940)
  • picker.list: possible issue with window options being set in the wrong window (f1b6c55)
  • picker.list: scores debug (9499b94)
  • picker.lsp: added support for single location result (79d27f1)
  • picker.matcher: initialize matcher with pattern from opts. Fixes #596 (c434eb8)
  • picker.matcher: inverse scores (1816931)
  • picker.minheap: clear sorted on minheap clear. Fixes #492 (79bea58)
  • picker.preview: don't show line numbers for preview commands (a652214)
  • picker.preview: pattern to detect binary files was incorrect (bbd1a08)
  • picker.preview: scratch buffer filetype. Fixes #595 (ece76b3)
  • picker.proc: correct offset for carriage returns. Fixes #599 (a01e0f5)
  • picker.qf: better quickfix item list. Fixes #562 (cb84540)
  • picker.select: allow main to be current. Fixes #497 (076259d)
  • picker.util: cleanup func for key-value store (frecency) (bd2da45)
  • picker: add alias for oldfiles (46554a6)
  • picker: add keymaps for preview scratch buffers (dc3f114)
  • picker: always stopinsert, even when picker is already closed. Should not be needed, but some plugins misbehave. See #579 (29becb0)
  • picker: better buffer edit. Fixes #593 (716492c)
  • picker: better normkey. Fixes #610 (540ecbd)
  • picker: changed inspect mapping to &lt;a-d&gt; since not all terminal differentiate between <a-i> and <tab> (8386540)
  • picker: correctly normalize path after fnamemodify (f351dcf)
  • picker: deepcopy before config merging. Fixes #554 (7865df0)
  • picker: don't throttle preview if it's the first item we're previewing (b785167)
  • picker: dont fast path matcher when finder items have scores (2ba5602)
  • picker: format: one too many spaces for default icon in results … (#594) (d7f727f)
  • picker: picker:items() should return filtered items, not finder items. Closes #481 (d67e093)
  • picker: potential issue with preview winhl being set on the main window (34208eb)
  • picker: preview / lsp / diagnostics positions were wrong; Should all be (1-0) indexed. Fixes #543 (40d08bd)
  • picker: properly handle opts.layout being a string. Fixes #636 (b80c9d2)
  • picker: select_and_prev should use list_up instead of list_down (#471) (b993be7)
  • picker: set correct cwd for git status picker (#505) (2cc7cf4)
  • picker: show all files in git status (#586) (43c312d)
  • scope: make sure to parse the ts tree. Fixes #521 (4c55f1c)
  • scratch: autowrite right buffer. Fixes #449. (#452) (8d2e26c)
  • scroll: don't animate for new changedtick. Fixes #384 (ac8b3cd)
  • scroll: don't animate when recording or executing macros (7dcdcb0)
  • statuscolumn: return "" when no signs and no numbers are needed. Closes #570. (c4980ef)
  • util: normkey (cd58a14)
  • win: clear syntax when setting filetype (c49f38c)
  • win: correctly deal with initial text containing newlines. Fixes #542 (825c106)
  • win: duplicate keymap should take mode into account. Closes #559 (097e68f)
  • win: exclude cursor from redraw. Fixes #613 (ad9b382)
  • win: fix relative=cursor again (5b1cd46)
  • win: relative=cursor. Closes #427. Closes #477 (743f8b3)
  • win: special handling of &lt;C-J&gt;. Closes #565. Closes #592 (5ac80f0)
  • win: win position with border offsets. Closes #413. Fixes #423 (ee08b1f)
  • words: added support for new name of the namespace used for lsp references. Fixes #555 (566f302)

Performance Improvements

  • notifier: skip processing during search. See #627 (cf5f56a)
  • picker.matcher: fast path when we already found a perfect match (6bbf50c)
  • picker.matcher: only use filename_bonus for items that have a file field (fd854ab)
  • picker.matcher: yield every 1ms to prevent ui locking in large repos (19979c8)
  • picker.util: cache path calculation (7117356)
  • picker: dont use prompt buffer callbacks (8293add)
  • picker: matcher optims (5295741)

2.12.0 (2025-01-05)

Features

  • debug: system & memory metrics useful for debugging (cba16bd)
  • input: disable completion engines in input (37038df)
  • scope: disable treesitter blocks by default (8ec6e6a)
  • statuscolumn: allow changing the marks hl group. Fixes #390 (8a6e5b9)
  • util: Snacks.util.ref (7383eda)
  • util: throttle (737980d)
  • win: Snacks.win:border_size (4cd0647)
  • win: Snacks.win:redraw (0711a82)
  • win: Snacks.win:scroll (a1da66e)
  • win: allow setting desc for window actions (402494b)
  • win: better dimension calculation for windows (use by upcoming layouts) (cc0b528)
  • win: top,right,bottom,left borders (320ecbc)

Bug Fixes

  • dashboard: hash dashboard terminal section caching key to support long commands (#381) (d312053)
  • debug: make debug.inpect work in fast events (b70edc2)
  • debug: make sure debug can be required in fast events (6cbdbb9)
  • indent: allow rendering over blank lines. Fixes #313 (766e671)
  • indent: better way to deal with breakindent. Fixes #329 (235427a)
  • indent: breakdinent (972c61c)
  • indent: correct calculation of partial indent when leftcol > 0 (6f3cbf8)
  • indent: do animate check in bufcall (c62e7a2)
  • indent: don't render scopes in closed folds. Fixes #352 (94ec568)
  • indent: off-by-one for indent guide hl group (551e644)
  • indent: repeat_linbebreak only works on Neovim >= 0.10. Fixes #353 (b93201b)
  • indent: simplify indent guide logic and never overwrite blanks. Fixes #334 (282be8b)
  • indent: typo for underline (66cce2f)
  • indent: use space instead of full blank for indent offset. See #313 (58081bc)
  • input: change buftype to prompt. Fixes #350 (2990bf0)
  • input: make sure to show input window with a higher zindex of the parent window (if float) (3123e6e)
  • input: refactor for win changes and ensure modified=false. Fixes #403. Fixes #402 (8930630)
  • input: use correct highlight group for input prompt (#328) (818da33)
  • lazygit: enable boolean values in config (#377) (ec34684)
  • notifier: open history window with correct style (#307) (d2b5680)
  • notifier: rename style notification.history -> notification_history (fd9ef30)
  • scope: allow treesitter scopes when treesitter highlighting is disabled. See #231 (58ae580)
  • scope: don't expand to invalid range. Fixes #339 (1244305)
  • scope: properly caluclate start indent when cursor=true for indent scopes. See #5068 (e63fa7b)
  • scope: use virtcol for calculating scopes at the cursor (6a36f32)
  • scroll: check for invalid window. Fixes #340 (b6032e8)
  • scroll: don't animate when leaving cmdline search with incsearch enabled. Fixes #331 (fc0a99b)
  • util: throttle now autonatically schedules when in fast event (9840331)
  • win: backdrop having bright cell at top right (#400) (373d0f9)
  • win: don't enter when focusable is false (ca233c7)
  • win: force-close any buffer that is not a file (dd50e53)
  • win: unset winblend when transparent (0617e28)
  • words: only check modes for is_enabled when needed (80dcb88)
  • zen: set zindex to 40, lower than hover (45). Closes #345 (05f4981)

2.11.0 (2024-12-15)

Features

  • indent: properly handle continuation indents. Closes #286 (f2bb7fa)
  • input: allow configuring position of prompt and icon (d0cb707)
  • notifier: notification history option (#297) (8f56e19)
  • scope: Scope:inner for indent based and treesitter scopes (8a8b1c9)
  • scope: added __tostring for debugging (94e0849)
  • scope: added opts.cursor to take cursor column into account for scope detection. (defaults to true). Closes #282 (54bc6ba)
  • scope: text objects now use treesitter scopes by default. See #231 (a953697)
  • statuscolumn: allow left/right to be a function. Closes #288 (cb42b95)
  • util: on_key handler (002d5eb)
  • win: win:line() (17494ad)

Bug Fixes

  • dashboard: telescope can't be run from a vim.schedule for some reason (dcc5338)
  • indent: opts.indent.blank now defaults to listchars.space. Closes #291 (31bc409)
  • indent: fixup (14d71c3)
  • indent: honor lead listchar (#303) (7db0cc9)
  • indent: honor listchars and list when blank is nil. Closes #296 (0e150f5)
  • indent: lower priorities of indent guides (7f66818)
  • input: check if parent win still exists. Fixes #287 (db768a5)
  • input: go back to insert mode if input was started from insert mode. Fixes #287 (5d00e6d)
  • input: missing padding if neither title nor icon positioned left (#292) (97542a7)
  • input: open input window with noautocmd=true set. Fixes #287 (26b7d4c)
  • scope: add indent to __eq (be2779e)
  • scope: better treesitter scope edge detection (b7355c1)
  • scroll: check mousescroll before spamming (3d67bda)
  • util: on_key compat with Neovim 0.9 (effa885)

2.10.0 (2024-12-13)

Features

  • animate: add done to animation object (ec73346)
  • lazygit: respect existing LG_CONFIG_FILE when setting config paths (#208) (ef114c0)
  • scroll: added spamming detection and disable animations when user is spamming keys :) (c58605f)
  • scroll: improve smooth scrolling when user is spamming keys (5532ba0)
  • zen: added on_open / on_close callbacks (5851de1)
  • zen: make zen/zoom mode work for floating windows. Closes #5028 (05bb957)

Bug Fixes

  • dashboard: set cursor to non-hidden actionable items. Fixes #273 (7c7b18f)
  • indent: fix rendering issues when only_scope is set for indent. Fixes #268 (370703d)
  • indent: only render adjusted top/bottom. See #268 (54294cb)
  • notifier: set modifiable=false for notifier history (12e68a3)
  • scope: change from/to selection to make more sense (e8dd394)
  • scope: possible loop? See #278 (ac6a748)
  • scratch: normalize filename (5200a8b)
  • scroll: don't animate scroll distance 1 (a986851)

2.9.0 (2024-12-12)

Features

  • animate: allow disabling all animations globally or per buffer (25c290d)
  • animate: allow toggling buffer-local / global animations with or without id (50912dc)
  • dashboard: add dashboard startuptime icon option (#214) (63506d5)
  • indent: animation styles out, up_down, up, down (0a9b013)
  • indent: don't animate indents when new scope overlaps with the previous one, taking white-space into account. See #264 (9b4a859)
  • indent: move animate settings top-level, since they impact both scope and chunk (baf8c18)
  • toggle: added zoom toggle (3367705)
  • toggle: return toggle after map (4f22016)
  • util: get var either from buffer or global (4243912)

Bug Fixes

  • indent: make sure cursor line is in scope for the out style. Fixes #264 (39c009f)
  • indent: when at edge of two blocks, prefer the one below. See #231 (2457d91)

2.8.0 (2024-12-11)

Features

  • animate: added animate plugin (971229e)
  • animate: added animation context to callbacks (1091280)
  • dim: added dim plugin (4dda551)
  • indent: added indent plugin (2c4021c)
  • indent: allow disabling indent guides. See #230 (4a4ad63)
  • indent: allow disabling scope highlighting (99207ee)
  • indent: optional rendering of scopes as chunks. Closes #230 (109a0d2)
  • input: added input snack (70902ee)
  • profiler: on_close can now be a function (48a5879)
  • scope: added scope plugin (63a279c)
  • scope: fill the range for treesitter scopes (38ed01b)
  • scope: text objects and jumping for scopes. Closes #231 (8faafb3)
  • scroll: added smooth scrolling plugin (38a5ccc)
  • scroll: allow disabling scroll globally or for some buffers (04f15c1)
  • scroll: use on_key to track mouse scrolling (26c3e49)
  • scroll: user virtual columns while scrolling (fefa6fd)
  • snacks: zen mode (c509ea5)
  • toggle: add which-key mappings when which-key loads (c9f494b)
  • toggle: add zen mode toggle (#243) (9454ba3)
  • toggle: added toggle for smooth scroll (aeec09c)
  • toggle: toggles for new plugins (bddae83)
  • util: added Snacks.util.on_module to execute a callback when a module loads (or immediately when already loaded) (f540b7b)
  • util: set_hl no longer sets default=true when not specified (d6309c6)
  • win: added actions to easily combine actions in keymaps (46362a5)
  • win: allow configuring initial text to display in the buffer (003ea8d)
  • win: allow customizing backdrop window (cdb495c)
  • win: col/row can be negative calculated on height/end of parent (bd49d2f)
  • words: added toggle for words (bd7cf03)
  • zen: zz when entering zen mode (b5cb90f)
  • zen: added zen plugin (afb89ea)
  • zen: added zoom indicator (8459e2a)

Bug Fixes

  • compat: fixes for Neovim < 0.10 (33fbb30)
  • dashboard: add filetype to terminal sections (#215) (9c68a54)
  • dashboard: don't open with startup option args (#222) (6b78172)
  • dashboard: override foldmethod (47ad2a7)
  • debug: schedule wrap print (3a107af)
  • dim: check if win still exist when animating. Closes #259 (69018d0)
  • health: health checks (72eba84)
  • indent: always align indents with shiftwidth (1de6c15)
  • indent: always render underline regardless of leftcol (4e96e69)
  • indent: always use scope hl to render underlines. Fixes #234 (8723945)
  • indent: better way of dealing with indents on blank lines. See #246 (c129683)
  • indent: expand scopes to inlude end_pos based on the end_pos scope. See #231 (897f801)
  • indent: gradually increase scope when identical to visual selection for text objects (bc7f96b)
  • indent: properly deal with empty lines when highlighting scopes. Fixes #246. Fixes #245 (d04cf1d)
  • indent: set max_size=1 for textobjects and jumps by default. See #231 (5f217bc)
  • indent: set shiftwidth to tabstop when 0 (782b6ee)
  • indent: underline. See #234 (51f9569)
  • indent: use correct config options (5352198)
  • init: enabled check (519a45b)
  • init: set input disabled by default. Fixes #227 (e9d0993)
  • input: health check. Fixes #239 (acf743f)
  • input: set current win before executing callback. Fixes #257 (c17c1b2)
  • input: set current win in vim.schedule so that it works properly from expr keymaps. Fixes #257 (8c2410c)
  • input: update window position in the context of the parent window to make sure position=cursor works as expected. Fixes #254 (6c27ff2)
  • input: various minor visual fixes (#252) (e01668c)
  • notifier: toggle show history. Fixes #197 (8b58b55)
  • scope: better edge detection for treesitter scopes (6b02a09)
  • scope: return nil when buffer is empty for indent scope (4aa378a)
  • scope: take edges into account for min_size (e2e6c86)
  • scope: typo for textobject (0324125)
  • scroll: better toggle (3dcaad8)
  • scroll: disable scroll by default for terminals (7b5a78a)
  • scroll: don't animate invalid windows (41ca13d)
  • scroll: don't bother setting cursor when scrolloff is larger than half of viewport. Fixes #240 (0ca9ca7)
  • scroll: move scrollbind check to M.check (7211ec0)
  • scroll: only animate the current window when scrollbind is active (c9880ce)
  • scroll: set cursor to correct position when target is reached. Fixes #236 (4209929)
  • scroll: use actual scrolling to perform the scroll to properly deal with folds etc. Fixes #236 (280a09e)
  • win: ensure win is set when relative=win (5d472b8)
  • words: incorrect enabled check. Fixes #247 (9c8f3d5)
  • zen: properly close existing zen window on toggle (14da56e)
  • zen: return after closing. Fixes #259 (b13eaf6)
  • zen: when Normal is transparent, show an opaque transparent backdrop. Fixes #235 (d93de7a)

Performance Improvements

  • animate: check for animation easing updates ouside the main loop and schedule an update when needed (03c0774)
  • input: lazy-load vim.ui.input (614df63)
  • util: redraw helpers (9fb88c6)

2.7.0 (2024-12-07)

Features

  • bigfile: disable matchparen, set foldmethod=manual, set conceallevel=0 (891648a)
  • dashbard: explude files from stdpath data/cache/state in recent files and projects (b99bc64)
  • dashboard: allow items to be hidden, but still create the keymaps etc (7a47eb7)
  • dashboard: allow terminal sections to have actions. Closes #189 (78f44f7)
  • dashboard: hide title if section has no items. Fixes #184 (d370be6)
  • dashboard: make buffer not listed (#191) (42d6277)
  • dashboard: when a section has a title, use that for action and key. If not put it in the section. Fixes #189 (045a17d)
  • debug: added Snacks.debug.run() to execute the buffer or selection with inlined print and errors (e1fe4f5)
  • gitbrowse: added line_count. See #186 (f03727c)
  • gitbrowse: opts.notify (a856952)
  • gitbrowse: url pattern can now also be a function (0a48c2e)
  • notifier: reverse notif history by default for show_history (5a50738)
  • scratch: opts.ft can now be a function and defaults to the ft of the current buffer or markdown (652303e)
  • scratch: change keymap to execute buffer/selection to &lt;cr&gt; (7db0ed4)
  • scratch: use Snacks.debug.run() to execute buffer/selection (32c46b4)
  • snacks: added Snacks.profiler (8088799)
  • snacks: added new scratch snack (1cec695)
  • toggle: toggles for the profiler (999ae07)
  • util: encode/decode a string to be used as a filename (e6f6397)
  • util: simple function to get an icon (7c29848)
  • win: added opts.fixbuf to configure fixed window buffers (1f74d1c)
  • win: backdrop can now be made opaque (681b9c9)
  • win: width/height can now be a function (964d7ae)

Bug Fixes

  • dashboard: calculate proper offset when item has no text (6e3b954)
  • dashboard: prevent possible duplicate recent files. Fixes #171 (93b254d)
  • dashboard: take hidden items into account when calculating padding. Fixes #194 (736ce44)
  • dashboard: take indent into account when calculating terminal width (cda695e)
  • dashboard: truncate file names when too long. Fixes #183 (4bdf7da)
  • debug: better way of getting visual selection. See #190 (af41cb0)
  • gitbrowse: opts.notify (2436557)
  • gitbrowse: removed debug (f894952)
  • gitbrowse: use line_start and line_end directly in patterns. Closes #186 (adf0433)
  • profiler: startup opts (85f5132)
  • scratch: always set filetype on the buffer. Fixes #179 (6db50cf)
  • scratch: floating window title/footer hl groups (6c25ab1)
  • scratch: make sure win.opts.keys exists. See #190 (50bd510)
  • scratch: sort keys. Fixes #193 (0df7a08)
  • scratch: weirdness with visual selection and inclusive/exclusive. See #190 (f955f08)
  • statuscolumn: add virtnum and relnum to cache key. See #198 (3647ca7)
  • statuscolumn: don't show signs on virtual ligns. See #198 (f5fb59c)
  • util: better support for nvim-web-devicons (ddaa2aa)
  • util: make sure to always return an icon (ca7188c)
  • win: allow resolving nil window option values. Fixes #179 (0043fa9)
  • win: don't force close modified buffers (d517b11)
  • win: update opts.wo for padding instead of vim.wo directly (446f502)
  • win: update window local options when the buffer changes (630d96c)

Performance Improvements

  • dashboard: properly cleanup autocmds (8e6d977)
  • statuscolumn: optimize caching (d972bc0)

2.6.0 (2024-11-29)

Features

  • config: allow overriding resolved options for a plugin. See #164 (d730a13)
  • config: make it easier to use examples in your config (6e3cb7e)
  • dashboard: allow passing win=0, buf=0 to use for the dashboard instead of creating a new window (417e07c)
  • dashboard: always render cache even when expired. Then refresh when needed. (59f8f0d)
  • gitbrowse: add Bitbucket URL patterns (#163) (53441c9)
  • gitbrowse: open commit when word is valid hash (#161) (59c8eb3)
  • health: check that snacks.nvim plugin spec is correctly setup (2c7b4b7)
  • notifier: added history opts.reverse (bebd7e7)
  • win: go back to the previous window, when closing a snacks window (51996df)

Bug Fixes

  • config: check correct var for single config result. Fixes #167 (45fd0ef)
  • dashboard: fixed mini.sessions.read. Fixes #144 (4e04b70)
  • dashboard: terminal commands get 5 seconds to complete to trigger caching (f83a7b0)
  • git: make git.get_root work for work-trees and cache git root checks. Closes #136. Fixes #115 (9462273)
  • init: use rawget when loading modules to prevent possible recursive loading with invalid module fields (d0794dc)
  • notifier: always show notifs directly when blocking (0c7f7c5)
  • notifier: gracefully handle E565 errors (0bbc9e7)
  • statuscolumn: bad copy/paste!! Fixes #152 (7564a30)
  • statuscolumn: never error (in case of E565 for example). Fixes #150 (cf84008)
  • win: handle E565 errors on close (0b02044)

Performance Improvements

  • statuscolumn: some small optims (985be4a)

2.5.0 (2024-11-22)

Features

  • dashboard: added Snacks.dashboard.update(). Closes #121 (c770ebe)
  • debug: profile title (0177079)
  • notifier: show indicator when notif has more lines. Closes #112 (cf72c06)
  • terminal: added Snacks.terminal.get(). Closes #122 (7f63d4f)
  • util: get hl color (b0da066)
  • util: set_hl managed (9642695)

Bug Fixes

  • dashboard: vim.pesc for auto keys. Fixes #134 (aebffe5)
  • dashboard: align should always set width even if no alignment is needed. Fixes #137 (54d521c)
  • dashboard: better git check for advanced example. See #126 (b4a293a)
  • dashboard: open fullscreen on relaunch (853240b)
  • dashboard: randomseed needs argument on stable (c359164)
  • debug: include main in caller (33d31af)
  • git: get_root should work for non file buffers (723d8ea)
  • notifier: hide existing nofif if higher prio notif arrives and no free space for lower notif (7a061de)
  • quickfile: don't load when bigfile detected. Fixes #116 (978424c)
  • sessions: change persisted.nvim load session command (#118) (26bec4b)
  • terminal: hide on q instead of close (30a0721)

2.4.0 (2024-11-19)

Features

  • dashboard: hide tabline and statusline when loading during startup (75dc74c)
  • dashboard: when an item is wider than pane width and only one pane, then center it. See #108 (c15953e)
  • gitbrowse: open also visual selection range (#89) (c29c0d4)
  • win: detect alien buffers opening in managed windows and open them somewhere else. Fixes #110 (9c0d2e2)

Bug Fixes

  • dashboard: always hide cursor (68fcc25)
  • dashboard: check session managers in order (1acea8b)
  • dashboard: fix race condition when sending data while closing (4188446)
  • dashboard: minimum one pane even when it doesn't fit the screen. Fixes #104 (be8feef)
  • dashboard: only check for piped stdin when in TUI. Ignore GUIs (3311d75)
  • dashboard: remove weird preset.keys function override. Just copy defaults if you want to change them (0b9e09c)

2.3.0 (2024-11-18)

Features

  • added dashboard health checks (deb00d0)
  • dashboard: added support for mini.sessions (c8e209e)
  • dashboard: allow opts.preset.keys to be a function with default keymaps as arg (b7775ec)
  • dashboard: automatically detect streaming commands and don't cache those. tty-clock, cmatrix galore. Fixes #100 (082beb5)
  • notifier: timeout=0 keeps the notif visible till manually hidden. Closes #102 (0cf22a8)

Bug Fixes

  • dashboard: check uis for headless and stdin_tty. Fixes #97. Fixes #98 (4ff08f1)
  • dashboard: debug output (c0129da)
  • dashboard: disable vim.wo.colorcolumn (#101) (43b4abb)
  • dashboard: notify on errors. Fixes #99 (2ae4108)
  • debug: MYVIMRC is not always set (735f4d8)
  • notifier: also handle timeout = false / timeout = true. See #102 (99f1f49)

2.2.0 (2024-11-18)

Features

  • dashboard: added new dashboard snack (#77) (d540fa6)
  • debug: Snacks.debug.trace and Snacks.debug.stats for hierarchical traces (like lazy profile) (b593598)
  • notifier: global keep when in cmdline (73b1e20)

2.1.0 (2024-11-16)

Features

  • notifier: allow specifying a minimal level to show notifications. See #82 (ec9cfb3)
  • terminal: when terminal terminates too quickly, don't close the window and show an error message. See #80 (313954e)

Bug Fixes

2.0.0 (2024-11-14)

⚠ BREAKING CHANGES

  • config: plugins are no longer enabled by default. Pass any options, or set enabled = true.

Features

  • config: plugins are no longer enabled by default. Pass any options, or set enabled = true. (797708b)
  • health: added health checks to plugins (1c4c748)
  • terminal: added Snacks.terminal.colorize() to replace ansi codes by colors (519b684)

Bug Fixes

  • lazygit: not needed to use deprecated fallback for set_hl (14f076e)
  • notifier: disable colorcolumn by default (#66) (7627b81)
  • statuscolumn: ensure Snacks exists when loading before plugin loaded (97e0e1e)
  • terminal: properly deal with args in vim.o.shell. Fixes #69 (2ccb70f)
  • win: take border into account for window position (#64) (f0e47fd)

1.2.0 (2024-11-11)

Features

  • bufdelete: added wipe option. Closes #38 (5914cb1)
  • lazygit: allow overriding extra lazygit config options (d2f4f19)
  • notifier: added refresh option configurable (df8c9d7)
  • notifier: added backward compatibility for nvim-notify's replace option (9b9777e)
  • words: add fold_open and set_jump_point config options (#31) (5dc749b)

Bug Fixes

  • added compatibility with Neovim >= 0.9.4 (4f99818)
  • bufdelete: opts.wipe. See #38 (0efbb93)
  • notifier: take title/footer into account to determine notification width. Fixes #54 (09a6f17)
  • notifier: update layout on vim resize (7f9f691)
  • terminal: gf properly opens file (#45) (340cc27)
  • terminal: pass a list of strings to termopen to prevent splitting. Fixes #59 (458a84b)

Performance Improvements

  • notifier: only force redraw for new windows and for updated while search is not active. Fixes #52 (da86b1d)
  • win: don't try highlighting snacks internal filetypes (eb8ab37)
  • win: prevent treesitter and syntax attaching to scratch buffers (cc80f6d)

1.1.0 (2024-11-08)

Features

  • bufdelete: optional filter and shortcuts to delete all and other buffers. Closes #11 (71a2346)
  • debug: simple log function to quickly log something to a debug.log file (fc2a8e7)
  • docs: docs for highlight groups (#13) (964cd6a)
  • gitbrowse: choose to open repo, branch or file. Closes #10. Closes #17 (92da87c)
  • notifier: added history to notifier. Closes #14 (65d8c8f)
  • notifier: added option to show notifs top-down or bottom-up. Closes #9 (080e0d4)
  • notifier: allow overriding hl groups per notification (8bcb2bc)
  • notifier: allow setting dynamic options (36e9f45)
  • win: added default hl groups for windows (8c0f10b)
  • win: allow setting ft just for highlighting without actually changing the filetype (cad236f)
  • win: disable winblend when colorscheme is transparent. Fixes #26 (12077bc)
  • win: equalize splits (e982aab)
  • win: util methods to handle buffer text (d3efb92)
  • win: win:focus() (476fb56)
  • words: jump optionally shows notification with reference count (#23) (6a3f865)
  • words: configurable mode to show references. Defaults to n, i, c. Closes #18 (d079fbf)

Bug Fixes

  • config: deepcopy config where needed (6c76f91)
  • config: fix reading config during setup. Fixes #2 (0d91a4e)
  • notifier: re-apply winhl since level might have changed with a replace (b8cc93e)
  • notifier: set default conceallevel=2 (662795c)
  • notifier: try to keep layout when replacing notifs (9bdb24e)
  • terminal: dont overwrite user opts (0b08d28)
  • terminal: user options (334895c)
  • win: better winfixheight and winfixwidth for splits (8be14c6)
  • win: disable sidescroloff in minimal style (107d10b)
  • win: dont center float when relative="cursor" (4991e34)
  • win: properly resolve user styles as last (cc5ee19)
  • win: set border to none for backdrop windows (#19) (f5602e6)
  • win: simpler way to add buffer padding (f59237f)
  • win: update win/buf opts when needed (5fd9c42)
  • words: disable notify_jump by default (9576081)

Performance Improvements

  • notifier: index queue by id (5df4394)
  • notifier: optimize layout code (8512896)
  • notifier: skip processing queue when free space is smaller than min height (08190a5)
  • win: skip events when setting buf/win options. Trigger FileType on BufEnter only if needed (61496a3)

1.0.0 (2024-11-06)

Features

  • added debug (6cb43f6)
  • added git (f0a9991)
  • added gitbrowse (a638d8b)
  • added lazygit (fc32619)
  • added notifier (44011dd)
  • added notify (f4e0130)
  • added toggle (28c3029)
  • better buffer/window vars for terminal and float (1abce78)
  • bigfile (8d62b28)
  • bigfile: show message when bigfile was detected (fdc0d3d)
  • bufdelete (cc5353f)
  • config & setup (c98c4c0)
  • config: get config for snack with defaults and custom opts (b3d08be)
  • debug: added simple profile function (e1f736d)
  • docs: better handling of overloads (038b283)
  • ensure Snacks global is available when not using setup (f0458ba)
  • float (d106107)
  • float: added support for splits (977a3d3)
  • float: better key mappings (a171a81)
  • initial commit (63a24f6)
  • notifier: add 1 cell left/right padding and make wrapping work properly (efc9699)
  • notifier: added global keep config option (f32d82d)
  • notifier: added minimal style (b29a6d5)
  • notifier: allow closing notifs with q (97acbbb)
  • notifier: allow config of default filetype (8a96888)
  • notifier: enable wrapping by default (d02aa2f)
  • notifier: keep notif open when it's the current window (1e95800)
  • quickfile (d0ce645)
  • rename (fa33688)
  • statuscolumn (99b1700)
  • terminal (e6cc7c9)
  • terminal: allow to override the default terminal implementation (like toggleterm) (11c9ee8)
  • terminal: better defaults and winbar (7ceeb47)
  • terminal: better double esc to go to normal mode (a4af729)
  • win: better api to deal with sizes (ac1a50c)
  • win: custom views (12d6f86)
  • words (73445af)

Bug Fixes

  • config: don't change defaults in merge (6e825f5)
  • config: merging of possible nil values (f5bbb44)
  • debug: exclude vimrc from callers (8845a6a)
  • float: don't use backdrop for splits (5eb64c5)
  • float: only set default filetype if no ft is set (66b2525)
  • float: proper closing of backdrop (a528e77)
  • notifier: modifiable (fd57c24)
  • notifier: modifiable = false (9ef9e69)
  • notifier: show notifier errors with nvim_err_writeln (e8061bc)
  • notifier: sorting (d9a1f23)
  • simplify setup (787b53e)
  • win: backdrop (71dd912)
  • win: better implementation of window styles (previously views) (6681097)
  • win: dont error when augroup is already deleted (8c43597)
  • win: dont update win opt noautocmd (a06e3ed)
  • win: no need to set EndOfBuffer winhl (7a7f221)
  • win: use syntax as fallback for treesitter (f3b69a6)

Performance Improvements

  • win: set options with eventignore and handle ft manually (80d9a89)