Fix edge-case in tree-sitter expand_selection selection command (#2877)
Co-authored-by: Triton171 <triton0171@gmail.com>
This commit is contained in:
parent
18435899b2
commit
e1b1a5ebc0
1 changed files with 4 additions and 5 deletions
|
@ -2,12 +2,11 @@ use crate::{Range, RopeSlice, Selection, Syntax};
|
||||||
use tree_sitter::Node;
|
use tree_sitter::Node;
|
||||||
|
|
||||||
pub fn expand_selection(syntax: &Syntax, text: RopeSlice, selection: Selection) -> Selection {
|
pub fn expand_selection(syntax: &Syntax, text: RopeSlice, selection: Selection) -> Selection {
|
||||||
select_node_impl(syntax, text, selection, |descendant, from, to| {
|
select_node_impl(syntax, text, selection, |mut node, from, to| {
|
||||||
if descendant.start_byte() == from && descendant.end_byte() == to {
|
while node.start_byte() == from && node.end_byte() == to {
|
||||||
descendant.parent()
|
node = node.parent()?;
|
||||||
} else {
|
|
||||||
Some(descendant)
|
|
||||||
}
|
}
|
||||||
|
Some(node)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue