# Helix: what changed from 24 to 25 - Product: Helix (https://whatsnew.fyi/product/helix) - Vendor: Helix - Range: changelog entries numbered after 24.07 up to and including 25.07.1, stable releases only - Entries below: 4 releases (newest first) - Resolved: 24 is 24.07 and 25 is 25.07.1, the newest stable release of each major we track - Carrying security changes: 0 · CVEs mentioned: 0 · Mentioning breaking changes: 2 · Removing or deprecating something: 1 - Page: https://whatsnew.fyi/product/helix/compare/24...25 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (63 changes, grouped by kind) ### Added #### 25.07 (2025-07-15) - Add a directory picker for exploring directories - Allow cycling through multiple LSP hover responses with A-n and A-p - Add support for incomplete LSP completions - Add support for EditorConfig - Add support for LSP document colors - Support expansions in external formatter arguments - Add support for the DAP startDebugging reverse request - Add copy_between_registers command for interactive copying between registers - Add extend_to_file_start and extend_to_file_end select-mode commands - Add :! alias for :sh and :| alias for :pipe - Add goto_column and extend_to_column commands - Add --insensitive and -i flags to the :sort command - Add rotate_selections_first and rotate_selections_last commands - Add --no-format flag for all :write commands #### 25.01.1 (2025-01-19) - Add CodeQL language support - Add Gren language support #### 25.01 (2025-01-03) - Add `editor.lsp.display-progress-messages` key to enable progress messages - Refactor Pickers to use a table layout and allow filtering by column - Reimplement `global_search` to allow changing the query dynamically - Add an alternative inline display for LSP diagnostics - Support defining keybindings as macros - Continue line comments in `o`/`O` and on `` in insert mode - Allow configuring and switching clipboard providers at runtime - Add support for path completion - Support bindings with the Super (Cmd/Win/Meta) modifier - Support rendering and jumping between tabstops in snippet completions - Allow theming directory completions - Add commands to move within snake_case or camelCase words - Add `search_selection_detect_word_boundaries` command which takes the `*` key in normal and select mode - Add `:edit` and `:e` aliases for `:open` - Add `:mv` alias for `:move` ### Changed #### 25.07.1 (2025-07-18) - Lower the GLIBC requirements of the release artifacts published to GitHub #### 25.07 (2025-07-15) - Rewrite command line parsing to support flags and expansions - Change quoting and space handling in command line parsing, which may break existing keymaps using typable commands - Switch syntax highlighter to the tree-house crate - Highlight locals like parameter highlights even when the definition is not in view - Inject markdown syntax highlighting into rust doc comments #### 25.01.1 (2025-01-19) - Run external formatters from the document's directory - Update onelight theme - Add cursorline color to iceberg themes - Update special, ui.text.directory and ui.virtual.wrap in dark_plus theme - Highlight : in Rust as a delimiter - Update Swift highlights - Highlight JSX attributes as @attribute - Improve markdown heading highlights - Add comment tokens configuration for JSONC - --version now prints a leading zero for single-digit months #### 25.01 (2025-01-03) - The `editor.lsp.display-messages` key now controls messages sent with the LSP `window/showMessage` notification rather than progress messages - Trim trailing newline from pipe command outputs when the input doesn't have a trailing newline - Return document display name instead of absolute path from the `%` special register - Track view position on a per-view instead of per-document basis - Improve scrolloff calculation to leave a gap in the middle - Add statusline errors when nothing is selected with `s`, `K`, `A-K` ### Fixed #### 25.07 (2025-07-15) - Fix multiple syntax highlighter bugs #### 25.01.1 (2025-01-19) - Fix blank buffer picker preview on doc with no views - Fix join_selections behavior on tabs - Fix recognition for color LSP completion hex codes for some language servers - Fix offsets to selections updated by open_below/open_above in multi-cursor scenarios - Fix offsets to selections updated by insert_newline when trimming whitespace in multi-cursor scenarios - Fix panic in path completion from resolving variables like ${HOME:-$HOME} - Prevent line comment continuation when using change_selection on a line above a comment - Fix Teal LSP name ### Removed #### 25.07 (2025-07-15) - Remove the :rsort command in favor of the :sort --reverse flag ## Release notes ### 25.07.1 - Date: 2025-07-18 - Version: 25.07.1 - Original notes: https://github.com/helix-editor/helix/releases/tag/25.07.1 - Permalink: https://whatsnew.fyi/product/helix/releases/25.07.1 - **changed** — Lower the GLIBC requirements of the release artifacts published to GitHub This is a patch release which lowers the GLIBC requirements of the release artifacts published to GitHub ([#13983](https://github.com/helix-editor/helix/pull/13983)) ### 25.07 - Date: 2025-07-15 - Version: 25.07 - Original notes: https://github.com/helix-editor/helix/releases/tag/25.07 - Permalink: https://whatsnew.fyi/product/helix/releases/25.07 - **changed** — Rewrite command line parsing to support flags and expansions - **changed** — Change quoting and space handling in command line parsing, which may break existing keymaps using typable commands - **removed** — Remove the :rsort command in favor of the :sort --reverse flag - **added** — Add a directory picker for exploring directories - **added** — Allow cycling through multiple LSP hover responses with A-n and A-p - **added** — Add support for incomplete LSP completions - **added** — Add support for EditorConfig - **added** — Add support for LSP document colors - **added** — Support expansions in external formatter arguments - **changed** — Switch syntax highlighter to the tree-house crate - **fixed** — Fix multiple syntax highlighter bugs - **changed** — Highlight locals like parameter highlights even when the definition is not in view - **changed** — Inject markdown syntax highlighting into rust doc comments - **added** — Add support for the DAP startDebugging reverse request - **added** — Add copy_between_registers command for interactive copying between registers - **added** — Add extend_to_file_start and extend_to_file_end select-mode commands - **added** — Add :! alias for :sh and :| alias for :pipe - **added** — Add goto_column and extend_to_column commands - **added** — Add --insensitive and -i flags to the :sort command - **added** — Add rotate_selections_first and rotate_selections_last commands - **added** — Add --no-format flag for all :write commands 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](https://github.com/helix-editor/helix/pull/12527), [#13018](https://github.com/helix-editor/helix/pull/13018), [9574e55](https://github.com/helix-editor/helix/commit/9574e55), [2d4c2a1](https://github.com/helix-editor/helix/commit/2d4c2a1), [#13192](https://github.com/helix-editor/helix/pull/13192), [67f1fe2](https://github.com/helix-editor/helix/commit/67f1fe2), [#13466](https://github.com/helix-editor/helix/pull/13466), [#13467](https://github.com/helix-editor/helix/pull/13467), [#13840](https://github.com/helix-editor/helix/pull/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: * Add a picker which explores directories ([#11285](https://github.com/helix-editor/helix/pull/11285), [d4aed40](https://github.com/helix-editor/helix/commit/d4aed40)) * Allow cycling through multiple LSP Hover responses with `A-n`/`A-p` ([#10122](https://github.com/helix-editor/helix/pull/10122), [2367b20](https://github.com/helix-editor/helix/commit/2367b20)) * Add support for incomplete LSP completions ([5c1f3f8](https://github.com/helix-editor/helix/commit/5c1f3f8)) * Add support for EditorConfig ([#13056](https://github.com/helix-editor/helix/pull/13056), [#13443](https://github.com/helix-editor/helix/pull/13443)) * Add support for LSP document colors ([#12308](https://github.com/helix-editor/helix/pull/12308), [d43de14](https://github.com/helix-editor/helix/commit/d43de14), [47cdd23](https://github.com/helix-editor/helix/commit/47cdd23), [ba54b6a](https://github.com/helix-editor/helix/commit/ba54b6a), [#13188](https://github.com/helix-editor/helix/pull/13188)) * Support expansions in external formatter arguments ([#13429](https://github.com/helix-editor/helix/pull/13429)) * Switch out the highlighter for the `tree-house` crate ([#12972](https://github.com/helix-editor/helix/pull/12972), [09bc67a](https://github.com/helix-editor/helix/commit/09bc67a), [a7c3a43](https://github.com/helix-editor/helix/commit/a7c3a43), [3ceae88](https://github.com/helix-editor/helix/commit/3ceae88), [05ae617](https://github.com/helix-editor/helix/commit/05ae617), [5a1dcc2](https://github.com/helix-editor/helix/commit/5a1dcc2), [ebf96bd](https://github.com/helix-editor/helix/commit/ebf96bd), [#13644](https://github.com/helix-editor/helix/pull/13644), [b1f4717](https://github.com/helix-editor/helix/commit/b1f4717), [7410fe3](https://github.com/helix-editor/helix/commit/7410fe3), [633c5fb](https://github.com/helix-editor/helix/commit/633c5fb), [362e97e](https://github.com/helix-editor/helix/commit/362e97e), [#13828](https://github.com/helix-editor/helix/pull/13828), [6fd1efd](https://github.com/helix-editor/helix/commit/6fd1efd)) * This fixes a number of highlighter bugs. * Locals like parameter highlights are now highlighted even when the definition is not in view. * Markdown is now injected into rust doc comments (`///` and `//!`). * Add support for the DAP `startDebugging` reverse request ([#13403](https://github.com/helix-editor/helix/pull/13403)) Commands: * Add `copy_between_registers` for interactive copying between two registers ([066e938](https://github.com/helix-editor/helix/commit/066e938)) * Add `extend_to_file_{start,end}`, select-mode variants of `goto_file_{start,end}` ([#11767](https://github.com/helix-editor/helix/pull/11767)) * Add `:!` alias for `:sh` and `:|` for `:pipe` ([#13263](https://github.com/helix-editor/helix/pull/13263)) * Add `goto_column` and `extend_to_column` ([#13440](https://github.com/helix-editor/helix/pull/13440)) * Add an `--insensitive`/`-i` flag to the `:sort` comma _[Truncated at 4000 characters — full notes: https://github.com/helix-editor/helix/releases/tag/25.07]_ ### 25.01.1 - Date: 2025-01-19 - Version: 25.01.1 - Original notes: https://github.com/helix-editor/helix/releases/tag/25.01.1 - Permalink: https://whatsnew.fyi/product/helix/releases/25.01.1 - **changed** — Run external formatters from the document's directory - **fixed** — Fix blank buffer picker preview on doc with no views - **fixed** — Fix join_selections behavior on tabs - **fixed** — Fix recognition for color LSP completion hex codes for some language servers - **fixed** — Fix offsets to selections updated by open_below/open_above in multi-cursor scenarios - **fixed** — Fix offsets to selections updated by insert_newline when trimming whitespace in multi-cursor scenarios - **fixed** — Fix panic in path completion from resolving variables like ${HOME:-$HOME} - **fixed** — Prevent line comment continuation when using change_selection on a line above a comment - **changed** — Update onelight theme - **changed** — Add cursorline color to iceberg themes - **changed** — Update special, ui.text.directory and ui.virtual.wrap in dark_plus theme - **added** — Add CodeQL language support - **added** — Add Gren language support - **fixed** — Fix Teal LSP name - **changed** — Highlight : in Rust as a delimiter - **changed** — Update Swift highlights - **changed** — Highlight JSX attributes as @attribute - **changed** — Improve markdown heading highlights - **changed** — Add comment tokens configuration for JSONC - **changed** — --version now prints a leading zero for single-digit months 25.01.1 is a patch release focusing on fixing bugs and panics from changes in 25.01. Usability improvements: * Run external formatters from the document's directory ([#12315](https://github.com/helix-editor/helix/pull/12315)) Fixes: * Fix blank buffer picker preview on doc with no views ([917174e](https://github.com/helix-editor/helix/commit/917174e)) * Fix `join_selections` behavior on tabs ([#12452](https://github.com/helix-editor/helix/pull/12452)) * Fix recognition for color LSP completion hex codes for some language servers ([#12501](https://github.com/helix-editor/helix/pull/12501)) * Fix offsets to selections updated by `open_below`/`open_above` (`o`/`O`) in multi-cursor scenarios ([#12465](https://github.com/helix-editor/helix/pull/12465)) * Fix offsets to selections updated by `insert_newline` when trimming whitespace in multi-cursor scenarios ([4bd17e5](https://github.com/helix-editor/helix/commit/4bd17e5)) * Fix panic in path completion from resolving variables like `${HOME:-$HOME}` ([#12556](https://github.com/helix-editor/helix/pull/12556)) * Prevent line comment continuation when using `change_selection` (`c`) on a line above a comment ([#12575](https://github.com/helix-editor/helix/pull/12575)) Themes: * Update `onelight` ([#12399](https://github.com/helix-editor/helix/pull/12399)) * Add cursorline color to iceberg themes ([#12404](https://github.com/helix-editor/helix/pull/12404)) * Update `special`, `ui.text.directory` and `ui.virtual.wrap` in `dark_plus` ([#12530](https://github.com/helix-editor/helix/pull/12530)) New languages: * CodeQL ([#12470](https://github.com/helix-editor/helix/pull/12470)) * Gren ([#12525](https://github.com/helix-editor/helix/pull/12525)) Updated languages and queries: * Fix Teal LSP name ([#12395](https://github.com/helix-editor/helix/pull/12395)) * Highlight `:` in Rust as a delimiter ([#12408](https://github.com/helix-editor/helix/pull/12408)) * Update Swift highlights ([#12409](https://github.com/helix-editor/helix/pull/12409)) * Highlight JSX attributes as `@attribute` ([#12416](https://github.com/helix-editor/helix/pull/12416)) * Improve markdown heading highlights ([#12417](https://github.com/helix-editor/helix/pull/12417)) * Add comment tokens configuration for JSONC ([b26903c](https://github.com/helix-editor/helix/commit/b26903c)) * Highlight the never type `!` as a type in Rust ([#12485](https://github.com/helix-editor/helix/pull/12485)) * Expand builtin function highlights for ECMA languages, Rust and Haskell ([#12488](https://github.com/helix-editor/helix/pull/12488)) * Recognize `.clang-tidy` as YAML ([#12498](https://github.com/helix-editor/helix/pull/12498)) * Update MATLAB grammar and indent queries ([#12518](https://github.com/helix-editor/helix/pull/12518)) * Recognize `rockspec` as Lua ([#12516](https://github.com/helix-editor/helix/pull/12516)) * Add `///` to Dart comment tokens configuration ([99d33c7](https://github.com/helix-editor/helix/commit/99d33c7)) * Update Solidity grammar and queries ([#12457](https://github.com/helix-editor/helix/pull/12457)) * Update Spade grammar and queries ([#12583](https://github.com/helix-editor/helix/pull/12583)) * Re-enable Hare fetching and building by default ([#11507](https://github.com/helix-editor/helix/pull/11507)) Packaging: * `--version` now prints a leading zero for single-digit months, for example `25.01` (03f35af) * Pin the Ubuntu GitHub Actions runners used for releases to `ubuntu-22.04` ([#12464](https://github.com/helix-editor/helix/pull/12464)) * Produce a Debian package (`.deb` file) in the release GitHub Actions workflow ([#12453](https://github.com/helix-editor/helix/pull/12453)) ### 25.01 - Date: 2025-01-03 - Version: 25.01 - Original notes: https://github.com/helix-editor/helix/releases/tag/25.01 - Permalink: https://whatsnew.fyi/product/helix/releases/25.01 - **changed** — The `editor.lsp.display-messages` key now controls messages sent with the LSP `window/showMessage` notification rather than progress messages - **added** — Add `editor.lsp.display-progress-messages` key to enable progress messages - **added** — Refactor Pickers to use a table layout and allow filtering by column - **added** — Reimplement `global_search` to allow changing the query dynamically - **added** — Add an alternative inline display for LSP diagnostics - **added** — Support defining keybindings as macros - **added** — Continue line comments in `o`/`O` and on `` in insert mode - **added** — Allow configuring and switching clipboard providers at runtime - **added** — Add support for path completion - **added** — Support bindings with the Super (Cmd/Win/Meta) modifier - **added** — Support rendering and jumping between tabstops in snippet completions - **added** — Allow theming directory completions - **added** — Add commands to move within snake_case or camelCase words - **added** — Add `search_selection_detect_word_boundaries` command which takes the `*` key in normal and select mode - **added** — Add `:edit` and `:e` aliases for `:open` - **added** — Add `:mv` alias for `:move` - **changed** — Trim trailing newline from pipe command outputs when the input doesn't have a trailing newline - **changed** — Return document display name instead of absolute path from the `%` special register - **changed** — Track view position on a per-view instead of per-document basis - **changed** — Improve scrolloff calculation to leave a gap in the middle - **changed** — Add statusline errors when nothing is selected with `s`, `K`, `A-K` As always, a big thank you to all of the contributors! This release saw changes from 171 contributors. Breaking changes: * The `editor.lsp.display-messages` key now controls messages sent with the LSP `window/showMessage` notification rather than progress messages. If you want to enable progress messages you should now enable the `editor.lsp.display-progress-messages` key instead. ([#5535](https://github.com/helix-editor/helix/pull/5535)) Features: * Big refactor for `Picker`s ([#9647](https://github.com/helix-editor/helix/pull/9647), [#11209](https://github.com/helix-editor/helix/pull/11209), [#11216](https://github.com/helix-editor/helix/pull/11216), [#11211](https://github.com/helix-editor/helix/pull/11211), [#11343](https://github.com/helix-editor/helix/pull/11343), [#11406](https://github.com/helix-editor/helix/pull/11406)) * Use a table layout and allow filtering by column * Reimplement `global_search` to allow changing the query dynamically * Add an alternative "inline" display for LSP diagnostics ([#6417](https://github.com/helix-editor/helix/pull/6417), [#11815](https://github.com/helix-editor/helix/pull/11815)) * Support defining keybindings as macros ([#4709](https://github.com/helix-editor/helix/pull/4709)) * Continue line comments in `o`/`O` and on `` in insert mode ([#10996](https://github.com/helix-editor/helix/pull/10996), [#12213](https://github.com/helix-editor/helix/pull/12213), [#12215](https://github.com/helix-editor/helix/pull/12215)) * Allow configuring and switching clipboard providers at runtime ([#10839](https://github.com/helix-editor/helix/pull/10839), [b855cd0](https://github.com/helix-editor/helix/commit/b855cd0), [467fad5](https://github.com/helix-editor/helix/commit/467fad5), [191b0f0](https://github.com/helix-editor/helix/commit/191b0f0)) * Add support for path completion ([#2608](https://github.com/helix-editor/helix/pull/2608)) * Support bindings with the Super (Cmd/Win/Meta) modifier ([#6592](https://github.com/helix-editor/helix/pull/6592)) * Support rendering and jumping between tabstops in snippet completions ([#9801](https://github.com/helix-editor/helix/pull/9801)) * Allow theming directory completions ([#12205](https://github.com/helix-editor/helix/pull/12205), [#12295](https://github.com/helix-editor/helix/pull/12295)) Commands: * Add commands to move within snake_case or camelCase words ([#8147](https://github.com/helix-editor/helix/pull/8147)) * Add `search_selection_detect_word_boundaries` ([#12126](https://github.com/helix-editor/helix/pull/12126)) * This command takes the `*` key in normal and select mode, replacing `search_selection` which was moved to `A-*`. Usability improvements: * Add `:edit` and `:e` aliases for `:open` ([#11186](https://github.com/helix-editor/helix/pull/11186), [#11196](https://github.com/helix-editor/helix/pull/11196)) * Trim trailing newline from pipe command outputs when the input doesn't have a trailing newline ([#11183](https://github.com/helix-editor/helix/pull/11183), [4f63a46](https://github.com/helix-editor/helix/commit/4f63a46)) * Add `:mv` alias for `:move` ([#11256](https://github.com/helix-editor/helix/pull/11256)) * Return document display name instead of absolute path from the `%` special register ([#11275](https://github.com/helix-editor/helix/pull/11275)) * Track view position on a per-view instead of per-document basis ([#10559](https://github.com/helix-editor/helix/pull/10559)) * Improve scrolloff calculation to leave a gap in the middle ([#11323](https://github.com/helix-editor/helix/pull/11323)) * Show a popup for stderr printed by failed `:sh` commands ([#11239](https://github.com/helix-editor/helix/pull/11239)) * Add statusline errors when nothing is selected with `s`, `K`, `A-K` ([#11370](https://github.com/helix-editor/helix/pull/11370)) * Add `.svn` as a workspace root marker ([#11429](https://github.com/helix-editor/helix/pull/11429)) * Trim the end of `:sh` outputs ([#11161](https://github.com/helix-edi _[Truncated at 4000 characters — full notes: https://github.com/helix-editor/helix/releases/tag/25.01]_