23.03
23.03 brings some long-awaited and exciting features. Thank you to everyone involved! This release saw changes from 102 contributors.
For the full log, check out the git log. Also check out the release notes for more commentary on larger features.
Breaking changes:
- Select diagnostic range in
goto_*_diagcommands (#4713, #5164, #6193) - Remove jump behavior from
increment/decrement(#4123, #5929) - Select change range in
goto_*_changecommands (#5206) - Split file modification indicator from filename statusline elements (#4731, #6036)
- Jump to symbol ranges in LSP goto commands (#5986)
- Workspace detection now stops at the first
.helix/directory (merging multiple.helix/languages.tomlconfigurations is no longer supported) (#5748)
Features:
- Dynamic workspace symbol picker (#5055)
- Soft-wrap (#5420, #5786, #5893, #6142, #6440)
- Initial support for LSP snippet completions (#5864, b1f7528, #6263, bbf4800, 90348b8, f87299f, #6371, 9fe3adc)
- Add a statusline element for showing the current version control HEAD (#5682)
- Display LSP type hints (#5420, #5934, #6312)
- Enable the Kitty keyboard protocol on terminals with support (#4939, #6170, #6194, #6438)
- Add a statusline element for the basename of the current file (#5318)
- Add substring matching syntax for the picker (#5658)
- Support LSP
textDocument/prepareRename(#6103) - Allow multiple runtime directories with priorities (#5411)
- Allow configuring whether to insert or replace completions (#5728)
- Allow per-workspace config file
.helix/config.toml(#5748) - Add
workspace-lsp-rootsconfig option to support multiple LSP roots for use with monorepos (#5748)
Commands:
:pipe-towhich pipes selections into a shell command and ignores output (#4931)merge_consecutive_selections(A-_) combines all consecutive selections (#5047)rotate_view_reversewhich focuses the previous view (#5356)goto_declaration(gD, requires LSP) which jumps to a symbol's declaration (#5646)file_picker_in_current_buffer_directory(#4666):character-infowhich shows information about the character under the cursor (#4000):toggle-optionfor toggling config options at runtime (#4085)dap_restartfor restarting a debug session in DAP (#5651):lsp-stopto stop the language server of the current buffer (#5964):reset-diff-changefor resetting a diff hunk to its original text (#4974):config-open-workspacefor opening the config file local to the current workspace (#5748)
Usability improvements:
- Remove empty detail section in completion menu when LSP doesn't send details (#4902)
- Pass client information on LSP initialization (#4904)
- Allow specifying environment variables for language servers in language config (#4004)
- Allow detached git worktrees to be recognized as root paths (#5097)
- Improve error message handling for theme loading failures (#5073)
- Print the names of binaries required for LSP/DAP in health-check (#5195)
- Improve sorting in the picker in cases of ties (#5169)
- Add theming for prompt suggestions (#5104)
- Open a file picker when using
:openon directories (#2707, #5278) - Reload language config with
:config-reload(#5239, #5381, #5431) - Improve indent queries for python when the tree is errored (#5332)
- Picker: Open files without closing the picker with
A-ret(#4435) - Allow theming cursors by primary/secondary and by mode (#5130)
- Allow configuration of the minimum width for the line-numbers gutter (#4724, #5696)
- Use filename completer for
:run-shell-commandcommand (#5729) - Surround with line-endings with
ms<ret>(#4571) - Hide duplicate symlinks in file pickers (#5658)
- Tabulate buffer picker contents (#5777)
- Add an option to disable LSP (#4425)
- Short-circuit tree-sitter and word object motions (#5851)
- Add exit code to failed command message (#5898)
- Make
mtextobject look for pairs enclosing selections (#3344) - Negotiate LSP position encoding (#5894, a48d1a4)
- Display deprecated LSP completions with strikethrough (#5932)
- Add JSONRPC request ID to failed LSP/DAP request log messages (#6010, #6018)
- Ignore case when filtering LSP completions (#6008)
- Show current language when no arguments are passed to
:set-language(#5895) - Refactor and rewrite all book documentation (#5534)
- Separate diagnostic picker message and code (#6095)
- Add a config option to bypass undercurl detection (#6253)
- Only complete appropriate arguments for typed commands (#5966)
- Discard outdated LSP diagnostics (3c9d5d0)
- Discard outdated LSP workspace edits (b6a4927)
- Run shell commands asynchronously (#6373)
- Show diagnostic codes in LSP diagnostic messages (#6378)
- Highlight the current line in a DAP debug session (#5957)
- Hide signature help if it overlaps with the completion menu (#5523, 7a69c40)
Fixes:
- Fix behavior of
auto-completionflag for completion-on-trigger (#5042) - Reset editor mode when changing buffers (#5072)
- Respect scrolloff settings in mouse movements (#5255)
- Avoid trailing
swhen only one file is opened (#5189) - Fix erroneous indent between closers of auto-pairs (#5330)
- Expand
~when parsing file paths in:open(#5329) - Fix theme inheritance for default themes (#5218)
- Fix
extend_linewith a count when the current line(s) are selected (#5288) - Prompt: Fix autocompletion for paths containing periods (#5175)
- Skip serializing JSONRPC params if params is null (#5471)
- Fix interaction with the
xclipclipboard provider (#5426) - Fix undo/redo execution from the command palette (#5294)
- Fix highlighting of non-block cursors (#5575)
- Fix panic when nooping in
join_selectionsandjoin_selections_space(#5423) - Fix selecting a changed file in global search (#5639)
- Fix initial syntax highlight layer sort order (#5196)
- Fix UTF-8 length handling for shellwords (#5738)
- Remove C-j and C-k bindings from the completion menu (#5070)
- Always commit to history when pasting (#5790) …