Giter Site home page Giter Site logo

helix-editor / helix Goto Github PK

View Code? Open in Web Editor NEW
29.8K 29.8K 2.2K 45.66 MB

A post-modern modal text editor.

Home Page: https://helix-editor.com

License: Mozilla Public License 2.0

Rust 81.58% Nix 0.37% CSS 0.13% Handlebars 0.51% Scheme 17.21% Shell 0.09% Elvish 0.07% C++ 0.03%
kakoune rust text-editor vim

helix's Introduction

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

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

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!

helix's People

Contributors

a-walrus avatar alexanderbrevig avatar archseer avatar ath3 avatar cessen avatar chrhorn avatar cossonleo avatar dead10ck avatar dependabot[bot] avatar dsseng avatar epocsquadron avatar erasin avatar gibbz00 avatar janhrastnik avatar jasonrhansen avatar kirawi avatar matoous avatar mtoohey31 avatar n0s4 avatar omnikar avatar pascalkuthe avatar philipp-m avatar pickfire avatar qibaobin avatar sudormrfbin avatar the-mikedavis avatar triton171 avatar vv9k avatar windsoilder avatar yusdacra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

helix's Issues

Panics on helix-v0.0.7-x86_64-windows

I downloaded the zip file from the release page:

C:\devel>c:\bin\helix-v0.0.7-x86_64-windows\hx.exe
thread 'main' panicked at 'Attempt to slice past end of RopeSlice: slice end 1, RopeSlice length 0', C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\ropey-1.2.0\src\slice.rs:784:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

C:\devel>set RUST_BACKTRACE=1

C:\devel>c:\bin\helix-v0.0.7-x86_64-windows\hx.exe
thread 'main' panicked at 'index out of bounds: the len is 10600 but the index is 10600', helix-tui\src\buffer.rs:185:14
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

C:\devel>set RUST_BACKTRACE=full

C:\devel>c:\bin\helix-v0.0.7-x86_64-windows\hx.exe
thread 'main' panicked at 'index out of bounds: the len is 10600 but the index is 10600', helix-tui\src\buffer.rs:185:14
stack backtrace:
   0:     0x7ff67e8918de - <unknown>
   1:     0x7ff67e8adb0c - <unknown>
   2:     0x7ff67e88d7c8 - <unknown>
   3:     0x7ff67e89484d - <unknown>
   4:     0x7ff67e894319 - <unknown>
   5:     0x7ff67e5a5513 - <unknown>
   6:     0x7ff67e894f35 - <unknown>
   7:     0x7ff67e894aa1 - <unknown>
   8:     0x7ff67e8921ff - <unknown>
   9:     0x7ff67e8949f9 - <unknown>
  10:     0x7ff67e9a8910 - tree_sitter_typescript
  11:     0x7ff67e9a88d7 - tree_sitter_typescript
  12:     0x7ff67e68305f - <unknown>
  13:     0x7ff67e5bf271 - <unknown>
  14:     0x7ff67e5a5173 - <unknown>
  15:     0x7ff67e598739 - <unknown>
  16:     0x7ff67e5b98e9 - <unknown>
  17:     0x7ff67e52e2f1 - <unknown>
  18:     0x7ff67e51c7a6 - <unknown>
  19:     0x7ff67e51c7ca - <unknown>
  20:     0x7ff67e895097 - <unknown>
  21:     0x7ff67e52ed37 - <unknown>
  22:     0x7ff67e9905d0 - tree_sitter_typescript
  23:     0x7ffaadaf7c24 - BaseThreadInitThunk
  24:     0x7ffaaf9ed721 - RtlUserThreadStart

Async formatting

Whenever I save a file (:write) with LSP enabled (e.g., solargraph for Ruby or rust-analyzer for Rust) the editor halts for 1-2 seconds until finally finishing. This behaviour isn't present when LSP is disabled.

Broken flake.nix

error: builder for '/nix/store/1cxlj18q2vjj09p2dyjk862ssvsp3xwr-rust-workspace-deps-unknown.drv' failed with exit code 101;
       last 10 log lines:
       >   failed to clone into: /build/dummy-src/.cargo-home/git/db/jsonrpc-22a65938f7d26b63
       >
       > Caused by:
       >   network failure seems to have happened
       >   if a proxy or similar is necessary `net.git-fetch-with-cli` may help here
       >   https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli
       >
       > Caused by:
       >   failed to resolve address for github.com: Name or service not known; class=Net (12)
       > [naersk] cargo returned with exit code 101, exiting
       For full logs, run 'nix log /nix/store/1cxlj18q2vjj09p2dyjk862ssvsp3xwr-rust-workspace-deps-unknown.drv'.
error: 1 dependencies of derivation '/nix/store/54mlyvashp47rlqysdr1b6b1vqskmv2p-rust-workspace-unknown.drv' failed to build

Consider using this instead: https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/rust.section.md#importing-a-cargolock-file

Project goals?

I wonder what are the project goals of helix. I have used quite a few editors, vim, neovim, vis, kakoune, doom emacs but I wonder what are the goals of this project? All of them have some stuff that I like but up till now all have their own downsides. I wonder what helix aims to achieves.

Also, since the project is new, we have the luxury to change the keymaps at the start, having used quite a few editors I think some of the keys in kakoune could be improved (some not easy to remember and some useless, like x vs X). Maybe we could create an RFC and discuss the alternatives and which keys to do what? By the way, I like kakoune alt, but not the limitation of terminal not being able to differentiate between ctrl-shift and ctrl, alt is similar case IIRC.

Panic when trying to create newline after text - (osx)

Just installed helix from source and was playing around by entering some text and immediately panics after hitting enter:

package main
thread 'main' panicked at 'Attempt to index past end of Rope: char index 12, Rope char length 12',

Time machine?

:ear ~1f and :lat 1h in vim IIRC

And also history branching like g+ and g-, not sure if kakoune supports them but I miss them.

Failing build v0.0.6 / master / rustc 1.47.0

Running: cargo install --path helix-term
after: git clone --recurse-submodules --shallow-submodules -j8 https://github.com/helix-editor/helix
on an: x86 mac
with: rustc 1.47.0


   Compiling jobserver v0.1.22
error[E0658]: unions with non-`Copy` fields are unstable
  --> /Users/adam.zethraeus/.cargo/registry/src/github.com-1ecc6299db9ec823/slotmap-1.0.3/src/basic.rs:19:1
   |
19 | / union SlotUnion<T> {
20 | |     value: ManuallyDrop<T>,
21 | |     next_free: u32,
22 | | }
   | |_^
   |
   = note: see issue #55149 <https://github.com/rust-lang/rust/issues/55149> for more information

error[E0658]: unions with non-`Copy` fields are unstable
  --> /Users/adam.zethraeus/.cargo/registry/src/github.com-1ecc6299db9ec823/slotmap-1.0.3/src/hop.rs:39:1
   |
39 | / union SlotUnion<T> {
40 | |     value: ManuallyDrop<T>,
41 | |     free: FreeListEntry,
42 | | }
   | |_^
   |
   = note: see issue #55149 <https://github.com/rust-lang/rust/issues/55149> for more information

   Compiling unicode-normalization v0.1.18
   Compiling quote v1.0.9
