3
Happy new year and a big shout out to all the contributors! We had 55 contributors in this release.
Helix has popped up in DPorts and Fedora Linux via COPR (#1270)
As usual the following is a brief summary, refer to the git history for a full log:
Breaking changes:
- fix: Normalize backtab into shift-tab
Features:
- Macros (#1234)
- Add reverse search functionality (#958)
- Allow keys to be mapped to sequences of commands (#589)
- Make it possible to keybind TypableCommands (#1169)
- Detect workspace root using language markers (#1370)
- Add WORD textobject (#991)
- Add LSP rename_symbol (space-r) (#1011)
- Added workspace_symbol_picker (#1041)
- Detect filetype from shebang line (#1001)
- Allow piping from stdin into a buffer on startup (#996)
- Add auto pairs for same-char pairs (#1219)
- Update settings at runtime (#798)
- Enable thin LTO (cccc194)
Commands:
- :wonly -- window only (#1057)
- buffer-close (:bc, :bclose) (#1035)
- Add : and :goto commands (#1128)
- :sort command (#1288)
- Add m textobject for pair under cursor (#961)
- Implement "Goto next buffer / Goto previous buffer" commands (#950)
- Implement "Goto last modification" command (#1067)
- Add trim_selections command (#1092)
- Add movement shortcut for history (#1088)
- Add command to inc/dec number under cursor (#1027)
- Add support for dates for increment/decrement
- Align selections (&) (#1101)
- Implement no-yank delete/change (#1099)
- Implement black hole register (#1165)
- gf as goto_file (gf) (#1102)
- Add last modified file (gm) (#1093)
- ensure_selections_forward (#1393)
- Readline style insert mode (#1039)
Usability improvements and fixes:
- Detect filetype on :write (#1141)
- Add single and double quotes to matching pairs (#995)
- Launch with defaults upon invalid config/theme (rather than panicking) (#982)
- If switching away from an empty scratch buffer, remove it (#935)
- Truncate the starts of file paths instead of the ends in picker (#951)
- Truncate the start of file paths in the StatusLine (#1351)
- Prevent picker from previewing binaries or large file (#939)
- Inform when reaching undo/redo bounds (#981)
- search_impl will only align cursor center when it isn't in view (#959)
- Add , , , Delete in prompt mode (#1034)
- Restore screen position when aborting search (#1047)
- Buffer picker: show is_modifier flag (#1020)
- Add commit hash to version info, if present (#957)
- Implement indent-aware delete (#1120)
- Jump to end char of surrounding pair from any cursor pos (#1121)
- File picker configuration (#988)
- Fix surround cursor position calculation (#1183)
- Accept count for goto_window (#1033)
- Make kill_to_line_end behave like emacs (#1235)
- Only use a single documentation popup (#1241)
- ui: popup: Don't allow scrolling past the end of content (3307f44c)
- Open files with spaces in filename, allow opening multiple files (#1231)
- Allow paste commands to take a count (#1261)
- Auto pairs selection (#1254)
- Use a fuzzy matcher for commands (#1386)
- Add c-s to pick word under doc cursor to prompt line & search completion (#831)
- Fix :earlier/:later missing changeset update (#1069)
- Support extend for multiple goto (#909)
- Add arrow-key bindings for window switching (#933)
- Implement key ordering for info box (#952)
LSP:
- Implement MarkedString rendering (e128a8702)
- Don't panic if init fails (d31bef7)
- Configurable diagnostic severity (#1325)
- Resolve completion item (#1315)
- Code action command support (#1304)
Grammars:
New themes:
- Solarized dark (#999)
- Solarized light (#1010)
- Spacebones light (#1131)
- Monokai Pro (#1206)
- Base16 Light and Terminal (#1078)
- and a default 16 color theme, truecolor detection
- Dracula (#1258)
A big shout out to all the contributors! We had 46 contributors in this release.
Helix has popped up in Scoop, FreeBSD Ports and Gentu GURU!
The following is a quick rundown of the larger changes, there were many more
(check the git history for more details).
Breaking changes:
- A couple of keymaps moved to resolve a few conflicting keybinds.
- Documentation popups were moved from
K to space+k
K is now keep_selections which filters selections to only keeps ones matching the regex
keep_primary_selection moved from space+space to ,
Alt-, is now remove_primary_selection which keeps all selections except the primary one
- Opening files in a split moved from
C-h to C-s
- Some configuration options moved from a
[terminal] section to [editor]. Consult the documentation for more information.
Features:
- LSP compatibility greatly improved for some implementations (Julia, Python, Typescript)
- Autocompletion! Completion now triggers automatically after a set idle timeout
- Completion documentation is now displayed next to the popup (#691)
- Treesitter textobjects (select a function via
mf, class via mc) (#728)
- Global search across entire workspace
space+/ (#651)
- Relative line number support (#485)
- Prompts now store a history (72cf86e)
:vsplit and :hsplit commands (#639)
C-w h/j/k/l can now be used to navigate between splits (#860)
C-j and C-k are now alternative keybindings to C-n and C-p in the UI (#876)
- Shell commands (shell-pipe, pipe-to, shell-insert-output, shell-append-output, keep-pipe) (#547)
- Searching now defaults to smart case search (case insensitive unless uppercase is used) (#761)
- The preview pane was improved to highlight and center line ranges
- The user
languages.toml is now merged into defaults, no longer need to copy the entire file (dc57f8dc)
- Show hidden files in completions (#648)
- Grammar injections are now properly handled (dd0b15e)
v in select mode now switches back to normal mode (#660)
- View mode can now be triggered as a "sticky" mode (#719)
f/t and object selection motions can now be repeated via Alt-. (#891)
- Statusline now displays total selection count and diagnostics counts for both errors and warnings (#916)
New grammars: