22c1a40725
The `take_while` should limit the layers to those that can match the input range so we don't always scan the entire `injection_layers`. We can limit `depth == 1` layers to those that start before the search `end`. Deeper layers overlap with shallower layers though so we need to allow those layers as well in the `take_while`. For example ```vue <script setup lang="ts"> const foo = 'bar'.match(/foo/); const bar = foo; </script> ``` L2 and L3 are a typescript layer and the `/foo/` part is a small regex layer. If you used `A-o` before the regex layer you would select the entire typescript layer. The search in `layer_id_containing_byte_range` would not consider the typescript layer since the regex layer comes earlier in `injection_ranges` and that layer's start is after `end`. The regex layer has a depth of `2` though so the change in this commit allows scanning through that layer. Co-authored-by: Pascal Kuthe <pascalkuthe@pm.me> |
4 months ago | |
---|---|---|
.cargo | 10 months ago | |
.github | 4 months ago | |
book | 4 months ago | |
contrib | 4 months ago | |
docs | 4 months ago | |
helix-core | 4 months ago | |
helix-dap | 5 months ago | |
helix-event | 4 months ago | |
helix-loader | 5 months ago | |
helix-lsp | 4 months ago | |
helix-parsec | 12 months ago | |
helix-stdx | 4 months ago | |
helix-term | 4 months ago | |
helix-tui | 5 months ago | |
helix-vcs | 4 months ago | |
helix-view | 4 months ago | |
runtime | 4 months ago | |
xtask | 8 months ago | |
.envrc | 12 months ago | |
.gitattributes | 2 years ago | |
.gitignore | 2 years ago | |
CHANGELOG.md | 4 months ago | |
Cargo.lock | 4 months ago | |
Cargo.toml | 4 months ago | |
LICENSE | 4 years ago | |
README.md | 4 months ago | |
base16_theme.toml | 5 months ago | |
default.nix | 7 months ago | |
flake.lock | 9 months ago | |
flake.nix | 5 months ago | |
grammars.nix | 10 months ago | |
languages.toml | 4 months ago | |
logo.svg | 11 months ago | |
logo_dark.svg | 11 months ago | |
logo_light.svg | 11 months ago | |
rust-toolchain.toml | 7 months ago | |
rustfmt.toml | 3 years ago | |
screenshot.png | 3 years ago | |
shell.nix | 2 years ago | |
theme.toml | 4 months ago |
README.md
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.
Features
- Vim-like modal editing
- Multiple selections
- Built-in language server support
- Smart, incremental syntax highlighting and code editing via tree-sitter
It's a terminal-based editor first, but I'd like to explore a custom renderer (similar to Emacs) in wgpu or skulpin.
Note: Only certain languages have indentation definitions at the moment. Check
runtime/queries/<lang>/
for indents.scm
.
Installation
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!