error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0658`.
The following warnings were emitted during compilation

build failed

   Compiling helix-lsp v0.1.0 (/Users/tzury/helix/helix-lsp)
error[E0658]: use of unstable library feature 'bool_to_option'
   --> helix-lsp/src/client.rs:473:32
    |
473 |             text: include_text.then(|| text.into()),
    |                                ^^^^
    |
    = note: see issue #64260 <https://github.com/rust-lang/rust/issues/64260> for more information

error: aborting due to previous error

For more information about this error, try `rustc --explain E0658`.
error: could not compile `helix-lsp`

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: failed to compile `helix-term v0.1.0 (/Users/tzury/helix/helix-term)`, intermediate artifacts can be found at `/Users/tzury/helix/target`

Caused by:
  build failed

my entire terminal history:

tby-mbp-m1:~ tzury$ git clone --recurse-submodules --shallow-submodules -j8 https://github.com/helix-editor/helix
Cloning into 'helix'...
remote: Enumerating objects: 5148, done.
remote: Counting objects: 100% (1526/1526), done.
remote: Compressing objects: 100% (453/453), done.
remote: Total 5148 (delta 1074), reused 1464 (delta 1038), pack-reused 3622
Receiving objects: 100% (5148/5148), 2.20 MiB | 6.25 MiB/s, done.
Resolving deltas: 100% (3573/3573), done.
Submodule 'helix-syntax/languages/tree-sitter-agda' (https://github.com/tree-sitter/tree-sitter-agda) registered for path 'helix-syntax/languages/tree-sitter-agda'
Submodule 'helix-syntax/languages/tree-sitter-bash' (https://github.com/tree-sitter/tree-sitter-bash) registered for path 'helix-syntax/languages/tree-sitter-bash'
Submodule 'helix-syntax/languages/tree-sitter-c' (https://github.com/tree-sitter/tree-sitter-c) registered for path 'helix-syntax/languages/tree-sitter-c'
Submodule 'helix-syntax/languages/tree-sitter-c-sharp' (https://github.com/tree-sitter/tree-sitter-c-sharp) registered for path 'helix-syntax/languages/tree-sitter-c-sharp'
Submodule 'helix-syntax/languages/tree-sitter-cpp' (https://github.com/tree-sitter/tree-sitter-cpp) registered for path 'helix-syntax/languages/tree-sitter-cpp'
Submodule 'helix-syntax/languages/tree-sitter-css' (https://github.com/tree-sitter/tree-sitter-css) registered for path 'helix-syntax/languages/tree-sitter-css'
Submodule 'helix-syntax/languages/tree-sitter-go' (https://github.com/tree-sitter/tree-sitter-go) registered for path 'helix-syntax/languages/tree-sitter-go'
Submodule 'helix-syntax/languages/tree-sitter-html' (https://github.com/tree-sitter/tree-sitter-html) registered for path 'helix-syntax/languages/tree-sitter-html'
Submodule 'helix-syntax/languages/tree-sitter-java' (https://github.com/tree-sitter/tree-sitter-java) registered for path 'helix-syntax/languages/tree-sitter-java'
Submodule 'helix-syntax/languages/tree-sitter-javascript' (https://github.com/tree-sitter/tree-sitter-javascript) registered for path 'helix-syntax/languages/tree-sitter-javascript'
Submodule 'helix-syntax/languages/tree-sitter-json' (https://github.com/tree-sitter/tree-sitter-json) registered for path 'helix-syntax/languages/tree-sitter-json'
Submodule 'helix-syntax/languages/tree-sitter-julia' (https://github.com/tree-sitter/tree-sitter-julia) registered for path 'helix-syntax/languages/tree-sitter-julia'
Submodule 'helix-syntax/languages/tree-sitter-php' (https://github.com/tree-sitter/tree-sitter-php) registered for path 'helix-syntax/languages/tree-sitter-php'
Submodule 'helix-syntax/languages/tree-sitter-python' (https://github.com/tree-sitter/tree-sitter-python) registered for path 'helix-syntax/languages/tree-sitter-python'
Submodule 'helix-syntax/languages/tree-sitter-ruby' (https://github.com/tree-sitter/tree-sitter-ruby) registered for path 'helix-syntax/languages/tree-sitter-ruby'
Submodule 'helix-syntax/languages/tree-sitter-rust' (https://github.com/tree-sitter/tree-sitter-rust) registered for path 'helix-syntax/languages/tree-sitter-rust'
Submodule 'helix-syntax/languages/tree-sitter-scala' (https://github.com/tree-sitter/tree-sitter-scala) registered for path 'helix-syntax/languages/tree-sitter-scala'
Submodule 'helix-syntax/languages/tree-sitter-swift' (https://github.com/tree-sitter/tree-sitter-swift) registered for path 'helix-syntax/languages/tree-sitter-swift'
Submodule 'helix-syntax/languages/tree-sitter-toml' (https://github.com/ikatyang/tree-sitter-toml) registered for path 'helix-syntax/languages/tree-sitter-toml'
Submodule 'helix-syntax/languages/tree-sitter-typescript' (https://github.com/tree-sitter/tree-sitter-typescript) registered for path 'helix-syntax/languages/tree-sitter-typescript'
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-agda'...
remote: Enumerating objects: 275, done.
remote: Counting objects: 100% (275/275), done.
remote: Compressing objects: 100% (167/167), done.
remote: Total 275 (delta 136), reused 196 (delta 84), pack-reused 0
Receiving objects: 100% (275/275), 3.02 MiB | 2.75 MiB/s, done.
Resolving deltas: 100% (136/136), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-html'...
remote: Enumerating objects: 193, done.
remote: Counting objects: 100% (193/193), done.
remote: Compressing objects: 100% (118/118), done.
remote: Total 193 (delta 93), reused 144 (delta 57), pack-reused 0
Receiving objects: 100% (193/193), 62.55 KiB | 1016.00 KiB/s, done.
Resolving deltas: 100% (93/93), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-css'...
remote: Enumerating objects: 152, done.
remote: Counting objects: 100% (152/152), done.
remote: Compressing objects: 100% (107/107), done.
remote: Total 152 (delta 74), reused 98 (delta 37), pack-reused 0
Receiving objects: 100% (152/152), 231.74 KiB | 1.19 MiB/s, done.
Resolving deltas: 100% (74/74), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-bash'...
remote: Enumerating objects: 441, done.
remote: Counting objects: 100% (441/441), done.
remote: Compressing objects: 100% (267/267), done.
remote: Total 441 (delta 262), reused 310 (delta 153), pack-reused 0
Receiving objects: 100% (441/441), 5.53 MiB | 3.33 MiB/s, done.
Resolving deltas: 100% (262/262), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-java'...
remote: Enumerating objects: 223, done.
remote: Counting objects: 100% (223/223), done.
remote: Compressing objects: 100% (160/160), done.
remote: Total 223 (delta 92), reused 135 (delta 36), pack-reused 0
Receiving objects: 100% (223/223), 1.33 MiB | 2.21 MiB/s, done.
Resolving deltas: 100% (92/92), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-go'...
remote: Enumerating objects: 435, done.
remote: Counting objects: 100% (435/435), done.
remote: Compressing objects: 100% (277/277), done.
remote: Total 435 (delta 241), reused 293 (delta 129), pack-reused 0
Receiving objects: 100% (435/435), 2.82 MiB | 3.43 MiB/s, done.
Resolving deltas: 100% (241/241), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-json'...
remote: Enumerating objects: 151, done.
remote: Counting objects: 100% (151/151), done.
remote: Compressing objects: 100% (99/99), done.
remote: Total 151 (delta 65), reused 110 (delta 37), pack-reused 0
Receiving objects: 100% (151/151), 42.58 KiB | 714.00 KiB/s, done.
Resolving deltas: 100% (65/65), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-julia'...
remote: Enumerating objects: 109, done.
remote: Counting objects: 100% (109/109), done.
remote: Compressing objects: 100% (73/73), done.
remote: Total 109 (delta 47), reused 81 (delta 28), pack-reused 0
Receiving objects: 100% (109/109), 3.38 MiB | 2.88 MiB/s, done.
Resolving deltas: 100% (47/47), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-c-sharp'...
remote: Enumerating objects: 260, done.
remote: Counting objects: 100% (260/260), done.
remote: Compressing objects: 100% (186/186), done.
remote: Total 260 (delta 154), reused 126 (delta 53), pack-reused 0
Receiving objects: 100% (260/260), 3.47 MiB | 1.15 MiB/s, done.
Resolving deltas: 100% (154/154), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-c'...
remote: Enumerating objects: 633, done.
remote: Counting objects: 100% (633/633), done.
remote: Compressing objects: 100% (381/381), done.
remote: Total 633 (delta 377), reused 454 (delta 220), pack-reused 0
Receiving objects: 100% (633/633), 6.23 MiB | 4.41 MiB/s, done.
Resolving deltas: 100% (377/377), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-rust'...
remote: Enumerating objects: 405, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (233/233), done.
remote: Total 405 (delta 238), reused 298 (delta 149), pack-reused 0
Receiving objects: 100% (405/405), 7.53 MiB | 4.04 MiB/s, done.
Resolving deltas: 100% (238/238), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-swift'...
remote: Enumerating objects: 28, done.
remote: Counting objects: 100% (28/28), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 28 (delta 0), reused 9 (delta 0), pack-reused 0
Receiving objects: 100% (28/28), 83.68 KiB | 865.00 KiB/s, done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-scala'...
remote: Enumerating objects: 98, done.
remote: Counting objects: 100% (98/98), done.
remote: Compressing objects: 100% (72/72), done.
remote: Total 98 (delta 39), reused 59 (delta 17), pack-reused 0
Receiving objects: 100% (98/98), 577.84 KiB | 2.41 MiB/s, done.
Resolving deltas: 100% (39/39), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-toml'...
remote: Enumerating objects: 220, done.
remote: Counting objects: 100% (220/220), done.
remote: Compressing objects: 100% (144/144), done.
remote: Total 220 (delta 103), reused 156 (delta 58), pack-reused 0
Receiving objects: 100% (220/220), 365.59 KiB | 1.98 MiB/s, done.
Resolving deltas: 100% (103/103), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-python'...
remote: Enumerating objects: 449, done.
remote: Counting objects: 100% (449/449), done.
remote: Compressing objects: 100% (303/303), done.
remote: Total 449 (delta 247), reused 283 (delta 114), pack-reused 0
Receiving objects: 100% (449/449), 3.52 MiB | 2.21 MiB/s, done.
Resolving deltas: 100% (247/247), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-cpp'...
remote: Enumerating objects: 466, done.
remote: Counting objects: 100% (466/466), done.
remote: Compressing objects: 100% (282/282), done.
remote: Total 466 (delta 270), reused 358 (delta 176), pack-reused 0
Receiving objects: 100% (466/466), 13.65 MiB | 3.03 MiB/s, done.
Resolving deltas: 100% (270/270), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-javascript'...
remote: Enumerating objects: 759, done.
remote: Counting objects: 100% (759/759), done.
remote: Compressing objects: 100% (499/499), done.
remote: Total 759 (delta 450), reused 476 (delta 219), pack-reused 0
Receiving objects: 100% (759/759), 9.91 MiB | 1.95 MiB/s, done.
Resolving deltas: 100% (450/450), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-php'...
remote: Enumerating objects: 1800, done.
remote: Counting objects: 100% (1800/1800), done.
remote: Compressing objects: 100% (1051/1051), done.
remote: Total 1800 (delta 1065), reused 1008 (delta 734), pack-reused 0
Receiving objects: 100% (1800/1800), 15.17 MiB | 1.24 MiB/s, done.
Resolving deltas: 100% (1065/1065), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-ruby'...
remote: Enumerating objects: 514, done.
remote: Counting objects: 100% (514/514), done.
remote: Compressing objects: 100% (334/334), done.
remote: Total 514 (delta 287), reused 327 (delta 152), pack-reused 0
Receiving objects: 100% (514/514), 54.67 MiB | 1.44 MiB/s, done.
Resolving deltas: 100% (287/287), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-typescript'...
remote: Enumerating objects: 648, done.
remote: Counting objects: 100% (648/648), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 648 (delta 373), reused 424 (delta 197), pack-reused 0
Receiving objects: 100% (648/648), 20.89 MiB | 2.29 MiB/s, done.
Resolving deltas: 100% (373/373), done.
Submodule path 'helix-syntax/languages/tree-sitter-agda': checked out 'ca69cdf485e9ce2b2ef0991a720aa88d87d30231'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 1 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 300 bytes | 75.00 KiB/s, done.
From https://github.com/tree-sitter/tree-sitter-bash
 * branch            a8eb5cb57c66f74c63ab950de081207cccf52017 -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-bash': checked out 'a8eb5cb57c66f74c63ab950de081207cccf52017'
Submodule 'examples/bash-it' (https://github.com/Bash-it/bash-it.git) registered for path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it'
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-bash/examples/bash-it'...
remote: Enumerating objects: 1039, done.
remote: Counting objects: 100% (1039/1039), done.
remote: Compressing objects: 100% (725/725), done.
remote: Total 1039 (delta 278), reused 768 (delta 165), pack-reused 0
Receiving objects: 100% (1039/1039), 7.27 MiB | 15.08 MiB/s, done.
Resolving deltas: 100% (278/278), done.
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 1048, done.
remote: Counting objects: 100% (406/406), done.
remote: Compressing objects: 100% (135/135), done.
remote: Total 152 (delta 72), reused 57 (delta 3), pack-reused 0
Receiving objects: 100% (152/152), 79.79 KiB | 6.65 MiB/s, done.
Resolving deltas: 100% (72/72), completed with 65 local objects.
From https://github.com/Bash-it/bash-it
 * branch            c3d9c46ef832f808c929a22b36c8ef6dd45cb98a -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it': checked out 'c3d9c46ef832f808c929a22b36c8ef6dd45cb98a'
Submodule 'test_lib/bats-assert' (https://github.com/ztombol/bats-assert) registered for path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-assert'
Submodule 'test_lib/bats-core' (https://github.com/bats-core/bats-core) registered for path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-core'
Submodule 'test_lib/bats-file' (https://github.com/ztombol/bats-file) registered for path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-file'
Submodule 'test_lib/bats-support' (https://github.com/ztombol/bats-support) registered for path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-support'
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-assert'...
remote: Enumerating objects: 48, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 48 (delta 20), reused 27 (delta 8), pack-reused 0
Receiving objects: 100% (48/48), 19.94 KiB | 111.00 KiB/s, done.
Resolving deltas: 100% (20/20), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-support'...
remote: Enumerating objects: 49, done.
remote: Counting objects: 100% (49/49), done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 49 (delta 12), reused 43 (delta 11), pack-reused 0
Receiving objects: 100% (49/49), 18.11 KiB | 6.04 MiB/s, done.
Resolving deltas: 100% (12/12), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-file'...
remote: Enumerating objects: 48, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 48 (delta 10), reused 46 (delta 10), pack-reused 0
Receiving objects: 100% (48/48), 15.74 KiB | 88.00 KiB/s, done.
Resolving deltas: 100% (10/10), done.
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-core'...
remote: Enumerating objects: 739, done.
remote: Counting objects: 100% (739/739), done.
remote: Compressing objects: 100% (502/502), done.
remote: Total 739 (delta 320), reused 505 (delta 158), pack-reused 0
Receiving objects: 100% (739/739), 253.16 KiB | 1.36 MiB/s, done.
Resolving deltas: 100% (320/320), done.
Submodule path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-assert': checked out '9f88b4207da750093baabc4e3f41bf68f0dd3630'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 84, done.
remote: Counting objects: 100% (75/75), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 11 (delta 6), reused 4 (delta 0), pack-reused 0
Unpacking objects: 100% (11/11), 3.64 KiB | 286.00 KiB/s, done.
From https://github.com/bats-core/bats-core
 * branch            85388685632f85d5a1c32e6bca2deec401964cf7 -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-core': checked out '85388685632f85d5a1c32e6bca2deec401964cf7'
Submodule path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-file': checked out '2fddb2b831d65cdf2e411f3b47f4677fbb15729c'
Submodule path 'helix-syntax/languages/tree-sitter-bash/examples/bash-it/test_lib/bats-support': checked out '004e707638eedd62e0481e8cdc9223ad471f12ee'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 2 (delta 1), reused 1 (delta 1), pack-reused 0
Unpacking objects: 100% (2/2), 649 bytes | 162.00 KiB/s, done.
From https://github.com/tree-sitter/tree-sitter-c
 * branch            f05e279aedde06a25801c3f2b2cc8ac17fac52ae -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-c': checked out 'f05e279aedde06a25801c3f2b2cc8ac17fac52ae'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 67, done.
remote: Counting objects: 100% (62/62), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 6), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (7/7), 91.75 KiB | 306.00 KiB/s, done.
From https://github.com/tree-sitter/tree-sitter-c-sharp
 * branch            53a65a908167d6556e1fcdb67f1ee62aac101dda -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-c-sharp': checked out '53a65a908167d6556e1fcdb67f1ee62aac101dda'
Submodule path 'helix-syntax/languages/tree-sitter-cpp': checked out 'c61212414a3e95b5f7507f98e83de1d638044adc'
Submodule path 'helix-syntax/languages/tree-sitter-css': checked out '94e10230939e702b4fa3fa2cb5c3bc7173b95d07'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 2 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 659 bytes | 164.00 KiB/s, done.
From https://github.com/tree-sitter/tree-sitter-go
 * branch            2a83dfdd759a632651f852aa4dc0af2525fae5cd -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-go': checked out '2a83dfdd759a632651f852aa4dc0af2525fae5cd'
Submodule path 'helix-syntax/languages/tree-sitter-html': checked out 'd93af487cc75120c89257195e6be46c999c6ba18'
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), 568 bytes | 568.00 KiB/s, done.
remote: Enumerating objects: 79, done.
remote: Counting objects: 100% (65/65), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 9 (delta 6), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), 11.38 KiB | 224.00 KiB/s, done.
From https://github.com/tree-sitter/tree-sitter-java
 * branch            bd6186c24d5eb13b4623efac9d944dcc095c0dad -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-java': checked out 'bd6186c24d5eb13b4623efac9d944dcc095c0dad'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 75, done.
remote: Counting objects: 100% (69/69), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 9 (delta 6), reused 2 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), 57.17 KiB | 1.12 MiB/s, done.
From https://github.com/tree-sitter/tree-sitter-javascript
 * branch            4a95461c4761c624f2263725aca79eeaefd36cad -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-javascript': checked out '4a95461c4761c624f2263725aca79eeaefd36cad'
Submodule path 'helix-syntax/languages/tree-sitter-json': checked out '65bceef69c3b0f24c0b19ce67d79f57c96e90fcb'
Submodule path 'helix-syntax/languages/tree-sitter-julia': checked out '0ba7a24b062b671263ae08e707e9e94383b25bb7'
remote: Enumerating objects: 126, done.
remote: Counting objects: 100% (114/114), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 16 (delta 13), reused 8 (delta 5), pack-reused 0
Unpacking objects: 100% (16/16), 1.03 MiB | 1.94 MiB/s, done.
remote: Enumerating objects: 100, done.
remote: Counting objects: 100% (87/87), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 17 (delta 11), reused 5 (delta 2), pack-reused 0
Unpacking objects: 100% (17/17), 81.15 KiB | 1.27 MiB/s, done.
From https://github.com/tree-sitter/tree-sitter-php
 * branch            0d63eaf94e8d6c0694551b016c802787e61b3fb2 -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-php': checked out '0d63eaf94e8d6c0694551b016c802787e61b3fb2'
Submodule path 'helix-syntax/languages/tree-sitter-python': checked out 'd6210ceab11e8d812d4ab59c07c81458ec6e5184'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 2 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 295 bytes | 295.00 KiB/s, done.
From https://github.com/tree-sitter/tree-sitter-ruby
 * branch            dfff673b41df7fadcbb609c6338f38da3cdd018e -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-ruby': checked out 'dfff673b41df7fadcbb609c6338f38da3cdd018e'
Submodule path 'helix-syntax/languages/tree-sitter-rust': checked out 'a360da0a29a19c281d08295a35ecd0544d2da211'
Submodule path 'helix-syntax/languages/tree-sitter-scala': checked out 'fb23ed9a99da012d86b7a5059b9d8928607cce29'
Submodule path 'helix-syntax/languages/tree-sitter-swift': checked out 'a22fa5e19bae50098e2252ea96cba3aba43f4c58'
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 991 bytes | 330.00 KiB/s, done.
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 971 bytes | 323.00 KiB/s, done.
From https://github.com/ikatyang/tree-sitter-toml
 * branch            7cff70bbcbbc62001b465603ca1ea88edd668704 -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-toml': checked out '7cff70bbcbbc62001b465603ca1ea88edd668704'
Submodule 'tree-sitter' (https://github.com/ikatyang/tree-sitter) registered for path 'helix-syntax/languages/tree-sitter-toml/tree-sitter'
Cloning into '/Users/tzury/helix/helix-syntax/languages/tree-sitter-toml/tree-sitter'...
remote: Enumerating objects: 2486, done.
remote: Counting objects: 100% (2486/2486), done.
remote: Compressing objects: 100% (1439/1439), done.
remote: Total 2486 (delta 1618), reused 1585 (delta 962), pack-reused 0
Receiving objects: 100% (2486/2486), 3.41 MiB | 9.79 MiB/s, done.
Resolving deltas: 100% (1618/1618), done.
Submodule path 'helix-syntax/languages/tree-sitter-toml/tree-sitter': checked out 'fc5a692b7d5f144cc531f5823b1c5a3b2f06cf01'
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Enumerating objects: 68, done.
remote: Counting objects: 100% (58/58), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 7), reused 2 (delta 1), pack-reused 0
Unpacking objects: 100% (8/8), 832 bytes | 43.00 KiB/s, done.
From https://github.com/tree-sitter/tree-sitter-typescript
 * branch            3e897ea5925f037cfae2e551f8e6b12eec2a201a -> FETCH_HEAD
Submodule path 'helix-syntax/languages/tree-sitter-typescript': checked out '3e897ea5925f037cfae2e551f8e6b12eec2a201a'
tby-mbp-m1:~ tzury$ cd helix
tby-mbp-m1:helix tzury$ cargo install --path helix-term
  Installing helix-term v0.1.0 (/Users/tzury/helix/helix-term)
    Updating crates.io index
    Updating git repository `https://github.com/paritytech/jsonrpc`
  Downloaded itoa v0.4.7
  Downloaded once_cell v1.7.2
  Downloaded serde_derive v1.0.126
  Downloaded pico-args v0.4.1
  Downloaded chrono v0.4.19
  Downloaded serde v1.0.126
  Downloaded syn v1.0.72
  Downloaded ropey v1.2.0
  Downloaded scopeguard v1.1.0
  Downloaded futures-task v0.3.15
  Downloaded tinyvec v1.2.0
  Downloaded tree-sitter v0.19.5
  Downloaded cassowary v0.3.0
  Downloaded unicode-bidi v0.3.5
  Downloaded tokio-stream v0.1.6
  Downloaded unicode-width v0.1.8
  Downloaded version_check v0.9.3
  Downloaded parking_lot v0.11.1
  Downloaded tokio-macros v1.2.0
  Downloaded pin-utils v0.1.0
  Downloaded signal-hook-registry v1.4.0
  Downloaded log v0.4.14
  Downloaded walkdir v2.3.2
  Downloaded num_cpus v1.13.0
  Downloaded globset v0.4.6
  Downloaded quote v1.0.9
  Downloaded url v2.2.2
  Downloaded unicode-normalization v0.1.18
  Downloaded threadpool v1.8.1
  Downloaded thiserror-impl v1.0.25
  Downloaded cc v1.0.68
  Downloaded pathdiff v0.2.0
  Downloaded fuzzy-matcher v0.3.7
  Downloaded serde_repr v0.1.7
  Downloaded slotmap v1.0.3
  Downloaded libc v0.2.95
  Downloaded fern v0.6.0
  Downloaded fnv v1.0.7
  Downloaded idna v0.2.3
  Downloaded crossterm v0.19.0
  Downloaded mac v0.1.1
  Downloaded futures-executor v0.3.15
  Downloaded unicode-xid v0.2.2
  Downloaded unicase v2.6.0
  Downloaded utf-8 v0.7.6
  Downloaded tokio v1.6.1
  Downloaded serde_json v1.0.64
  Downloaded ryu v1.0.5
  Downloaded mio v0.7.11
  Downloaded parking_lot_core v0.8.3
  Downloaded futf v0.1.4
  Downloaded same-file v1.0.6
  Downloaded aho-corasick v0.7.18
  Downloaded bytes v1.0.1
  Downloaded bstr v0.2.16
  Downloaded autocfg v1.0.1
  Downloaded matches v0.1.8
  Downloaded lsp-types v0.89.1
  Downloaded unicode-segmentation v1.7.1
  Downloaded thread_local v1.1.3
  Downloaded percent-encoding v2.1.0
  Downloaded num-traits v0.2.14
  Downloaded lazy_static v1.4.0
  Downloaded glob v0.3.0
  Downloaded bitflags v1.2.1
  Downloaded lock_api v0.4.4
  Downloaded jobserver v0.1.22
  Downloaded etcetera v0.3.2
  Downloaded dirs-next v2.0.0
  Downloaded cfg-if v1.0.0
  Downloaded num-integer v0.1.44
  Downloaded new_debug_unreachable v1.0.4
  Downloaded crossbeam-utils v0.8.5
  Downloaded thiserror v1.0.25
  Downloaded slab v0.4.3
  Downloaded pin-project-lite v0.2.6
  Downloaded instant v0.1.9
  Downloaded toml v0.5.8
  Downloaded tinyvec_macros v0.1.0
  Downloaded tendril v0.4.2
  Downloaded ignore v0.4.17
  Downloaded futures-core v0.3.15
  Downloaded signal-hook v0.1.17
  Downloaded proc-macro2 v1.0.27
  Downloaded memchr v2.4.0
  Downloaded form_urlencoded v1.0.1
  Downloaded anyhow v1.0.40
  Downloaded regex v1.5.4
  Downloaded smallvec v1.6.1
  Downloaded pulldown-cmark v0.8.0
  Downloaded futures-util v0.3.15
  Downloaded dirs-sys-next v0.1.2
  Downloaded regex-syntax v0.6.25
  Downloaded 93 crates (6.0 MB) in 1.34s
   Compiling libc v0.2.95
   Compiling proc-macro2 v1.0.27
   Compiling unicode-xid v0.2.2
   Compiling syn v1.0.72
   Compiling cfg-if v1.0.0
   Compiling autocfg v1.0.1
   Compiling memchr v2.4.0
   Compiling log v0.4.14
   Compiling serde_derive v1.0.126
   Compiling serde v1.0.126
   Compiling futures-core v0.3.15
   Compiling smallvec v1.6.1
   Compiling version_check v0.9.3
   Compiling once_cell v1.7.2
   Compiling scopeguard v1.1.0
   Compiling bitflags v1.2.1
   Compiling regex-syntax v0.6.25
   Compiling futures-task v0.3.15
   Compiling matches v0.1.8
   Compiling pin-project-lite v0.2.6
   Compiling ryu v1.0.5
   Compiling tinyvec_macros v0.1.0
   Compiling serde_json v1.0.64
   Compiling mac v0.1.1
   Compiling pin-utils v0.1.0
   Compiling new_debug_unreachable v1.0.4
   Compiling slab v0.4.3
   Compiling percent-encoding v2.1.0
   Compiling itoa v0.4.7
   Compiling lazy_static v1.4.0
   Compiling utf-8 v0.7.6
   Compiling anyhow v1.0.40
   Compiling unicode-width v0.1.8
   Compiling bytes v1.0.1
   Compiling unicode-segmentation v1.7.1
   Compiling crossbeam-utils v0.8.5
   Compiling fnv v1.0.7
   Compiling same-file v1.0.6
   Compiling pathdiff v0.2.0
   Compiling cassowary v0.3.0
   Compiling pulldown-cmark v0.8.0
   Compiling glob v0.3.0
   Compiling pico-args v0.4.1
   Compiling instant v0.1.9
   Compiling futures-util v0.3.15
   Compiling tokio v1.6.1
   Compiling num-traits v0.2.14
   Compiling num-integer v0.1.44
   Compiling unicode-bidi v0.3.5
   Compiling lock_api v0.4.4
   Compiling thread_local v1.1.3
   Compiling ropey v1.2.0
   Compiling tinyvec v1.2.0
   Compiling futf v0.1.4
   Compiling slotmap v1.0.3
   Compiling unicase v2.6.0
   Compiling form_urlencoded v1.0.1
   Compiling walkdir v2.3.2
   Compiling fuzzy-matcher v0.3.7
   Compiling tendril v0.4.2
   Compiling unicode-normalization v0.1.18
   Compiling fern v0.6.0
   Compiling aho-corasick v0.7.18
   Compiling bstr v0.2.16
   Compiling jobserver v0.1.22
   Compiling num_cpus v1.13.0
   Compiling parking_lot_core v0.8.3
   Compiling signal-hook-registry v1.4.0
   Compiling mio v0.7.11
   Compiling dirs-sys-next v0.1.2
   Compiling quote v1.0.9
   Compiling idna v0.2.3
   Compiling regex v1.5.4
   Compiling cc v1.0.68
   Compiling threadpool v1.8.1
   Compiling parking_lot v0.11.1
   Compiling dirs-next v2.0.0
   Compiling signal-hook v0.1.17
   Compiling globset v0.4.6
   Compiling futures-executor v0.3.15
   Compiling chrono v0.4.19
   Compiling tree-sitter v0.19.5
   Compiling helix-syntax v0.1.0 (/Users/tzury/helix/helix-syntax)
   Compiling crossterm v0.19.0
   Compiling ignore v0.4.17
   Compiling helix-tui v0.1.0 (/Users/tzury/helix/helix-tui)
   Compiling thiserror-impl v1.0.25
   Compiling tokio-macros v1.2.0
   Compiling serde_repr v0.1.7
   Compiling thiserror v1.0.25
   Compiling etcetera v0.3.2
   Compiling tokio-stream v0.1.6
   Compiling toml v0.5.8
   Compiling url v2.2.2
   Compiling jsonrpc-core v17.1.0 (https://github.com/paritytech/jsonrpc#609d7a6c)
   Compiling lsp-types v0.89.1
   Compiling helix-core v0.1.0 (/Users/tzury/helix/helix-core)
   Compiling helix-lsp v0.1.0 (/Users/tzury/helix/helix-lsp)
error[E0658]: use of unstable library feature 'bool_to_option'
   --> helix-lsp/src/client.rs:473:32
    |
473 |             text: include_text.then(|| text.into()),
    |                                ^^^^
    |
    = note: see issue #64260 <https://github.com/rust-lang/rust/issues/64260> for more information

error: aborting due to previous error

For more information about this error, try `rustc --explain E0658`.
error: could not compile `helix-lsp`

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: failed to compile `helix-term v0.1.0 (/Users/tzury/helix/helix-term)`, intermediate artifacts can be found at `/Users/tzury/helix/target`

Caused by:
  build failed

Panic opening hx

I get this running on Windows. I am running in the clone folder itself.

thread 'main' panicked at 'index out of bounds: the len is 2496 but the index is 2496', helix-tui\src\buffer.rs:185:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Search stops working when match jumps over an Unicode symbols

When searching using /, going to the next match using n stops working when you've passed the character .

Environment

  • hx v0.0.9
  • helix-term 0.1.0

Steps to reproduce

Given the following file:

test:
key
⽆
key
key
  1. Put your cursor at the first line test:. Search for key using /key
  2. Press n for next match
  3. Press n for next match (does not work)

Panic on non-UTF-8 files

For example trying to open the hx binary:

❯ hx target/debug/hx
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: stream did not contain valid UTF-8', helix-term/src/main.rs:117:46
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

I don't know if there is a plan to support other text encodings but it sure would be nice to just be able to view a raw binary file as a fallback. The current implementation of Document uses Rope internally, from what I've seen it accepts only valid UTF-8 so not really sure how it could be handled here.

packages.aarch64-linux.helix does not build

revision: c2e6b9f
command run: nix build github:helix-editor/helix#packages.aarch64-linux.helix
nix log:

@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking sources
unpacking source archive /nix/store/9rnfggm9r7k7rxz1bkl3icmmzinpdnhf-dummy-src
source root is dummy-src
@nix { "action": "setPhase", "phase": "patchPhase" }
patching sources
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "configurePhase" }
configuring
[naersk] cargo_version (read): 1.53.0-nightly (4369396ce 2021-04-27)
[naersk] cargo_message_format (set): json-diagnostic-rendered-ansi
[naersk] cargo_release: --release
[naersk] cargo_options: -Z unstable-options
[naersk] cargo_build_options: $cargo_release -j "$NIX_BUILD_CORES" --out-dir out --message-format=$cargo_message_format
[naersk] cargo_test_options: $cargo_release -j "$NIX_BUILD_CORES"
[naersk] RUST_TEST_THREADS: 6
[naersk] cargo_bins_jq_filter: .
[naersk] cargo_build_output_json (created): /build/tmp.bl4oqH4Y6P
[naersk] crate_sources: /nix/store/6f7xan6f575bx24p0w2fxgbpqb9lminm-crates-io
[naersk] RUSTFLAGS: 
[naersk] CARGO_BUILD_RUSTFLAGS: 
[naersk] CARGO_BUILD_RUSTFLAGS (updated): --remap-path-prefix /nix/store/6f7xan6f575bx24p0w2fxgbpqb9lminm-crates-io=/sources
@nix { "action": "setPhase", "phase": "buildPhase" }
building
cargo -Z unstable-options build $cargo_release -j "$NIX_BUILD_CORES" --out-dir out --message-format=$cargo_message_format
�[0m�[0m�[1m�[32m    Updating�[0m git repository `https://github.com/paritytech/jsonrpc`
�[0m�[0m�[1m�[33mwarning�[0m�[1m:�[0m spurious network error (2 tries remaining): failed to resolve address for github.com: Name or service not known; class=Net (12)
�[0m�[0m�[1m�[33mwarning�[0m�[1m:�[0m spurious network error (1 tries remaining): failed to resolve address for github.com: Name or service not known; class=Net (12)
�[0m�[0m�[1m�[31merror�[0m�[1m:�[0m failed to get `jsonrpc-core` as a dependency of package `helix-lsp v0.1.0 (/build/dummy-src/helix-lsp)`

Caused by:
  failed to load source for dependency `jsonrpc-core`

Caused by:
  Unable to update https://github.com/paritytech/jsonrpc#609d7a6c

Caused by:
  failed to clone into: /build/dummy-src/.cargo-home/git/db/jsonrpc-22a65938f7d26b63

Caused by:
  network failure seems to have happened
  if a proxy or similar is necessary `net.git-fetch-with-cli` may help here
  https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli

Caused by:
  failed to resolve address for github.com: Name or service not known; class=Net (12)
[naersk] cargo returned with exit code 101, exiting

panic with "S" on Selection manipulation on windows

content is

asdf
asdf
asdf
  1. select all content
  2. “S”
  3. "a"
thread 'main' panicked at 'Attempt to index past end of slice: char index 18446744073709551615, slice char length 21', C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\ropey-1.2.0\src\slice.rs:301:9
stack backtrace:
   0:     0x7ff6255d17ce - <unknown>
   1:     0x7ff6255edabc - <unknown>
   2:     0x7ff6255cd6b8 - <unknown>
   3:     0x7ff6255d473d - <unknown>
   4:     0x7ff6255d4209 - <unknown>
   5:     0x7ff6252e5103 - <unknown>
   6:     0x7ff6255d4e25 - <unknown>
   7:     0x7ff6255d4991 - <unknown>
   8:     0x7ff6255d20ef - <unknown>
   9:     0x7ff6255d48e9 - <unknown>
  10:     0x7ff6256f22cc - tree_sitter_typescript
  11:     0x7ff6254c7ce5 - <unknown>
  12:     0x7ff6254cc7cb - <unknown>
  13:     0x7ff62539b4d0 - <unknown>
  14:     0x7ff62530cacc - <unknown>
  15:     0x7ff62530b45b - <unknown>
  16:     0x7ff6252d810b - <unknown>
  17:     0x7ff6252f93d9 - <unknown>
  18:     0x7ff6252d5e95 - <unknown>
  19:     0x7ff62527197a - <unknown>
  20:     0x7ff62526ce62 - <unknown>
  21:     0x7ff625264fc6 - <unknown>
  22:     0x7ff625264fea - <unknown>
  23:     0x7ff6255d4f87 - <unknown>
  24:     0x7ff62526d6b7 - <unknown>
  25:     0x7ff6256da744 - tree_sitter_typescript
  26:     0x7ffedce17034 - BaseThreadInitThunk
  27:     0x7ffede042651 - RtlUserThreadStart

Issues with `pyls`

Seems like Helix panics when it tries to open Python files specifically, I tried both large and small files, it panicked on both, both when the file is given using the CLI and both when selected through the :open <file.py> option.
I was able to open TOML, Rust, C, C++, txt, XML, CSV, JSON perfectly well.

❯ hx ~/path/to/file.py
thread 'tokio-runtime-worker' panicked at 'called `Option::unwrap()` on a `None` value', helix-lsp/src/transport.rs:103:60
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', helix-lsp/src/client.rs:156:18

Reproducible in both helix-git and helix-bin AUR packages.
(Seems like it also panics when I try to extract the version on the helix-git package)

❯ hx --version
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: No such file or directory (os error 2)', helix-term/src/main.rs:117:46
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Active Rust versions:

nightly-x86_64-unknown-linux-gnu (default)
rustc 1.54.0-nightly (657bc0188 2021-05-31)

Publish to crates.io

Not sure if this is the right place to request. If this is not the right place, please redirect me to the correct one.

Let's publish this to crates.io, so that we can do something like
cargo install helix-editor given helix is already taken.

Panic when selecting the entire buffer and deleting its contents

Environment

  • hx v0.0.9
  • helix-term 0.1.0
Stack backtrace

thread 'main' panicked at 'Attempt to index past end of Rope: char index 0, Rope char length 0', /Users/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/ropey-1.2.0/src/rope.rs:996:9
stack backtrace:
   0:        0x1007cfb44 - __mh_execute_header
   1:        0x1007edc8e - __mh_execute_header
   2:        0x1007cb956 - __mh_execute_header
   3:        0x1007d1ce9 - __mh_execute_header
   4:        0x1007d17d0 - __mh_execute_header
   5:        0x1003773fd - __mh_execute_header
   6:        0x1007d2378 - __mh_execute_header
   7:        0x1007d1e95 - __mh_execute_header
   8:        0x1007cffa8 - __mh_execute_header
   9:        0x1007d1dfa - __mh_execute_header
  10:        0x100810c8b - __mh_execute_header
  11:        0x1003bc489 - __mh_execute_header
  12:        0x1003b9388 - __mh_execute_header
  13:        0x100390760 - __mh_execute_header
  14:        0x1003bf13a - __mh_execute_header
  15:        0x1003b44c2 - __mh_execute_header
  16:        0x100375c7d - __mh_execute_header
  17:        0x1003aea41 - __mh_execute_header
  18:        0x100328b3f - __mh_execute_header
  19:        0x10034cf3d - __mh_execute_header
  20:        0x1003c924a - __mh_execute_header
  21:        0x1003c9271 - __mh_execute_header
  22:        0x1007d26c4 - __mh_execute_header
  23:        0x10034d069 - __mh_execute_header

Steps to reproduce

  1. Open an existing file.
  2. Select the entire file using %.
  3. Delete its contents using d.
  4. Press any movement key.

Panic when trying to open files in $HOME

Present-working-directory of shell is located at $HOME/Downloads/helix-editor/helix

  1. $ RUST_BACKTRACE=1 hx
  2. :open ../../ (Panic occurs when second slash is typed)

thread 'main' panicked at 'index out of bounds: the len is 10070 but the index is 61356', helix-tui/src/buffer.rs:185:14
stack backtrace:
0: rust_begin_unwind
at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/std/src/panicking.rs:493:5
1: core::panicking::panic_fmt
at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/core/src/panicking.rs:92:14
2: core::panicking::panic_bounds_check
at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/core/src/panicking.rs:69:5
3: helix_tui::buffer::Buffer::clear_with
4: <hx::ui::prompt::Prompt as hx::compositor::Component>::render
5: hx::compositor::Compositor::render
6: hx::main::{{closure}}
7: tokio::runtime::enter::Enter::block_on
8: tokio::runtime::Runtime::block_on
9: hx::main
note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace.

Ubuntu 20.04.2 LTS

Crash when deleting a line

thread 'main' panicked at 'Attempt to slice past end of RopeSlice: slice end 1, RopeSlice length 0', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/ropey-1.2.0/src/slice.rs:784:9

To reproduce:
Press dd on an empty file

(dupe of #16)

Panics on smaller terminal sizes

Helix still panics when the overall terminal size is too small, I haven't pinned down the exact width to trigger it to panic, but I'm sure someone will figure it out soon enough.

Panics when issuing keys `d f n` on an empty buffer

When open on an empty buffer, hitting the keys dfn causes a panic:

thread 'main' panicked at 'Attempt to index past end of RopeSlice: char index 1, RopeSlice char length 0', /Users/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/ropey-1.2.0/src/slice.rs:917:9
stack backtrace:
   0:        0x108655354 - __mh_execute_header
   1:        0x10867327e - __mh_execute_header
   2:        0x108651166 - __mh_execute_header
   3:        0x1086574f9 - __mh_execute_header
   4:        0x108656fe0 - __mh_execute_header
   5:        0x10820bb9a - __mh_execute_header
   6:        0x108657b88 - __mh_execute_header
   7:        0x1086576a5 - __mh_execute_header
   8:        0x1086557b8 - __mh_execute_header
   9:        0x10865760a - __mh_execute_header
  10:        0x108695ebb - __mh_execute_header
  11:        0x10841a6d5 - __mh_execute_header
  12:        0x1081af951 - __mh_execute_header
  13:        0x108229285 - __mh_execute_header
  14:        0x108247b57 - __mh_execute_header
  15:        0x108207d6d - __mh_execute_header
  16:        0x108243bac - __mh_execute_header
  17:        0x1081bfe8f - __mh_execute_header
  18:        0x10820e34a - __mh_execute_header
  19:        0x10825d27a - __mh_execute_header
  20:        0x10825772c - __mh_execute_header
  21:        0x108657ed4 - __mh_execute_header
  22:        0x10820e729 - __mh_execute_header

Version: 0.0.6 (prebuilt)
OS: macos

Panic when inserting non-ascii character.

I insert 一a and it paniced. 0a6672c

thread 'main' panicked at 'assertion failed: self.len_after == other.len', helix-core/src/transaction.rs:127:9
stack backtrace:
   0: rust_begin_unwind
             at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/std/src/panicking.rs:493:5
   1: core::panicking::panic_fmt
             at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/core/src/panicking.rs:92:14
   2: core::panicking::panic
             at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/core/src/panicking.rs:50:5
   3: helix_core::transaction::ChangeSet::compose
             at ./helix-core/src/transaction.rs:127:9
   4: helix_view::document::Document::apply::{{closure}}
             at ./helix-view/src/document.rs:331:17
   5: helix_view::document::take_with::{{closure}}
             at ./helix-view/src/document.rs:61:68
   6: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:344:9
   7: std::panicking::try::do_call
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:379:40
   8: __rust_try
   9: std::panicking::try
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:343:19
  10: std::panic::catch_unwind
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:431:14
  11: helix_view::document::take_with
             at ./helix-view/src/document.rs:61:21
  12: helix_view::document::Document::apply
             at ./helix-view/src/document.rs:330:13
  13: hx::commands::insert::insert_char
             at ./helix-term/src/commands.rs:1613:17
  14: hx::ui::editor::EditorView::insert_mode
             at ./helix-term/src/ui/editor.rs:476:13
  15: <hx::ui::editor::EditorView as hx::compositor::Component>::handle_event
             at ./helix-term/src/ui/editor.rs:579:33
  16: hx::compositor::Compositor::handle_event
             at ./helix-term/src/compositor.rs:112:19
  17: hx::application::Application::handle_terminal_events
             at ./helix-term/src/application.rs:132:32
  18: hx::application::Application::event_loop::{{closure}}
             at ./helix-term/src/application.rs:96:21
  19: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
  20: hx::application::Application::run::{{closure}}
             at ./helix-term/src/application.rs:254:9
  21: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
  22: hx::main::{{closure}}
             at ./helix-term/src/main.rs:121:5
  23: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
  24: tokio::park::thread::CachedParkThread::block_on::{{closure}}
             at /home/ivan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/park/thread.rs:263:54
  25: tokio::coop::with_budget::{{closure}}
             at /home/ivan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/coop.rs:106:9
  26: std::thread::local::LocalKey<T>::try_with
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:272:16
  27: std::thread::local::LocalKey<T>::with
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:248:9
  28: tokio::coop::with_budget
             at /home/ivan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/coop.rs:99:5
  29: tokio::coop::budget
             at /home/ivan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/coop.rs:76:5
  30: tokio::park::thread::CachedParkThread::block_on
             at /home/ivan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/park/thread.rs:263:31
  31: tokio::runtime::enter::Enter::block_on
             at /home/ivan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/runtime/enter.rs:151:13
  32: tokio::runtime::thread_pool::ThreadPool::block_on
             at /home/ivan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/runtime/thread_pool/mod.rs:71:9
  33: tokio::runtime::Runtime::block_on
             at /home/ivan/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/runtime/mod.rs:452:43
  34: hx::main
             at ./helix-term/src/main.rs:123:5
  35: core::ops::function::FnOnce::call_once
             at /home/ivan/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5

Failed to initialize logging on read-only HOME

I'm on Debian Jessie but the HOME is read-only atm.
So I set CARGO_HOME to a writable location and installed helix from source as specified in the README.
The runtime folder was copied to $CARGO_HOME/bin.
I tested this setup on another machine (OSX) with writable home and it works properly there.
On the Debian however, I get

Error: failed to initialize logging

Caused by:
    Read-only file system (os error 30)

when starting hx.

Resize to larger screen too slow

Terminal kakoune
Helix using latest master 661dbdc

When resizing terminal to a larger terminal size (full size), it takes like 2-3 wall clock seconds, but resizing it to a smaller terminal size doesn't cost much. It's like lagged for a bit.

index out of bounds on Windows

when I run the command hx (v0.0.6 binary from the release page) on Windows 10 it panics immediately with

thread 'main' panicked at 'index out of bounds: the len is 3451 but the index is 3451', helix-tui\src\buffer.rs:185:14

I'm using Windows Terminal, and the len changes depending on the terminal size.

List of mwes that panic

These are minimal working examples of inputs after hx that cause a panic, tested on ubuntu and macOS.

j, b

j, w

j, e

j, f, f

d, f, f

d, f, n

i, a, esc, b, w

i, a, esc, b, e

and someone else brought up d, d.

I tried making the calls to slice.char(_) safe in the varioushelix-core::movement functions, but that caused off by ones in coords_at_pos and something in the compositor, I'm not sure if it's because of bad indexing elsewhere, or if my "fixes" aren't obeying rules about the anchor/head points for Range. Others have also noted that it seems like you can move down one more line than you would be able to in IE kakoune, but that doesn't seem to explain the d, d or b cases.

Just poking around, there seems to be a lot of interaction with ropey via partial functions which may not be ideal in the long run. It's a bummer that ropey doesn't seem to offer total versions of the indexing functions.

Cool project by the way, I wish you the best of luck.

Panic when trying to run heilx on non-existent file

Running hx on a non-existent file (to create it) will panic on osx. File has to be created before hx can open/edit

hx test.go
---
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: No such file or directory (os error 2)', helix-term/src/main.rs:117:46

File picker does not match all files

In the root of my current project I have a Gemfile. In a sub directory relative to the root I also have a Gemfile. Opening the file picker and searching for Gemfile only result in sub-directory/Gemfile. The root Gemfile isn't matched. In fact, a lot of the root level files aren't matched. Rakefile and Procfile are not matched while Dockerfile and Guardfile are.

In a smaller project, these files are found just fine.

Looks like this might be the culprit

const MAX: usize = 2048;
Picker::new(
files.take(MAX).collect(),

If the project is large enough, this might exclude files exceeding MAX. Since the picker isn't updating the set of files upon filtering, some files will always be excluded.

My Rust knowledge is pretty much non-existent, but would it make sense to pass the iterator directly to the picker and let the Picker limit the iterator after matching?

matches.extend(
self.options
.iter()
.enumerate()
.filter_map(|(index, option)| {
// TODO: maybe using format_fn isn't the best idea here
let text = (format_fn)(option);
// TODO: using fuzzy_indices could give us the char idx for match highlighting
matcher
.fuzzy_match(&text, pattern)
.map(|score| (index, score))
}),
);

So if self.options now is the files iterator containing all results, we could limit the results by adding .take(MAX) at the end and end up with something like:

 self.options
    .enumerate()
    .filter_map(|(index, option)| {
        let text = (format_fn)(option);
        matcher.fuzzy_match(&text, pattern).map(|score| (index, score))
    })
    .take(MAX),

Is there any tutorial materials on how to write extension for Helix?

This work seems very elegant :) For daily usage it would be better to create some customary key-bindings and some scripts to invoke command line applications. I am wondering that if there is some contents describe the way to do so. Rust is indeed a good language, hope they can compose well

Panic in command prompt: Trying to access position outside the buffer

To reproduce:

  1. start helix with cargo run
  2. press :q

I am on arch linux, using xterm. This looks like off-by-one error handling terminal screen size.

$ RUST_BACKTRACE=1 cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.83s
     Running `target/debug/hx`
thread 'main' panicked at 'Trying to access position outside the buffer: x=89, y=45, area=Rect { x: 0, y: 0, width: 89, height: 50 }', helix-tui/src/buffer.rs:217:9
stack backtrace:
   0: rust_begin_unwind
             at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/std/src/panicking.rs:493:5
   1: std::panicking::begin_panic_fmt
             at /rustc/9bc8c42bb2f19e745a63f3445f1ac248fb015e53/library/std/src/panicking.rs:435:5
   2: helix_tui::buffer::Buffer::index_of
             at ./helix-tui/src/buffer.rs:217:9
   3: helix_tui::buffer::Buffer::get_mut
             at ./helix-tui/src/buffer.rs:184:17
   4: helix_tui::buffer::Buffer::clear_with
             at ./helix-tui/src/buffer.rs:395:28
   5: hx::ui::prompt::Prompt::render_prompt
             at ./helix-term/src/ui/prompt.rs:166:13
   6: <hx::ui::prompt::Prompt as hx::compositor::Component>::render
             at ./helix-term/src/ui/prompt.rs:267:9
   7: hx::compositor::Compositor::render
             at ./helix-term/src/compositor.rs:129:13
   8: hx::application::Application::render
             at ./helix-term/src/application.rs:79:9
   9: hx::application::Application::handle_terminal_events
             at ./helix-term/src/application.rs:138:13
  10: hx::application::Application::event_loop::{{closure}}
             at ./helix-term/src/application.rs:96:21
  11: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /home/rsalminen/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
  12: hx::application::Application::run::{{closure}}
             at ./helix-term/src/application.rs:254:9
  13: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /home/rsalminen/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
  14: hx::main::{{closure}}
             at ./helix-term/src/main.rs:116:9
  15: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /home/rsalminen/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/mod.rs:80:19
  16: tokio::park::thread::CachedParkThread::block_on::{{closure}}
             at /home/rsalminen/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/park/thread.rs:263:54
  17: tokio::coop::with_budget::{{closure}}
             at /home/rsalminen/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/coop.rs:106:9
  18: std::thread::local::LocalKey<T>::try_with
             at /home/rsalminen/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:272:16
  19: std::thread::local::LocalKey<T>::with
             at /home/rsalminen/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/thread/local.rs:248:9
  20: tokio::coop::with_budget
             at /home/rsalminen/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/coop.rs:99:5
  21: tokio::coop::budget
             at /home/rsalminen/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/coop.rs:76:5
  22: tokio::park::thread::CachedParkThread::block_on
             at /home/rsalminen/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/park/thread.rs:263:31
  23: tokio::runtime::enter::Enter::block_on
             at /home/rsalminen/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/runtime/enter.rs:151:13
  24: tokio::runtime::thread_pool::ThreadPool::block_on
             at /home/rsalminen/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/runtime/thread_pool/mod.rs:71:9
  25: tokio::runtime::Runtime::block_on
             at /home/rsalminen/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.6.1/src/runtime/mod.rs:452:43
  26: hx::main
             at ./helix-term/src/main.rs:115:5
  27: core::ops::function::FnOnce::call_once
             at /home/rsalminen/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

commit f4560cb (HEAD -> master, origin/master, origin/HEAD)
Author: Blaž Hrastnik [email protected]
Date: Wed Jun 2 14:57:43 2021 +0900

panics when deleting from empty buffer

I just installed helix using cargo. Running hx and then immediately typing dd causes:

thread 'main' panicked at 'Attempt to slice past end of RopeSlice: slice end 1, RopeSlice length 0'

The first input of d also causes the line number 1 to disappear.

When file picker is open and window is resized the main thread panics

As the title says, when the file picker window is open and I split the terminal window verticaly using tmux there is a panic:

thread 'main' panicked at 'index out of bounds: the len is 3780 but the index is 3780', helix-tui/src/buffer.rs:185:14

When I first split the window and then open the file picker it correctly scales later on when the split is closed and opened again.

External command support

Will there be any external command support? I think that would provide a way to do what internal command missing on early stage, like grep, git etc.

Panic with 'J' on a single line file.

thread 'main' panicked at 'Attempt to index past end of slice: line index 1, slice line length 1', C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\ropey-1.2.0\src\slice.rs:534:9

homebrew tap private?

brew tap helix-editor/helix expects the homebrew tap to resolve to https://github.com/helix-editor/homebrew-helix, but I cannot see that repository.

Open folders cause errors

I would like to navigate the directory, sort of like NERDTree in vim.

Is this possible?
Also is it possible to open folder?

I run:

❯ ~/Downloads/helix-v0.0.7-x86_64-linux/hx .

To open the current folder and its files. But i get:

❯ ~/Downloads/helix-v0.0.7-x86_64-linux/hx .
Error: unable to create new appliction

Caused by:
    Is a directory (os error 21)

Add documentation on adding the runtime variable for specific languages (go, Typescript, Rust)

Hello!
I love the project! ❤️

However I cannot seem to get my head around setting the runtime variable to get syntax highllighting and stuffz for my Go projects or Typescript/Javascript or Rust projects.

I move the hx binary into the different projects, however it does not seem to pickup the runtime.
Could you provide a example for let's say a Go project using go.mod and explicitly setting the HELIX_RUNTIME variable for that?

Gui

I noticed that your website references creating a gui with skia/skulpin. That sounds very similar to my architecture for neovide which is a gui for neovim.

A not broadly stated goal for neovide is to eventually expose the graphical parts as a swappable front end for other text editors such as what helix looks like. I was curious if you are interested in such a collaboration. Getting a gui right is hard work (as I've found out), I think collaborating would be great for both use cases!

Are you planning on exposing a gui protocol ala neovim's? If so what would that look like/what features do you think would be useful for helix that are unique to helix? The editor looks very cool btw!

PAnics when adding a new line, no syntax highlighting for rust

❯ hx ~/Programming/workon/src/main.rs
thread 'main' panicked at 'Attempt to index past end of Rope: char index 1662, Rope char length 1662', /home/niedzwiedz/.cargo/registry/src/github.com-1ecc6299db9ec823/ropey-1.2.0/src/rope.rs:996:9
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
that's when I try to add a new line to the end of a file

Error on windows

>hx.exe
thread 'main' panicked at 'index out of bounds: the len is 1892 but the index is 1892', helix-tui\src\buffer.rs:185:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.