From 33384d289e246ea29c8e8103fef3099a6781e23b Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 24 Dec 2020 15:32:29 +0300 Subject: pit-of-success API for unresolved code actions --- crates/ide/src/lib.rs | 22 +++++++++++----------- crates/rust-analyzer/src/handlers.rs | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs index 52c7f9775..a75cc85b6 100644 --- a/crates/ide/src/lib.rs +++ b/crates/ide/src/lib.rs @@ -490,8 +490,18 @@ impl Analysis { .unwrap_or_default()) } + /// Computes assists (aka code actions aka intentions) for the given + /// position. Computes enough info to show the lightbulb list in the editor, + /// but doesn't compute actual edits, to improve performance. + /// + /// When the user clicks on the assist, call `resolve_assists` to get the + /// edit. + pub fn assists(&self, config: &AssistConfig, frange: FileRange) -> Cancelable> { + self.with_db(|db| Assist::unresolved(db, config, frange)) + } + /// Computes resolved assists with source changes for the given position. - pub fn resolved_assists( + pub fn resolve_assists( &self, config: &AssistConfig, frange: FileRange, @@ -499,16 +509,6 @@ impl Analysis { self.with_db(|db| assists::Assist::resolved(db, config, frange)) } - /// Computes unresolved assists (aka code actions aka intentions) for the given - /// position. - pub fn unresolved_assists( - &self, - config: &AssistConfig, - frange: FileRange, - ) -> Cancelable> { - self.with_db(|db| Assist::unresolved(db, config, frange)) - } - /// Computes the set of diagnostics for the given file. pub fn diagnostics( &self, diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs index 25692793b..1207b31c4 100644 --- a/crates/rust-analyzer/src/handlers.rs +++ b/crates/rust-analyzer/src/handlers.rs @@ -946,12 +946,12 @@ pub(crate) fn handle_code_action( if snap.config.client_caps.code_action_resolve { for (index, assist) in - snap.analysis.unresolved_assists(&assists_config, frange)?.into_iter().enumerate() + snap.analysis.assists(&assists_config, frange)?.into_iter().enumerate() { res.push(to_proto::unresolved_code_action(&snap, params.clone(), assist, index)?); } } else { - for assist in snap.analysis.resolved_assists(&assists_config, frange)?.into_iter() { + for assist in snap.analysis.resolve_assists(&assists_config, frange)?.into_iter() { res.push(to_proto::resolved_code_action(&snap, assist)?); } } @@ -1014,7 +1014,7 @@ pub(crate) fn handle_code_action_resolve( .only .map(|it| it.into_iter().filter_map(from_proto::assist_kind).collect()); - let assists = snap.analysis.resolved_assists(&snap.config.assist, frange)?; + let assists = snap.analysis.resolve_assists(&snap.config.assist, frange)?; let (id, index) = split_once(¶ms.id, ':').unwrap(); let index = index.parse::().unwrap(); let assist = &assists[index]; -- cgit v1.2.3