pub use assist_config::AssistConfig;
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum AssistKind {
// FIXME: does the None variant make sense? Probably not.
None,
/// Unique identifier of the assist, should not be shown to the user
/// directly.
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct AssistId(pub &'static str, pub AssistKind);
+// TODO kb docs
+#[derive(Debug, Clone, Copy)]
+pub enum AssistResolveStrategy {
+ None,
+ All,
+ Single(AssistId),
+}
+
+impl AssistResolveStrategy {
+ pub fn should_resolve(&self, id: &AssistId) -> bool {
+ match self {
+ AssistResolveStrategy::None => false,
+ AssistResolveStrategy::All => true,
+ AssistResolveStrategy::Single(id_to_resolve) => id_to_resolve == id,
+ }
+ }
+}
+
#[derive(Clone, Debug)]
pub struct GroupLabel(pub String);
pub fn get(
db: &RootDatabase,
config: &AssistConfig,
- resolve: bool,
+ resolve: AssistResolveStrategy,
range: FileRange,
) -> Vec<Assist> {
let sema = Semantics::new(db);