aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/assist_context.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_assists/src/assist_context.rs')
-rw-r--r--crates/ra_assists/src/assist_context.rs19
1 files changed, 9 insertions, 10 deletions
diff --git a/crates/ra_assists/src/assist_context.rs b/crates/ra_assists/src/assist_context.rs
index 203ad1273..3085c4330 100644
--- a/crates/ra_assists/src/assist_context.rs
+++ b/crates/ra_assists/src/assist_context.rs
@@ -15,7 +15,7 @@ use ra_syntax::{
15}; 15};
16use ra_text_edit::TextEditBuilder; 16use ra_text_edit::TextEditBuilder;
17 17
18use crate::{AssistId, AssistLabel, GroupLabel, ResolvedAssist}; 18use crate::{Assist, AssistId, GroupLabel, ResolvedAssist};
19 19
20/// `AssistContext` allows to apply an assist or check if it could be applied. 20/// `AssistContext` allows to apply an assist or check if it could be applied.
21/// 21///
@@ -76,8 +76,7 @@ impl<'a> AssistContext<'a> {
76 find_node_at_offset(self.source_file.syntax(), self.offset()) 76 find_node_at_offset(self.source_file.syntax(), self.offset())
77 } 77 }
78 pub(crate) fn find_node_at_offset_with_descend<N: AstNode>(&self) -> Option<N> { 78 pub(crate) fn find_node_at_offset_with_descend<N: AstNode>(&self) -> Option<N> {
79 self.sema 79 self.sema.find_node_at_offset_with_descend(self.source_file.syntax(), self.offset())
80 .find_node_at_offset_with_descend(self.source_file.syntax(), self.frange.range.start())
81 } 80 }
82 pub(crate) fn covering_element(&self) -> SyntaxElement { 81 pub(crate) fn covering_element(&self) -> SyntaxElement {
83 find_covering_element(self.source_file.syntax(), self.frange.range) 82 find_covering_element(self.source_file.syntax(), self.frange.range)
@@ -91,7 +90,7 @@ impl<'a> AssistContext<'a> {
91pub(crate) struct Assists { 90pub(crate) struct Assists {
92 resolve: bool, 91 resolve: bool,
93 file: FileId, 92 file: FileId,
94 buf: Vec<(AssistLabel, Option<SourceChange>)>, 93 buf: Vec<(Assist, Option<SourceChange>)>,
95} 94}
96 95
97impl Assists { 96impl Assists {
@@ -102,7 +101,7 @@ impl Assists {
102 Assists { resolve: false, file: ctx.frange.file_id, buf: Vec::new() } 101 Assists { resolve: false, file: ctx.frange.file_id, buf: Vec::new() }
103 } 102 }
104 103
105 pub(crate) fn finish_unresolved(self) -> Vec<AssistLabel> { 104 pub(crate) fn finish_unresolved(self) -> Vec<Assist> {
106 assert!(!self.resolve); 105 assert!(!self.resolve);
107 self.finish() 106 self.finish()
108 .into_iter() 107 .into_iter()
@@ -117,7 +116,7 @@ impl Assists {
117 assert!(self.resolve); 116 assert!(self.resolve);
118 self.finish() 117 self.finish()
119 .into_iter() 118 .into_iter()
120 .map(|(label, edit)| ResolvedAssist { label, source_change: edit.unwrap() }) 119 .map(|(label, edit)| ResolvedAssist { assist: label, source_change: edit.unwrap() })
121 .collect() 120 .collect()
122 } 121 }
123 122
@@ -128,7 +127,7 @@ impl Assists {
128 target: TextRange, 127 target: TextRange,
129 f: impl FnOnce(&mut AssistBuilder), 128 f: impl FnOnce(&mut AssistBuilder),
130 ) -> Option<()> { 129 ) -> Option<()> {
131 let label = AssistLabel::new(id, label.into(), None, target); 130 let label = Assist::new(id, label.into(), None, target);
132 self.add_impl(label, f) 131 self.add_impl(label, f)
133 } 132 }
134 pub(crate) fn add_group( 133 pub(crate) fn add_group(
@@ -139,10 +138,10 @@ impl Assists {
139 target: TextRange, 138 target: TextRange,
140 f: impl FnOnce(&mut AssistBuilder), 139 f: impl FnOnce(&mut AssistBuilder),
141 ) -> Option<()> { 140 ) -> Option<()> {
142 let label = AssistLabel::new(id, label.into(), Some(group.clone()), target); 141 let label = Assist::new(id, label.into(), Some(group.clone()), target);
143 self.add_impl(label, f) 142 self.add_impl(label, f)
144 } 143 }
145 fn add_impl(&mut self, label: AssistLabel, f: impl FnOnce(&mut AssistBuilder)) -> Option<()> { 144 fn add_impl(&mut self, label: Assist, f: impl FnOnce(&mut AssistBuilder)) -> Option<()> {
146 let change_label = label.label.clone(); 145 let change_label = label.label.clone();
147 let source_change = if self.resolve { 146 let source_change = if self.resolve {
148 let mut builder = AssistBuilder::new(self.file); 147 let mut builder = AssistBuilder::new(self.file);
@@ -156,7 +155,7 @@ impl Assists {
156 Some(()) 155 Some(())
157 } 156 }
158 157
159 fn finish(mut self) -> Vec<(AssistLabel, Option<SourceChange>)> { 158 fn finish(mut self) -> Vec<(Assist, Option<SourceChange>)> {
160 self.buf.sort_by_key(|(label, _edit)| label.target.len()); 159 self.buf.sort_by_key(|(label, _edit)| label.target.len());
161 self.buf 160 self.buf
162 } 161 }