Helix 23.10

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-dir CLI flag for specifying a working directory on startup (#8223, #8498, #8520)
  • Accept a +N CLI argument to set the first file's line number (#8521)
  • Accept Helix-specific ignore files in .helix/ignore and ~/.config/helix/ignore (#8099)

Commands:

  • merge_selections (A-minus) - merge all selections into one selection that covers all ranges (#7053)
  • move_prev_long_word_end and extend_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 :rl and :rla aliases for :reload and :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 default color 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 --log CLI arg in help text (#7307)
  • Fix underflow when repeating a completion that has a negative shift position (#7322)
  • Prefer longer matches in select_next_sibling and select_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-open when --log CLI 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 :new command (#8010)
  • Use binary path resolved by which for formatter commands (#8064)
  • Handle crossterm's hidden modifier (#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) …
View original

Upgraded? How did it go?

Discussion