diff options
author | Aleksey Kladov <[email protected]> | 2020-12-24 12:32:29 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-12-24 12:32:29 +0000 |
commit | 33384d289e246ea29c8e8103fef3099a6781e23b (patch) | |
tree | 5f8af3a0a37a445f6b1d5db30ff864e058875ebe /crates | |
parent | 1487f2f10efe2d0a54e8627692643f3a48ffdbff (diff) |
pit-of-success API for unresolved code actions
Diffstat (limited to 'crates')
-rw-r--r-- | crates/ide/src/lib.rs | 22 | ||||
-rw-r--r-- | 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 { | |||
490 | .unwrap_or_default()) | 490 | .unwrap_or_default()) |
491 | } | 491 | } |
492 | 492 | ||
493 | /// Computes assists (aka code actions aka intentions) for the given | ||
494 | /// position. Computes enough info to show the lightbulb list in the editor, | ||
495 | /// but doesn't compute actual edits, to improve performance. | ||
496 | /// | ||
497 | /// When the user clicks on the assist, call `resolve_assists` to get the | ||
498 | /// edit. | ||
499 | pub fn assists(&self, config: &AssistConfig, frange: FileRange) -> Cancelable<Vec<Assist>> { | ||
500 | self.with_db(|db| Assist::unresolved(db, config, frange)) | ||
501 | } | ||
502 | |||
493 | /// Computes resolved assists with source changes for the given position. | 503 | /// Computes resolved assists with source changes for the given position. |
494 | pub fn resolved_assists( | 504 | pub fn resolve_assists( |
495 | &self, | 505 | &self, |
496 | config: &AssistConfig, | 506 | config: &AssistConfig, |
497 | frange: FileRange, | 507 | frange: FileRange, |
@@ -499,16 +509,6 @@ impl Analysis { | |||
499 | self.with_db(|db| assists::Assist::resolved(db, config, frange)) | 509 | self.with_db(|db| assists::Assist::resolved(db, config, frange)) |
500 | } | 510 | } |
501 | 511 | ||
502 | /// Computes unresolved assists (aka code actions aka intentions) for the given | ||
503 | /// position. | ||
504 | pub fn unresolved_assists( | ||
505 | &self, | ||
506 | config: &AssistConfig, | ||
507 | frange: FileRange, | ||
508 | ) -> Cancelable<Vec<Assist>> { | ||
509 | self.with_db(|db| Assist::unresolved(db, config, frange)) | ||
510 | } | ||
511 | |||
512 | /// Computes the set of diagnostics for the given file. | 512 | /// Computes the set of diagnostics for the given file. |
513 | pub fn diagnostics( | 513 | pub fn diagnostics( |
514 | &self, | 514 | &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( | |||
946 | 946 | ||
947 | if snap.config.client_caps.code_action_resolve { | 947 | if snap.config.client_caps.code_action_resolve { |
948 | for (index, assist) in | 948 | for (index, assist) in |
949 | snap.analysis.unresolved_assists(&assists_config, frange)?.into_iter().enumerate() | 949 | snap.analysis.assists(&assists_config, frange)?.into_iter().enumerate() |
950 | { | 950 | { |
951 | res.push(to_proto::unresolved_code_action(&snap, params.clone(), assist, index)?); | 951 | res.push(to_proto::unresolved_code_action(&snap, params.clone(), assist, index)?); |
952 | } | 952 | } |
953 | } else { | 953 | } else { |
954 | for assist in snap.analysis.resolved_assists(&assists_config, frange)?.into_iter() { | 954 | for assist in snap.analysis.resolve_assists(&assists_config, frange)?.into_iter() { |
955 | res.push(to_proto::resolved_code_action(&snap, assist)?); | 955 | res.push(to_proto::resolved_code_action(&snap, assist)?); |
956 | } | 956 | } |
957 | } | 957 | } |
@@ -1014,7 +1014,7 @@ pub(crate) fn handle_code_action_resolve( | |||
1014 | .only | 1014 | .only |
1015 | .map(|it| it.into_iter().filter_map(from_proto::assist_kind).collect()); | 1015 | .map(|it| it.into_iter().filter_map(from_proto::assist_kind).collect()); |
1016 | 1016 | ||
1017 | let assists = snap.analysis.resolved_assists(&snap.config.assist, frange)?; | 1017 | let assists = snap.analysis.resolve_assists(&snap.config.assist, frange)?; |
1018 | let (id, index) = split_once(¶ms.id, ':').unwrap(); | 1018 | let (id, index) = split_once(¶ms.id, ':').unwrap(); |
1019 | let index = index.parse::<usize>().unwrap(); | 1019 | let index = index.parse::<usize>().unwrap(); |
1020 | let assist = &assists[index]; | 1020 | let assist = &assists[index]; |