9e31ba5475
DynamicPicker is a thin wrapper over Picker that holds some additional state, similar to the old FilePicker type. Like with FilePicker, we want to fold the two types together, having Picker optionally hold that extra state. The DynamicPicker is a little more complicated than FilePicker was though - it holds a query callback and current query string in state and provides some debounce for queries using the IdleTimeout event. We can move all of that state and debounce logic into an AsyncHook implementation, introduced here as `DynamicQueryHandler`. The hook receives updates to the primary query and debounces those events so that once a query has been idle for a short time (275ms) we re-run the query. A standard Picker created through `new` for example can be promoted into a Dynamic picker by chaining the new `with_dynamic_query` function, very similar to FilePicker's replacement `with_preview`. The workspace symbol picker has been migrated to the new way of writing dynamic pickers as an example. The child commit will promote global search into a dynamic Picker as well. |
4 months ago | |
---|---|---|
.cargo | 10 months ago | |
.github | 6 months ago | |
book | 4 months ago | |
contrib | 4 months ago | |
docs | 5 months ago | |
helix-core | 4 months ago | |
helix-dap | 4 months ago | |
helix-event | 6 months ago | |
helix-loader | 4 months ago | |
helix-lsp | 4 months ago | |
helix-parsec | 12 months ago | |
helix-stdx | 5 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 | 7 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 | 6 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 | 6 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!