Releases: folke/snacks.nvim
Releases · folke/snacks.nvim
v2.14.0
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 totrue
to support patterns likefile:line:col
orfile:line
. Closes #517. Closes #496. Closes #651 (5e00b0a) - picker: added
args
option forfiles
andgrep
. 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)
v2.13.0
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
<tab>
key (0892db4) - picker.grep: added
ft
(rg'stype
) andregex
(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<c-i>
. 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
andfiles
. 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 o...
v2.12.0
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)
v2.11.0
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 tolistchars.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)
v2.10.0
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)
v2.9.0
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
v2.8.0
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 fromexpr
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](6b02a09e5e81e4e38a42e0fcc2d7f...
v2.7.0
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
<cr>
(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
v2.6.0
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)
v2.5.0
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)