diff options
Diffstat (limited to 'crates/ra_assists/src/assist_context.rs')
-rw-r--r-- | crates/ra_assists/src/assist_context.rs | 19 |
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 | }; |
16 | use ra_text_edit::TextEditBuilder; | 16 | use ra_text_edit::TextEditBuilder; |
17 | 17 | ||
18 | use crate::{AssistId, AssistLabel, GroupLabel, ResolvedAssist}; | 18 | use 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> { | |||
91 | pub(crate) struct Assists { | 90 | pub(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 | ||
97 | impl Assists { | 96 | impl 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 | } |