23.10
A big shout out to all the contributors! We had 118 contributors in this release.
Breaking changes:
- Support multiple language servers per language (#2507)
- This is a breaking change to language configuration
Features:
- Support multiple language servers per language (#2507, #7082, #7286, #8374)
- Add a statusline element for the selected register (#7222)
- Add
%,#,.,*and+special registers (#6985) - Add initial support for LSP DidChangeWatchedFiles notifications (#7665)
- Search buffer contents in
global_search(#5652) - Add a "smart tab" command that intelligently jumps the cursor on tab (#4443)
- Add a statusline element for whether a file is read-only (#7222, #7875)
- Syntax highlight regex prompts (#7738)
- Allow defining alignment in indent queries (#5355)
- Show visual feedback in
surround_replace(#7588) - Switch to Nucleo for fuzzy matching (#7814, #8148, #8192, #8194)
- Insert a trailing newline on write (#8157)
- Add a
-w/--working-dirCLI flag for specifying a working directory on startup (#8223, #8498, #8520) - Accept a
+NCLI argument to set the first file's line number (#8521) - Accept Helix-specific ignore files in
.helix/ignoreand~/.config/helix/ignore(#8099)
Commands:
merge_selections(A-minus) - merge all selections into one selection that covers all ranges (#7053)move_prev_long_word_endandextend_prev_long_word_end- move/extend to the end of the previous WORD (#6905)reverse_selection_contents- swaps the values of each selection so they are reversed (#7329)- Add
:rland:rlaaliases for:reloadand:reload-all(#7158) yank_joined- join the selections and yank to the selected register (#7195):write-all!(:wa!) - forcibly write all buffers to disk and create any necessary subdirectories (#7577):redraw- clear re-render the UI (#6949):tree-sitter-highlight-name- show the theme scope name of the highlight under the cursor (#8170)
Usability improvements:
- Allow cycling option values at runtime (#4411, #7240, #7877)
- Exit gracefully on termination signals (#7236)
- Add plaintext matching fallback to tree-sitter pair matching (#4288)
- Persist register selection in pending keymaps (0e08349)
- Propagate the count and register to command palette commands (b394997)
- Auto indent on
insert_at_line_start(#5837) - Add a config option to control whether LSP completions are automatically inserted on preview (#7189)
- Add a config option for default line endings (#5621, #7357)
- Allow ANSI colors in themes (#5119)
- Match pairs that don't form a standalone tree-sitter node (#7242)
- Allow indent sizes of up to 16 columns (#7429)
- Improve performance of mapping positions through changes (#7408, 8d39a81, #7471)
- Mark buffers created from stdin as modified (#7431)
- Forcibly shut down uninitialized language servers (#7449)
- Add filename completer for shell prompts (#7569)
- Allow binding F13-F24 (#7672)
- Resolve LSP code actions (#7677, #8421)
- Save an undo checkpoint before accepting completions (#7747)
- Include gitignored files in debugger completions (#7936)
- Make editor remember the last search register (#5244)
- Open directories with
goto_file(#7909) - Use relative path to open buffer in
goto_file(gf) (#7965) - Support
defaultcolor in themes (#8083, #8114) - Toggle between relative and absolute line numbers when the terminal loses focus (#7955)
- Lower default idle-timeout to 250ms (060e73a)
- Allow theming diff gutters separately from other diff colors (#8343)
- Style bold/italic/strikethrough in markdown doc popups (#8385)
- Maintain the cursor position and view when splitting with
:hsplit/:vsplit(#8109) - Accept
-in macros outside of</>(#8475) - Show all language servers for each language in
--health(#7315) - Don't break on hyphens in
:reflow(#8569)
Fixes:
- Update diagnostics correctly on language server exit (#7111)
- Fix off-by-one in
select_references_to_symbol_under_cursor(#7132) - Extend selection with repeat-last-motion only if the original motion extended the selection (#7159)
- Fix undefined behavior in the diff gutter (#7227)
- Check that tab width is non-zero (#7178)
- Fix styles being overwritten in table rows with multiple cells (#7281)
- Add file for
--logCLI arg in help text (#7307) - Fix underflow when repeating a completion that has a negative shift position (#7322)
- Prefer longer matches in
select_next_siblingandselect_prev_sibling(#7332) - Preview scratch buffers in the jumplist picker (#7331)
- Fix chunking by bytes in tree-sitter parsing (#7417)
- Discard LSP publishDiagnostic from uninitialized servers (#7467)
- Use negotiated position encoding for LSP workspace edits (#7469)
- Fix error message for unknown gutter types in config (#7534)
- Fix
:log-openwhen--logCLI arg is specified (#7573, #7585) - Fix debouncing of LSP messages to fix the last message sticking around (#7538, #8023)
- Fix crash when the current working directory is deleted (#7185)
- Fix piping to Helix on macOS (#5468)
- Fix crash when parsing overlapping injections (#7621)
- Clear the statusline when the prompt is visible (#7646)
- Fix range formatting error message typo (#7823)
- Skip rendering gutters when gutter width exceeds view width (#7821)
- Center the picker preview using visual lines (#7837)
- Align view correctly for background buffers opened with
A-ret(#7691) - Fix cursor resetting to block when quitting via a keybind (#7931)
- Remove path completions for the
:newcommand (#8010) - Use binary path resolved by
whichfor formatter commands (#8064) - Handle crossterm's
hiddenmodifier (#8120) - Clear completion when switching between windows with the mouse (#8118)
- Eagerly remove the last picker (
<space>') when the picker has many items (#8127) - Fix find commands for buffers with non-LF line-endings (#8111)
- Detect the tmux clipboard provider on macOS (#8182)
- Fix syntax highlighting in dynamic picker preview pane (#8206)
- Recognize HTML code tags with attributes as code in markdown previews (#8397)
- Fix multicursor snippet placeholder directions (#8423)
- Only show diagnostic highlights when diagnostics are enabled for a language server (#8551)
Themes:
- Improve the selection color in
ferra(#7138) …