Add docs and use better naming

This commit is contained in:
Kirill Bulatov 2021-05-03 18:16:35 +03:00
parent 1679a376f3
commit 28293d370f
3 changed files with 25 additions and 8 deletions

View File

@ -87,7 +87,9 @@ pub use crate::{
},
};
pub use hir::{Documentation, Semantics};
pub use ide_assists::{Assist, AssistConfig, AssistId, AssistKind, AssistResolveStrategy};
pub use ide_assists::{
Assist, AssistConfig, AssistId, AssistKind, AssistResolveStrategy, SingleResolve,
};
pub use ide_completion::{
CompletionConfig, CompletionItem, CompletionItemKind, CompletionRelevance, ImportEdit,
InsertTextFormat,

View File

@ -94,12 +94,27 @@ impl FromStr for AssistKind {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct AssistId(pub &'static str, pub AssistKind);
// TODO kb docs
#[derive(Debug, Clone)]
/// A way to control how many asssist to resolve during the assist resolution.
/// When an assist is resolved, its edits are calculated that might be costly to always do by default.
#[derive(Debug)]
pub enum AssistResolveStrategy {
/// No assists should be resolved.
None,
/// All assists should be resolved.
All,
Single(String, AssistKind),
/// Only a certain assists should be resolved.
Single(SingleResolve),
}
/// Hold the [`AssistId`] data of a certain assist to resolve.
/// The original id object cannot be used due to a `'static` lifetime
/// and the requirement to construct this struct dynamically during the resolve handling.
#[derive(Debug)]
pub struct SingleResolve {
/// The id of the assist.
pub assist_id: String,
// The kind of the assist.
pub assist_kind: AssistKind,
}
impl AssistResolveStrategy {
@ -107,8 +122,8 @@ impl AssistResolveStrategy {
match self {
AssistResolveStrategy::None => false,
AssistResolveStrategy::All => true,
AssistResolveStrategy::Single(id_to_resolve, kind) => {
id_to_resolve == id.0 && kind == &id.1
AssistResolveStrategy::Single(single_resolve) => {
single_resolve.assist_id == id.0 && single_resolve.assist_kind == id.1
}
}
}

View File

@ -10,7 +10,7 @@ use std::{
use ide::{
AnnotationConfig, AssistKind, AssistResolveStrategy, FileId, FilePosition, FileRange,
HoverAction, HoverGotoTypeData, Query, RangeInfo, Runnable, RunnableKind, SearchScope,
SourceChange, TextEdit,
SingleResolve, SourceChange, TextEdit,
};
use ide_db::SymbolKind;
use itertools::Itertools;
@ -1072,7 +1072,7 @@ pub(crate) fn handle_code_action_resolve(
let assists = snap.analysis.assists_with_fixes(
&assists_config,
&snap.config.diagnostics(),
AssistResolveStrategy::Single(params.id.clone(), assist_kind),
AssistResolveStrategy::Single(SingleResolve { assist_id: params.id.clone(), assist_kind }),
frange,
)?;