@@ -13,7 +13,6 @@ use crate::{db::RootDatabase, FileRange};
13
13
use hir:: { db:: AstDatabase , InFile } ;
14
14
use itertools:: Itertools ;
15
15
16
- // FIXME: restore macro support
17
16
pub ( crate ) fn extend_selection ( db : & RootDatabase , frange : FileRange ) -> TextRange {
18
17
let src = db. parse ( frange. file_id ) . tree ( ) ;
19
18
let root = InFile :: new ( frange. file_id . into ( ) , src. syntax ( ) ) ;
@@ -93,8 +92,7 @@ fn try_extend_selection(
93
92
return Some ( node. text_range ( ) ) ;
94
93
}
95
94
96
- // Using shallowest node with same range allows us to traverse siblings.
97
- let node = node. ancestors ( ) . take_while ( |n| n. text_range ( ) == node. text_range ( ) ) . last ( ) . unwrap ( ) ;
95
+ let node = shallowest_node ( & node. into ( ) ) . unwrap ( ) ;
98
96
99
97
if node. parent ( ) . map ( |n| list_kinds. contains ( & n. kind ( ) ) ) == Some ( true ) {
100
98
if let Some ( range) = extend_list_item ( & node) {
@@ -129,7 +127,7 @@ fn extend_tokens_from_range(
129
127
. fold1 ( |x, y| union_range ( x, y) ) ?;
130
128
131
129
let src = db. parse_or_expand ( expansion. file_id ( ) ) ?;
132
- let parent = shallow_node ( & find_covering_element ( & src, range) ) ?. parent ( ) ?;
130
+ let parent = shallowest_node ( & find_covering_element ( & src, range) ) ?. parent ( ) ?;
133
131
134
132
// compute parent mapped token range
135
133
let range = macro_call
@@ -162,7 +160,8 @@ fn union_range(range: TextRange, r: TextRange) -> TextRange {
162
160
TextRange :: from_to ( start, end)
163
161
}
164
162
165
- fn shallow_node ( node : & SyntaxElement ) -> Option < SyntaxNode > {
163
+ /// Find the shallowest node with same range, which allows us to traverse siblings.
164
+ fn shallowest_node ( node : & SyntaxElement ) -> Option < SyntaxNode > {
166
165
node. ancestors ( ) . take_while ( |n| n. text_range ( ) == node. text_range ( ) ) . last ( )
167
166
}
168
167
0 commit comments