Change behaviour of next and previous node
This commit is contained in:
parent
64d1ab66f9
commit
32a77b3a31
35
src/main.rs
35
src/main.rs
|
@ -132,13 +132,21 @@ fn handle_request(config: &Config, request: &Request) -> String {
|
||||||
'outer_next: for range in &ranges {
|
'outer_next: for range in &ranges {
|
||||||
let node = tree::shrink_to_range(tree.root_node(), range);
|
let node = tree::shrink_to_range(tree.root_node(), range);
|
||||||
let mut cursor = traverse_up_to_node_which_matters(filetype_config, node);
|
let mut cursor = traverse_up_to_node_which_matters(filetype_config, node);
|
||||||
while let Some(node) = cursor.next_named_sibling() {
|
loop {
|
||||||
if filetype_config.is_node_visible(node) && node_of_kinds(node, &kinds) {
|
while let Some(node) = cursor.next_named_sibling() {
|
||||||
new_ranges.push(node.range());
|
if filetype_config.is_node_visible(node) && node_of_kinds(node, &kinds) {
|
||||||
continue 'outer_next;
|
new_ranges.push(node.range());
|
||||||
|
continue 'outer_next;
|
||||||
|
}
|
||||||
|
cursor = node;
|
||||||
|
}
|
||||||
|
if let Some(parent) = cursor.parent() {
|
||||||
|
cursor = parent;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
cursor = node;
|
|
||||||
}
|
}
|
||||||
|
// TODO: Do we want this behaviour?
|
||||||
let node = find_parent_of_interest(filetype_config, node, &kinds);
|
let node = find_parent_of_interest(filetype_config, node, &kinds);
|
||||||
new_ranges.push(node.range());
|
new_ranges.push(node.range());
|
||||||
}
|
}
|
||||||
|
@ -151,12 +159,19 @@ fn handle_request(config: &Config, request: &Request) -> String {
|
||||||
'outer_prev: for range in &ranges {
|
'outer_prev: for range in &ranges {
|
||||||
let node = tree::shrink_to_range(tree.root_node(), range);
|
let node = tree::shrink_to_range(tree.root_node(), range);
|
||||||
let mut cursor = traverse_up_to_node_which_matters(filetype_config, node);
|
let mut cursor = traverse_up_to_node_which_matters(filetype_config, node);
|
||||||
while let Some(node) = cursor.prev_named_sibling() {
|
loop {
|
||||||
if filetype_config.is_node_visible(node) && node_of_kinds(node, &kinds) {
|
while let Some(node) = cursor.prev_named_sibling() {
|
||||||
new_ranges.push(node.range());
|
if filetype_config.is_node_visible(node) && node_of_kinds(node, &kinds) {
|
||||||
continue 'outer_prev;
|
new_ranges.push(node.range());
|
||||||
|
continue 'outer_prev;
|
||||||
|
}
|
||||||
|
cursor = node;
|
||||||
|
}
|
||||||
|
if let Some(parent) = cursor.parent() {
|
||||||
|
cursor = parent;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
cursor = node;
|
|
||||||
}
|
}
|
||||||
let node = find_parent_of_interest(filetype_config, node, &kinds);
|
let node = find_parent_of_interest(filetype_config, node, &kinds);
|
||||||
new_ranges.push(node.range());
|
new_ranges.push(node.range());
|
||||||
|
|
Loading…
Reference in New Issue
Block a user