Helix 25.07

25.07

As always, a big thank you to all of the contributors! This release saw changes from 195 contributors.

Breaking changes:

  • The parsing of the command line has been rewritten and now supports flags and expansions (#12527, #13018, 9574e55, 2d4c2a1, #13192, 67f1fe2, #13466, #13467, #13840)
    • Quoting and spaces are now handled differently. This can break existing keymaps which use typable commands, in particular :sh, :set-option or :toggle-option.
    • The :rsort command has been removed. Use the reverse flag instead: :sort --reverse

Features:

Commands:

  • Add copy_between_registers for interactive copying between two registers (066e938)
  • Add extend_to_file_{start,end}, select-mode variants of goto_file_{start,end} (#11767)
  • Add :! alias for :sh and :| for :pipe (#13263)
  • Add goto_column and extend_to_column (#13440)
  • Add an --insensitive/-i flag to the :sort command (#13560)
  • Add rotate_selections_first and rotate_selections_last (#13615)
  • Add a --no-format flag for all :write commands (2f56091)
  • Add a --skip-visible flag for :buffer-close-others and :buffer-close-others! (#5393)

Usability improvements:

  • Replace current file using A-ret in pickers rather than loading it in the background (#12605)
  • Set multiple selections when passing a file with multiple locations to hx (#12192)
  • Add path completion for multiple cursors (#12550, c9dc940)
  • Truncate long prompt lines with "…" (#12036, 9d6ea77, 0b9701e, d3fb8fc)
  • Allow specifying languages in :lsp-stop and :lsp-restart (#12578, 3d7e273)
  • Add m (nearest matching pair) to infobox popups for md and mr (#12650)
  • Add a hint message in the statusline when using :sort on a single selection (#12585)
  • Avoid wrapping around in goto_{next,prev}_diag (#12704)
  • Support responses from multiple language servers for LSP goto-definition (and declaration, type definition and implementation) and goto-references (f7394d5, 1a821ac, d285a8a)
  • Show formatter errors in :format (47f84d0)
  • Show typable command docs in keybinding infobox popups when the command takes no arguments (e9c16b7)
  • Add per-command titles to register selection infobox popups for select_register, insert_register and copy_between_registers (e0da129)
  • Add container name column to the LSP symbol picker (#12930)
  • Add a theme key for highlighting directories in completions and picker items (#12855, 7bebe0a)
  • Add editor.trim-final-newlines and editor.trim-trailing-whitespace config options (aa20eb8)
  • Warn when the configured theme is unusable because true-color is not available (#13058)
  • Allow configuring [workspace-]diagnostic statusline element severities (#13288, b0528bb)
  • Improve completion for shell commands (#12883, 532f241)
  • Show the primary selection index in the selections statusline element when there are multiple selections (#12326)
  • Use configured language server names when possible in --health output (#13573)
  • Add a statusline element for indentation style (#13632)
  • Set the working directory of language server commands to the workspace root (#13691)
  • Avoid jumpiness in the picker preview for languages with non-default tab widths (#13761)
  • Add a config option for limiting LSP inlay hint length (#13742)
  • Improve heuristics used in the diff gutter (#13722)
  • Allow moving a file with :move when its old path does not exist (#13748)
  • Allow moving a file into a directory with :move (#13922)
  • Show human-readable file sizes in the statusline message for file writes (#13627)
  • Add diagnostic source to the diagnosics pickers (#13758)
  • Show all active scopes under the cursor in :tree-sitter-highlight-name (4a85171)
  • Auto-close the LSP code-actions popup (#13832)
  • Add a configuration option for controlling atomic writes to disk (#13656)

Fixes:

  • Fix panic from using search_selection_detect_word_boundaries (*) at the end of the file (#12611)
  • Discard placeholder text for zero tabstop ${0:placeholder} (#12647)
  • Fix panic in goto_file (gf) on file names with non-ASCII characters (#12673)
  • Only accept unmodified characters in goto_word (gw) (f5f9f49, 0364521)
  • Skip recording keys pressed by macros while recording a macro (#12733)
  • Deny unknown fields in editor.smart-tab config (28047fe)
  • Fix soft-wrap word boundary detection for Unicode combining accent characters (#12483)
  • Fix clearing of infobox popups in select_register and insert_register commands (e882a75)
  • Fix handling of stderr of DAP child processes (d0d1693)
  • Cancel all pending requests when a DAP session terminates (26db541)
  • Properly discard out-of-date diagnostics (313a647)
  • Fix display of multiple language servers in hx --health (#12841)
  • Respect editor.default-yank-register in :yank-joined (#12890)
  • Escape percent character when pasting the history register into the picker (#12886)
  • Render rulers before the cursor (2d3b75a)
  • Avoid inserting final newlines in empty files (67879a1)
  • Gracefully handle partial failure in multi-language-server requests (#13156, 14cab4b)
  • Improve LSP progress message display in the statusline (#13180)
  • Fix behavior of <esc> removing added indentation in documents with CRLF line endings (702a961) …
View original

Upgraded? How did it go?

Discussion