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 often. Fixes #613. Closes #627 (d212e3c)
- input: bring back
<c-w>
. 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
<c-s>
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
<c-c>
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 ofvim.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
<a-d>
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
<C-J>
. 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)