A post-modern modal text editor.
 
 
 
 
 
Go to file
Michael Davis 86f10ae24c
Add a language to fix Rust highlights in format-args macros
This is a bit hacky. Injections cannot stack on each other like
highlights because layers can have their own injections. So this new
language `rust-format-args-macro` emulates that. It unconditionally
injects `rust-format-args` into all strings. Rust injects this new
language into known format-args macros like `println!`.

The downside is that this can cause false-positive highlights within
these macros for strings which happen to contain format-args syntax

    println!("Hello, {}!", "{}");
    //               ^ format args syntax
    //                      ^ not format args syntax, but highlighted
    //                        as if it were :(

This false-positive case is expected to be rare.

Injecting this fake language fixes regular non-string highlights in
macro invocations: macro invocations need to inject the entire token
tree and use `injection.include-children` for proper highlighting.
2025-07-13 12:01:18 -04:00
.cargo Add hook/event system 2024-01-23 11:20:19 +09:00
.github Remove blank_issue template 2025-06-19 10:52:16 -04:00
book Add a language to fix Rust highlights in format-args macros 2025-07-13 12:01:18 -04:00
contrib feat: add ConsoleOnly to desktop entry categories (#13236) 2025-03-31 09:28:50 -05:00
docs fix: typos (#13505) 2025-05-10 10:36:17 -05:00
helix-core update imara-diff (#13722) 2025-06-14 16:14:27 -04:00
helix-dap DAP: Support the startDebugging reverse request (#13403) 2025-06-23 09:48:05 -05:00
helix-event chore(msrv): bump from 1.76 to 1.82 (#13275) 2025-04-28 09:48:54 -05:00
helix-loader Replace tree-sitter with tree-house 2025-05-13 18:43:43 -04:00
helix-lsp build(deps): bump the rust-dependencies group with 2 updates (#13909) 2025-07-08 08:18:37 -05:00
helix-lsp-types chore(msrv): bump from 1.76 to 1.82 (#13275) 2025-04-28 09:48:54 -05:00
helix-parsec fix(clippy): clippy 1.83 lints (#12150) 2024-12-02 08:23:32 -06:00
helix-stdx Add docs to helix-stdx, helix-tui, helix-vcs (#13765) 2025-07-12 09:48:00 -04:00
helix-term feat: add :buffer-close-others --skip-visible flag (#5393) 2025-07-11 11:17:50 -05:00
helix-tui Add docs to helix-stdx, helix-tui, helix-vcs (#13765) 2025-07-12 09:48:00 -04:00
helix-vcs Add docs to helix-stdx, helix-tui, helix-vcs (#13765) 2025-07-12 09:48:00 -04:00
helix-view fix: bitwise representation for RGB highlight (#13188) 2025-07-12 11:11:31 -04:00
runtime Add a language to fix Rust highlights in format-args macros 2025-07-13 12:01:18 -04:00
xtask docs: escape pipe in typeable command name (#13869) 2025-06-30 11:45:47 -04:00
.envrc direnv: Watch changes to default.nix 2025-03-04 11:31:54 -05:00
.gitattributes Help Linguist identify Tree-sitter queries (#13436) 2025-04-29 08:28:20 -05:00
.gitignore fix: added .DS_Store to gitignore 2024-11-20 16:18:42 -06:00
CHANGELOG.md Fix typos (#12690) 2025-02-02 18:58:29 -06:00
Cargo.lock deps: Update tree-house-bindings to v0.2.1 2025-07-12 18:21:28 -04:00
Cargo.toml DAP: Support the startDebugging reverse request (#13403) 2025-06-23 09:48:05 -05:00
LICENSE Add the LICENSE file. 2021-05-11 01:44:00 +09:00
README.md Fix repology badge (#11895) 2024-10-16 01:52:50 +09:00
base16_theme.toml base16_default: add styles to newer unthemed features (#10858) 2024-06-23 10:07:13 +09:00
default.nix fix: fix support for grammar overlays and include predicate (#13603) (#13613) 2025-05-26 08:47:14 -05:00
flake.lock flake: drop flake-utils dependency 2025-05-09 11:57:48 -04:00
flake.nix fix: typos (#13505) 2025-05-10 10:36:17 -05:00
grammars.nix chore: clean up grammars.nix (#13506) 2025-05-10 07:58:48 -05:00
languages.toml Add a language to fix Rust highlights in format-args macros 2025-07-13 12:01:18 -04:00
logo.svg Reduce logo sizes even more (#9211) 2024-01-02 23:16:37 +01:00
logo_dark.svg Reduce logo sizes even more (#9211) 2024-01-02 23:16:37 +01:00
logo_light.svg Reduce logo sizes even more (#9211) 2024-01-02 23:16:37 +01:00
rust-toolchain.toml chore(msrv): bump from 1.76 to 1.82 (#13275) 2025-04-28 09:48:54 -05:00
rustfmt.toml Add rustfmt.toml to force formatting to use rustfmt defaults 2021-07-23 18:11:22 +09:00
screenshot.png update screenshot (#1879) 2022-03-30 00:16:57 +09:00
shell.nix build(nix): update flake deps, add default.nix file 2022-06-21 17:39:30 -05:00
theme.toml Allow theming directory prompt completions (#12205) 2024-12-17 21:13:42 -06:00

README.md

Helix

Build status GitHub Release Documentation GitHub contributors Matrix Space

Screenshot

A Kakoune / Neovim inspired editor, written in Rust.

The editing model is very heavily based on Kakoune; during development I found myself agreeing with most of Kakoune's design decisions.

For more information, see the website or documentation.

All shortcuts/keymaps can be found in the documentation on the website.

Troubleshooting

Features

  • Vim-like modal editing
  • Multiple selections
  • Built-in language server support
  • Smart, incremental syntax highlighting and code editing via tree-sitter

Although it's primarily a terminal-based editor, I am interested in exploring a custom renderer (similar to Emacs) using wgpu or skulpin.

Note: Only certain languages have indentation definitions at the moment. Check runtime/queries/<lang>/ for indents.scm.

Installation

Installation documentation.

Packaging status

Contributing

Contributing guidelines can be found here.

Getting help

Your question might already be answered on the FAQ.

Discuss the project on the community Matrix Space (make sure to join #helix-editor:matrix.org if you're on a client that doesn't support Matrix Spaces yet).

Credits

Thanks to @jakenvac for designing the logo!