24.03
As always, a big thank you to all of the contributors! This release saw changes from 125 contributors.
Breaking changes:
suffixfile-types in thefile-typeskey in language configuration have been removed (#8006)- The
file-typeskey in language configuration no longer matches full filenames without a glob pattern (#8006)
Features:
- Open URLs with the
goto_filecommand (#5820) - Support drawing a border around popups and menus (#4313, #9508)
- Track long lived diagnostic sources like Clippy or
rustc(#6447, #9280)- This improves the handling of diagnostics from sources that only update the diagnostic positions on save.
- Add support for LSP
window/showDocumentrequests (#8865) - Refactor ad-hoc hooks to use a new generic event system (#8021, #9668, #9660)
- This improves the behavior of autocompletions. For example navigating in insert mode no longer automatically triggers completions.
- Allow using globs in the language configuration
file-typeskey (#8006) - Allow specifying required roots for situational LSP activation (#8696)
- Extend selections using mouse clicks in select mode (#5436)
- Toggle block comments (#4718, #9894)
- Support LSP diagnostic tags (#9780)
- Add a
file-absolute-pathstatusline element (#4535) - Cross injection layers in tree-sitter motions (
A-p/A-o/A-i/A-n) (#5176) - Add a Amp-editor-like jumping command (#8875)
Commands:
:move- move buffers with LSP support (#8584)- Also see #8949 which made path changes conform to the LSP spec and fixed the behavior of this command.
page_cursor_up,page_cursor_down,page_cursor_half_up,page_cursor_half_down- commands for scrolling the cursor and page together (#8015):yank-diagnostic- yank the diagnostic(s) under the primary cursor (#9640)select_line_above/select_line_below- extend or shrink a selection based on the direction and anchor (#9080)
Usability improvements:
- Make
rootskey of[[language]]entries inlanguages.tomlconfiguration optional (#8803) - Exit select mode in commands that modify the buffer (#8689)
- Use crossterm cursor when out of focus (#6858, #8934)
- Join empty lines with only one space in
join_selections(#8989) - Introduce a hybrid tree-sitter and contextual indentation heuristic (#8307)
- Allow configuring the indentation heuristic (#8307)
- Check for LSP rename support before showing rename prompt (#9277)
- Normalize
S-<lower-ascii>keymaps to uppercase ascii (#9213) - Add formatter status to
--healthoutput (#7986) - Change path normalization strategy to not resolve symlinks (#9330)
- Select subtree within injections in
:tree-sitter-subtree(#9309) - Use tilde expansion and normalization for
$HELIX_RUNTIMEpaths (1bc7aac) - Improve failure message for LSP goto references (#9382)
- Use injection syntax trees for bracket matching (5e0b3cc)
- Respect injections in
:tree-sitter-highlight-name(8b6565c) - Respect injections in
move_parent_node_end(035b8ea) - Use
gixpipeline filter instead of manual CRLF implementation (#9503) - Follow Neovim's truecolor detection (#9577)
- Reload language configuration with
:reload, SIGHUP (#9415) - Allow numbers as bindings (#8471, #9887)
- Respect undercurl config when terminfo is not available (#9897)
- Ignore
.pijul,.hg,.jjin addition to.gitin file pickers configured to show hidden files (#9935) - Add completion for registers to
:clear-registerand:yank-diagnostic(#9936) - Repeat last motion for goto next/prev diagnostic (#9966)
- Allow configuring a character to use when rendering narrow no-breaking space (#9604)
- Switch to a streaming regex engine (regex-cursor crate) to significantly speed up regex-based commands and features (#9422, #9756, #9891)
Fixes:
- Swap
*and+registers (#8703, #8708) - Use terminfo to reset terminal cursor style (#8591)
- Fix precedence of
@aligncaptures in indentat computation (#8659) - Only render the preview if a Picker has a preview function (#8667)
- Fix the precedence of
ui.virtual.whitespace(#8750, #8879) - Fix crash in
:indent-style(#9087) - Fix
didSavetext inclusion when sync capability is a kind variant (#9101) - Update the history of newly focused views (#9271)
- Initialize diagnostics when opening a document (#8873)
- Sync views when applying edits to unfocused views (#9173)
- This fixes crashes that could occur from LSP workspace edits or
:write-all.
- This fixes crashes that could occur from LSP workspace edits or
- Treat non-numeric
+args passed in the CLI args as filenames (#9333) - Fix crash when using
mmon an empty plaintext file (2fb7e50) - Ignore empty tree-sitter nodes in match bracket (445f7a2)
- Exit a language server if it sends a message with invalid JSON (#9332)
- Handle failures to enable bracketed paste (#9353)
- Gate all captures in a pattern behind
#is-not? localpredicates (#9390) - Make path changes LSP spec conformant (#8949)
- Use range positions to determine
insert_newlinemotion (#9448) - Fix division by zero when prompt completion area is too small (#9524)
- Add changes to history in clipboard replacement typable commands (#9625)
- Fix a crash in DAP with an unspecified
linein breakpoints (#9632) - Fix space handling for filenames in bash completion (#9702, #9708)
- Key diagnostics off of paths instead of LSP URIs (#7367)
- Fix panic when using
join_selections_space(#9783) - Fix panic when using
surround_replace,surround_delete(#9796) - Fix panic in
surround_replace,surround_deletewith nested surrounds and multiple cursors (#9815) - Fix panic in
select_textobject_around(#9832) - Don't stop reloading documents when reloading fails in
:reload-all(#9870) - Prevent
shell_keep_pipefrom stopping on nonzero exit status codes (#9817)
Themes:
- Add
gruber-dark(#8598) - Update
everblush(#8705) - Update
papercolor(#8718, #8827) - Add
polmandres(#8759) - Add
starlight(#8787) - Update
naysayer(#8838) - Add modus operandi themes (#8728, #9912)
- Update
rose_pine(#8946) - Update
darcula(#8738, #9002, #9449, #9588) - Add modus vivendi themes (#8894, #9912)
- Add
horizon-dark(#9008, #9493) - Update
noctis(#9123) - Update
nord(#9135) - Update monokai pro themes (#9148)
- Update tokyonight themes (#9099, #9724, #9789) …