aboutsummaryrefslogtreecommitdiff
path: root/crates/libeditor/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/libeditor/src')
-rw-r--r--crates/libeditor/src/code_actions.rs10
1 files changed, 4 insertions, 6 deletions
diff --git a/crates/libeditor/src/code_actions.rs b/crates/libeditor/src/code_actions.rs
index 6df64be12..4b2515835 100644
--- a/crates/libeditor/src/code_actions.rs
+++ b/crates/libeditor/src/code_actions.rs
@@ -71,13 +71,11 @@ fn non_trivia_sibling(node: SyntaxNodeRef, direction: Direction) -> Option<Synta
71 .find(|node| !node.kind().is_trivia()) 71 .find(|node| !node.kind().is_trivia())
72} 72}
73 73
74fn find_non_trivia_leaf(syntax: SyntaxNodeRef, offset: TextUnit) -> Option<SyntaxNodeRef> {
75 find_leaf_at_offset(syntax, offset)
76 .find(|leaf| !leaf.kind().is_trivia())
77}
78
79pub fn find_node<'a, N: AstNode<&'a SyntaxRoot>>(syntax: SyntaxNodeRef<'a>, offset: TextUnit) -> Option<N> { 74pub fn find_node<'a, N: AstNode<&'a SyntaxRoot>>(syntax: SyntaxNodeRef<'a>, offset: TextUnit) -> Option<N> {
80 let leaf = find_non_trivia_leaf(syntax, offset)?; 75 let leaves = find_leaf_at_offset(syntax, offset);
76 let leaf = leaves.clone()
77 .find(|leaf| !leaf.kind().is_trivia())
78 .or_else(|| leaves.right_biased())?;
81 ancestors(leaf) 79 ancestors(leaf)
82 .filter_map(N::cast) 80 .filter_map(N::cast)
83 .next() 81 .next()