You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
helix-plus/helix-core/src
Michael Davis 3e84434c69 Fix panic from indenting on tree with errors
`deepest_preceding` is known to be a descendant of `node`. Repeated
calls of `Node::parent` _should_ eventually turn `deepest_preceding`
into `node`, but when the node is errored (the tree contains a syntax
error), `Node::parent` returns None.

In the typescript case:

    if(true) &&true
    //      ^ press enter here

The tree is:

    (program [0, 0] - [1, 0]
      (if_statement [0, 0] - [0, 15]
        condition: (parenthesized_expression [0, 2] - [0, 8]
          (true [0, 3] - [0, 7]))
        consequence: (expression_statement [0, 8] - [0, 15]
          (binary_expression [0, 8] - [0, 15]
            left: (identifier [0, 8] - [0, 8])
            right: (true [0, 11] - [0, 15])))))

`node` is the `program` node and `deepest_preceding` is the
`binary_expression`. The tree is errored on the `binary_expression`
node with `(MISSING identifier [0, 8] - [0, 8])`.

In the C++ case:

    ; <<
    // press enter after the ';'

The tree is:

    (translation_unit [0, 0] - [1, 0]
      (expression_statement [0, 0] - [0, 1])
      (ERROR [0, 1] - [0, 4]
        (identifier [0, 1] - [0, 1])))

`node` is the `translation_unit` and `deepest_preceding` is the `ERROR`
node.

In both cases, `Node::parent` on the errored node returns None.
2 years ago
..
increment Resolve a bunch of upcoming clippy lints 2 years ago
auto_pairs.rs Fix multi byte auto pairs (#4024) 2 years ago
chars.rs Temporarily turn on unicode-lines 3 years ago
comment.rs core: Move state into the history module 2 years ago
config.rs Add support for local language configuration (#1249) 3 years ago
diagnostic.rs diagnostics: Use Vec<Tag> instead of Option<Vec<Tag>> 2 years ago
diff.rs Fix Clippy lints in tests (#1563) 3 years ago
graphemes.rs Improve Readability (#2639) 3 years ago
history.rs core: Move state into the history module 2 years ago
indent.rs Fix panic from indenting on tree with errors 2 years ago
lib.rs core: Move state into the history module 2 years ago
line_ending.rs Resolve a bunch of upcoming clippy lints 2 years ago
macros.rs Split parts of helix-term into helix-view. 4 years ago
match_brackets.rs Fix match brackets comment (#1346) 3 years ago
movement.rs Use requested direction for new textobject selection range 2 years ago
object.rs Fix edge-case in tree-sitter expand_selection selection command (#2877) 2 years ago
path.rs Add workspace and document diagnostics picker (#2013) 2 years ago
position.rs feat: make `move_vertically` aware of tabs and wide characters (#2620) 2 years ago
register.rs fixes showing the last prompt on empty input (#2870) 2 years ago
search.rs Jump to the next number on the line before incrementing (#1778) 3 years ago
selection.rs Use requested direction for new textobject selection range 2 years ago
shellwords.rs Escape filenames in command completion 2 years ago
surround.rs Resolve a bunch of upcoming clippy lints 2 years ago
syntax.rs Resolve a bunch of upcoming clippy lints 2 years ago
test.rs Run clippy on workspace in CI (#4614) 2 years ago
textobject.rs Adjust `m` textobject description and minor code clarification (#3343) 2 years ago
transaction.rs fix tests 2 years ago
wrap.rs add reflow command (#2128) 3 years ago