MergeBehavior -> ImportGranularity

This commit is contained in:
Lukas Tobias Wirth 2021-05-18 19:49:15 +02:00
parent e3d0d89d7e
commit 64f7072c25
8 changed files with 75 additions and 38 deletions

View file

@ -12,8 +12,7 @@ use std::{ffi::OsString, iter, path::PathBuf};
use flycheck::FlycheckConfig;
use ide::{AssistConfig, CompletionConfig, DiagnosticsConfig, HoverConfig, InlayHintsConfig};
use ide_db::helpers::{
insert_use::{InsertUseConfig, PrefixKind},
merge_imports::MergeBehavior,
insert_use::{ImportGranularity, InsertUseConfig, PrefixKind},
SnippetCap,
};
use lsp_types::{ClientCapabilities, MarkupKind};
@ -35,8 +34,9 @@ use crate::{
config_data! {
struct ConfigData {
/// The strategy to use when inserting new imports or merging imports.
assist_importGranularity |
assist_importMergeBehavior |
assist_importMergeBehaviour: MergeBehaviorDef = "\"crate\"",
assist_importMergeBehaviour: ImportGranularityDef = "\"preserve\"",
/// The path structure for newly inserted paths to use.
assist_importPrefix: ImportPrefixDef = "\"plain\"",
/// Group inserted imports by the [following order](https://rust-analyzer.github.io/manual.html#auto-import). Groups are separated by newlines.
@ -609,10 +609,11 @@ impl Config {
}
fn insert_use_config(&self) -> InsertUseConfig {
InsertUseConfig {
merge: match self.data.assist_importMergeBehavior {
MergeBehaviorDef::None => None,
MergeBehaviorDef::Crate => Some(MergeBehavior::Crate),
MergeBehaviorDef::Module => Some(MergeBehavior::Module),
granularity: match self.data.assist_importGranularity {
ImportGranularityDef::Preserve => ImportGranularity::Preserve,
ImportGranularityDef::Item => ImportGranularity::Item,
ImportGranularityDef::Crate => ImportGranularity::Crate,
ImportGranularityDef::Module => ImportGranularity::Module,
},
prefix_kind: match self.data.assist_importPrefix {
ImportPrefixDef::Plain => PrefixKind::Plain,
@ -717,8 +718,10 @@ enum ManifestOrProjectJson {
#[derive(Deserialize, Debug, Clone)]
#[serde(rename_all = "snake_case")]
enum MergeBehaviorDef {
None,
enum ImportGranularityDef {
#[serde(alias = "none")]
Item,
Preserve,
#[serde(alias = "full")]
Crate,
#[serde(alias = "last")]
@ -737,7 +740,7 @@ macro_rules! _config_data {
(struct $name:ident {
$(
$(#[doc=$doc:literal])*
$field:ident $(| $alias:ident)?: $ty:ty = $default:expr,
$field:ident $(| $alias:ident)*: $ty:ty = $default:expr,
)*
}) => {
#[allow(non_snake_case)]
@ -749,7 +752,7 @@ macro_rules! _config_data {
$field: get_field(
&mut json,
stringify!($field),
None$(.or(Some(stringify!($alias))))?,
None$(.or(Some(stringify!($alias))))*,
$default,
),
)*}

View file

@ -13,7 +13,10 @@
use std::{convert::TryFrom, sync::Arc};
use ide::{Change, CompletionConfig, FilePosition, TextSize};
use ide_db::helpers::{insert_use::InsertUseConfig, merge_imports::MergeBehavior, SnippetCap};
use ide_db::helpers::{
insert_use::{ImportGranularity, InsertUseConfig},
SnippetCap,
};
use test_utils::project_root;
use vfs::{AbsPathBuf, VfsPath};
@ -133,7 +136,7 @@ fn integrated_completion_benchmark() {
add_call_argument_snippets: true,
snippet_cap: SnippetCap::new(true),
insert_use: InsertUseConfig {
merge: Some(MergeBehavior::Crate),
granularity: ImportGranularity::Crate,
prefix_kind: hir::PrefixKind::ByCrate,
group: true,
},
@ -166,7 +169,7 @@ fn integrated_completion_benchmark() {
add_call_argument_snippets: true,
snippet_cap: SnippetCap::new(true),
insert_use: InsertUseConfig {
merge: Some(MergeBehavior::Crate),
granularity: ImportGranularity::Crate,
prefix_kind: hir::PrefixKind::ByCrate,
group: true,
},

View file

@ -1145,7 +1145,7 @@ mod tests {
use ide::Analysis;
use ide_db::helpers::{
insert_use::{InsertUseConfig, PrefixKind},
insert_use::{ImportGranularity, InsertUseConfig, PrefixKind},
SnippetCap,
};
@ -1177,7 +1177,7 @@ mod tests {
add_call_argument_snippets: true,
snippet_cap: SnippetCap::new(true),
insert_use: InsertUseConfig {
merge: None,
granularity: ImportGranularity::Item,
prefix_kind: PrefixKind::Plain,
group: true,
},