Ben White-Horne

Results 29 issues of Ben White-Horne

Rewrite of Sapling's initial prototype. The main change is that ASTs are now stored as concrete trees (i.e. trees of formatted tokens) specified by dynamically loaded `Grammar`s. This means that,...

To make implementation easier, the different modes in Sapling are implemented as a state machine (technically a DFA). So each 'mode' should have a struct which implements [`editor::state::State`](https://github.com/kneasle/sapling/blob/master/src/editor/state.rs#L28) (like [`editor::normal_mode::State`](https://github.com/kneasle/sapling/blob/1c57e649bce8539b224e79e93d7464784148facd/src/editor/normal_mode.rs#L30))....

Ideally, we'd have `log::trace!` in every function, and `log::debug!` when debug output might be useful.

good first issue

Suppose that the cursor is over a field in an object (cursor in ``): ```json { } ``` If we type `rt` at this point will result in the following...

bug

Currently there is no good documentation for how `Path`s are used to traverse trees. This is fairly non-trivial and for the longevity of Sapling it would be good to document...

documentation

As said in the README, this is a very difficult challenge. I believe that the closest project to this is [tree-sitter](https://github.com/tree-sitter/tree-sitter), and to be pragmatic I think that (at least...

enhancement
'extra fun challenge'

Currently, Sapling will never free up space in the arena even if history is rewritten and some trees will never be reached. This is essentially a memory leak, and will...

help wanted

Currently `ImageBuffer` uses `#[derive(Debug)]`, which prints something like this (where every channel of every pixel is printed): ``` ImageBuffer { width: 64, height: 64, _phantom: PhantomData, data: [ 0, 0,...

easy

I'm not sure why this is happening, but when I use tuikit in a Rust application the cursor in my terminal disappears after I run that Rust application. So as...

Currently, the [minor mode sections of the book](https://docs.helix-editor.com/keymap.html#view-mode) don't actually contain the key needed to reach them. Finding this requires an unpleasant amount of forward/backward searching. So this PR adds...