mirror of https://github.com/helix-editor/helix
`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. |
||
---|---|---|
.. | ||
increment | ||
auto_pairs.rs | ||
chars.rs | ||
comment.rs | ||
config.rs | ||
diagnostic.rs | ||
diff.rs | ||
graphemes.rs | ||
history.rs | ||
indent.rs | ||
lib.rs | ||
line_ending.rs | ||
macros.rs | ||
match_brackets.rs | ||
movement.rs | ||
object.rs | ||
path.rs | ||
position.rs | ||
register.rs | ||
search.rs | ||
selection.rs | ||
shellwords.rs | ||
surround.rs | ||
syntax.rs | ||
test.rs | ||
textobject.rs | ||
transaction.rs | ||
wrap.rs |