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-optionor:toggle-option. - The
:rsortcommand has been removed. Use the reverse flag instead::sort --reverse
- Quoting and spaces are now handled differently. This can break existing keymaps which use typable commands, in particular
Features:
- Add a picker which explores directories (#11285, d4aed40)
- Allow cycling through multiple LSP Hover responses with
A-n/A-p(#10122, 2367b20) - Add support for incomplete LSP completions (5c1f3f8)
- Add support for EditorConfig (#13056, #13443)
- Add support for LSP document colors (#12308, d43de14, 47cdd23, ba54b6a, #13188)
- Support expansions in external formatter arguments (#13429)
- Switch out the highlighter for the
tree-housecrate (#12972, 09bc67a, a7c3a43, 3ceae88, 05ae617, 5a1dcc2, ebf96bd, #13644, b1f4717, 7410fe3, 633c5fb, 362e97e, #13828, 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
startDebuggingreverse request (#13403)
Commands:
- Add
copy_between_registersfor interactive copying between two registers (066e938) - Add
extend_to_file_{start,end}, select-mode variants ofgoto_file_{start,end}(#11767) - Add
:!alias for:shand:|for:pipe(#13263) - Add
goto_columnandextend_to_column(#13440) - Add an
--insensitive/-iflag to the:sortcommand (#13560) - Add
rotate_selections_firstandrotate_selections_last(#13615) - Add a
--no-formatflag for all:writecommands (2f56091) - Add a
--skip-visibleflag for:buffer-close-othersand:buffer-close-others!(#5393)
Usability improvements:
- Replace current file using
A-retin 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-stopand:lsp-restart(#12578, 3d7e273) - Add
m(nearest matching pair) to infobox popups formdandmr(#12650) - Add a hint message in the statusline when using
:sorton 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_registerandcopy_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-newlinesandeditor.trim-trailing-whitespaceconfig options (aa20eb8) - Warn when the configured theme is unusable because true-color is not available (#13058)
- Allow configuring
[workspace-]diagnosticstatusline element severities (#13288, b0528bb) - Improve completion for shell commands (#12883, 532f241)
- Show the primary selection index in the
selectionsstatusline element when there are multiple selections (#12326) - Use configured language server names when possible in
--healthoutput (#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
:movewhen 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-tabconfig (28047fe) - Fix soft-wrap word boundary detection for Unicode combining accent characters (#12483)
- Fix clearing of infobox popups in
select_registerandinsert_registercommands (e882a75) - Fix handling of
stderrof 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-registerin: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) …