Rename extend indent captures.

Clarify comments in indent code.
pull/4202/head
Daniel Ebert 2 years ago committed by Blaž Hrastnik
parent dc443487d4
commit 081327695f

@ -46,16 +46,16 @@ capture on the same line, the indent level isn't changed at all.
- `@outdent` (default scope `all`): - `@outdent` (default scope `all`):
Decrease the indent level by 1. The same rules as for `@indent` apply. Decrease the indent level by 1. The same rules as for `@indent` apply.
- `@extend-indented`: - `@extend`:
Extend the range of this node to the end of the line and to lines that Extend the range of this node to the end of the line and to lines that
are indented more than the line that this node starts on. This is useful are indented more than the line that this node starts on. This is useful
for languages like Python, where for the purpose of indentation some nodes for languages like Python, where for the purpose of indentation some nodes
(like functions or classes) should also contain indented lines that follow them. (like functions or classes) should also contain indented lines that follow them.
- `@stop-extend`: - `@extend.prevent-once`:
Prevents the first extension of an ancestor of this node. For example, in Python Prevents the first extension of an ancestor of this node. For example, in Python
a return expression always ends the block that it is in. Note that this only stops the a return expression always ends the block that it is in. Note that this only stops the
extension of the next `@extend-indented` capture. If multiple ancestors are captured, extension of the next `@extend` capture. If multiple ancestors are captured,
only the extension of the innermost one is prevented. All other ancestors are unaffected only the extension of the innermost one is prevented. All other ancestors are unaffected
(regardless of whether the innermost ancestor would actually have been extended). (regardless of whether the innermost ancestor would actually have been extended).

@ -303,8 +303,8 @@ enum IndentScope {
/// A capture from the indent query which does not define an indent but extends /// A capture from the indent query which does not define an indent but extends
/// the range of a node. This is used before the indent is calculated. /// the range of a node. This is used before the indent is calculated.
enum ExtendCapture { enum ExtendCapture {
ExtendIndented, Extend,
StopExtend, PreventOnce,
} }
/// The result of running a tree-sitter indent query. This stores for /// The result of running a tree-sitter indent query. This stores for
@ -394,18 +394,18 @@ fn query_indents(
let capture_type = match capture_name { let capture_type = match capture_name {
"indent" => IndentCaptureType::Indent, "indent" => IndentCaptureType::Indent,
"outdent" => IndentCaptureType::Outdent, "outdent" => IndentCaptureType::Outdent,
"extend-indented" => { "extend" => {
extend_captures extend_captures
.entry(capture.node.id()) .entry(capture.node.id())
.or_insert_with(|| Vec::with_capacity(1)) .or_insert_with(|| Vec::with_capacity(1))
.push(ExtendCapture::ExtendIndented); .push(ExtendCapture::Extend);
continue; continue;
} }
"stop-extend" => { "extend.prevent-once" => {
extend_captures extend_captures
.entry(capture.node.id()) .entry(capture.node.id())
.or_insert_with(|| Vec::with_capacity(1)) .or_insert_with(|| Vec::with_capacity(1))
.push(ExtendCapture::StopExtend); .push(ExtendCapture::PreventOnce);
continue; continue;
} }
_ => { _ => {
@ -478,10 +478,10 @@ fn extend_nodes<'a>(
if let Some(captures) = extend_captures.get(&deepest_preceding.id()) { if let Some(captures) = extend_captures.get(&deepest_preceding.id()) {
for capture in captures { for capture in captures {
match capture { match capture {
ExtendCapture::StopExtend => { ExtendCapture::PreventOnce => {
stop_extend = true; stop_extend = true;
} }
ExtendCapture::ExtendIndented => { ExtendCapture::Extend => {
node_captured = true; node_captured = true;
// We extend the node if // We extend the node if
// - the cursor is on the same line as the end of the node OR // - the cursor is on the same line as the end of the node OR
@ -574,8 +574,8 @@ pub fn treesitter_indent_for_pos(
.descendant_for_byte_range(byte_pos, byte_pos)?; .descendant_for_byte_range(byte_pos, byte_pos)?;
let (query_result, deepest_preceding) = { let (query_result, deepest_preceding) = {
// The query range should intersect with all nodes directly preceding // The query range should intersect with all nodes directly preceding
// the cursor in case one of them is extended. // the position of the indent query in case one of them is extended.
let mut deepest_preceding = None; // The deepest node preceding the cursor let mut deepest_preceding = None; // The deepest node preceding the indent query position
let mut tree_cursor = node.walk(); let mut tree_cursor = node.walk();
for child in node.children(&mut tree_cursor) { for child in node.children(&mut tree_cursor) {
if child.byte_range().end <= byte_pos { if child.byte_range().end <= byte_pos {

@ -36,7 +36,7 @@
(function_definition) (function_definition)
(class_definition) (class_definition)
] @extend-indented ] @extend
[ [
(return_statement) (return_statement)
@ -44,7 +44,7 @@
(continue_statement) (continue_statement)
(raise_statement) (raise_statement)
(pass_statement) (pass_statement)
] @stop-extend ] @extend.prevent-once
[ [
")" ")"

Loading…
Cancel
Save