helix/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.
2022-11-09 12:41:07 +09:00
..
increment Resolve a bunch of upcoming clippy lints 2022-11-04 21:06:28 +09:00
auto_pairs.rs Fix multi byte auto pairs (#4024) 2022-10-21 09:22:20 +09:00
chars.rs Temporarily turn on unicode-lines 2022-03-17 10:53:50 +09:00
comment.rs core: Move state into the history module 2022-11-08 21:03:54 +09:00
config.rs Add support for local language configuration (#1249) 2022-04-18 12:10:51 +09:00
diagnostic.rs diagnostics: Use Vec<Tag> instead of Option<Vec<Tag>> 2022-09-20 16:28:00 +09:00
diff.rs Fix Clippy lints in tests (#1563) 2022-01-23 16:37:23 +09:00
graphemes.rs Improve Readability (#2639) 2022-06-01 12:01:37 -05:00
history.rs core: Move state into the history module 2022-11-08 21:03:54 +09:00
indent.rs Fix panic from indenting on tree with errors 2022-11-09 12:41:07 +09:00
lib.rs core: Move state into the history module 2022-11-08 21:03:54 +09:00
line_ending.rs Resolve a bunch of upcoming clippy lints 2022-11-04 21:06:28 +09:00
macros.rs Split parts of helix-term into helix-view. 2020-09-21 18:24:16 +09:00
match_brackets.rs Fix match brackets comment (#1346) 2021-12-24 07:27:31 +05:30
movement.rs Use requested direction for new textobject selection range 2022-10-03 10:44:08 -04:00
object.rs Fix edge-case in tree-sitter expand_selection selection command (#2877) 2022-06-25 13:12:30 -05:00
path.rs Add workspace and document diagnostics picker (#2013) 2022-06-30 18:16:18 +09:00
position.rs feat: make `move_vertically` aware of tabs and wide characters (#2620) 2022-06-22 01:36:36 +09:00
register.rs fixes showing the last prompt on empty input (#2870) 2022-06-24 17:14:48 +02:00
search.rs Jump to the next number on the line before incrementing (#1778) 2022-04-01 22:14:37 +09:00
selection.rs Use requested direction for new textobject selection range 2022-10-03 10:44:08 -04:00
shellwords.rs Escape filenames in command completion 2022-11-07 13:38:16 +09:00
surround.rs Resolve a bunch of upcoming clippy lints 2022-11-04 21:06:28 +09:00
syntax.rs Resolve a bunch of upcoming clippy lints 2022-11-04 21:06:28 +09:00
test.rs Run clippy on workspace in CI (#4614) 2022-11-07 13:39:18 +09:00
textobject.rs Adjust `m` textobject description and minor code clarification (#3343) 2022-08-17 10:41:59 +09:00
transaction.rs fix tests 2022-11-08 22:20:32 +09:00
wrap.rs add reflow command (#2128) 2022-05-02 23:24:22 +09:00