A post-modern modal text editor.
 
 
 
 
 
Go to file
Skyler Hawthorne 4b3aad7830 Add Selection::{overlaps,without} and fix contains
Adds two helper functions to `Selection`:

* `overlaps`: tests whether two `Selection`s contain any ranges which
  overlap with each other
* `without`: Computes a new `Selection` that is the set difference
  of two `Selection`s, i.e. everything in the first `Selection`
  with everything that overlaps in the second `Selection` removed,
  potentially leaving holes in the original ranges.

It also fixes a bug with `Selection::contains`: it assumes that if the
second `Selection` has a greater number of ranges than the first, then
the first cannot contain the second; but this is false, since one range
from the first could contain multiple smaller ranges in the second.
2025-05-26 19:22:20 -04:00
.cargo Add hook/event system 2024-01-23 11:20:19 +09:00
.github CI: Set a timeout for the test suite workflow 2025-05-17 09:16:14 -04:00
book fix(doc): missing capitalization of `goto_{next,prev}_tabstop` (#13616) 2025-05-26 08:48:32 -05: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 Add Selection::{overlaps,without} and fix contains 2025-05-26 19:22:20 -04:00
helix-dap syntax: Move config types to a separate module 2025-05-13 18:30:21 -04: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 syntax: Move config types to a separate module 2025-05-13 18:30:21 -04: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 chore(msrv): bump from 1.76 to 1.82 (#13275) 2025-04-28 09:48:54 -05:00
helix-term shrink_selection without history selects first contained child 2025-05-26 19:22:20 -04:00
helix-tui build(deps): bump the rust-dependencies group with 5 updates (#13070) 2025-03-11 08:29:38 -05:00
helix-vcs build(deps): bump the rust-dependencies group with 3 updates (#13437) 2025-04-29 10:48:45 +09:00
helix-view Fix `try_restore_indent` on non-LF documents 2025-05-24 11:42:29 -04:00
runtime fix(highlights/ungrammar): improve UX (#13607) 2025-05-25 08:47:10 -05:00
xtask Replace tree-sitter with tree-house 2025-05-13 18:43:43 -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 build(deps): bump the rust-dependencies group with 3 updates (#13576) 2025-05-20 21:03:55 +09:00
Cargo.toml Replace tree-sitter with tree-house 2025-05-13 18:43:43 -04: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 feat: highlight rust string interpolation macros that use `format_args!` (#13533) 2025-05-24 10:02:32 -05: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!