mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-12-27 16:07:46 +00:00
Deprecate preserve import granularity option
It didn't do anything (behaved like `item`), as with `enforceGranularity = false` (which is the default), the style of the current file is always preferred, regardless of the setting. We could make it fail when the setting is `preserve` and the current file's style could not be detected, but that makes little sense. It is a bit weird that the default is `crate` but `preserve` falls back to `item`, however that was the previous behavior.
This commit is contained in:
parent
378ea41d07
commit
10db7ac7a4
@ -27,9 +27,6 @@ pub use hir::PrefixKind;
|
||||
/// How imports should be grouped into use statements.
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
||||
pub enum ImportGranularity {
|
||||
/// Do not change the granularity of any imports and preserve the original structure written
|
||||
/// by the developer.
|
||||
Preserve,
|
||||
/// Merge imports from the same crate into a single use statement.
|
||||
Crate,
|
||||
/// Merge imports from the same module into a single use statement.
|
||||
@ -174,7 +171,7 @@ fn insert_use_with_alias_option(
|
||||
ImportGranularity::Crate => Some(MergeBehavior::Crate),
|
||||
ImportGranularity::Module => Some(MergeBehavior::Module),
|
||||
ImportGranularity::One => Some(MergeBehavior::One),
|
||||
ImportGranularity::Item | ImportGranularity::Preserve => None,
|
||||
ImportGranularity::Item => None,
|
||||
};
|
||||
if !cfg.enforce_granularity {
|
||||
let file_granularity = guess_granularity_from_scope(scope);
|
||||
|
||||
@ -253,7 +253,7 @@ impl DiagnosticsConfig {
|
||||
style_lints: true,
|
||||
snippet_cap: SnippetCap::new(true),
|
||||
insert_use: InsertUseConfig {
|
||||
granularity: ImportGranularity::Preserve,
|
||||
granularity: ImportGranularity::Item,
|
||||
enforce_granularity: false,
|
||||
prefix_kind: PrefixKind::Plain,
|
||||
group: false,
|
||||
|
||||
@ -1944,8 +1944,9 @@ impl Config {
|
||||
fn insert_use_config(&self, source_root: Option<SourceRootId>) -> InsertUseConfig {
|
||||
InsertUseConfig {
|
||||
granularity: match self.imports_granularity_group(source_root) {
|
||||
ImportGranularityDef::Preserve => ImportGranularity::Preserve,
|
||||
ImportGranularityDef::Item => ImportGranularity::Item,
|
||||
ImportGranularityDef::Item | ImportGranularityDef::Preserve => {
|
||||
ImportGranularity::Item
|
||||
}
|
||||
ImportGranularityDef::Crate => ImportGranularity::Crate,
|
||||
ImportGranularityDef::Module => ImportGranularity::Module,
|
||||
ImportGranularityDef::One => ImportGranularity::One,
|
||||
@ -3504,13 +3505,23 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
|
||||
},
|
||||
"ImportGranularityDef" => set! {
|
||||
"type": "string",
|
||||
"enum": ["preserve", "crate", "module", "item", "one"],
|
||||
"enumDescriptions": [
|
||||
"Do not change the granularity of any imports and preserve the original structure written by the developer.",
|
||||
"Merge imports from the same crate into a single use statement. Conversely, imports from different crates are split into separate statements.",
|
||||
"Merge imports from the same module into a single use statement. Conversely, imports from different modules are split into separate statements.",
|
||||
"Flatten imports so that each has its own use statement.",
|
||||
"Merge all imports into a single use statement as long as they have the same visibility and attributes."
|
||||
"anyOf": [
|
||||
{
|
||||
"enum": ["crate", "module", "item", "one"],
|
||||
"enumDescriptions": [
|
||||
"Merge imports from the same crate into a single use statement. Conversely, imports from different crates are split into separate statements.",
|
||||
"Merge imports from the same module into a single use statement. Conversely, imports from different modules are split into separate statements.",
|
||||
"Flatten imports so that each has its own use statement.",
|
||||
"Merge all imports into a single use statement as long as they have the same visibility and attributes."
|
||||
],
|
||||
},
|
||||
{
|
||||
"enum": ["preserve"],
|
||||
"enumDescriptions": [
|
||||
"Deprecated - unless `enforceGranularity` is `true`, the style of the current file is preferred over this setting. Behaves like `item`.",
|
||||
],
|
||||
"deprecated": true,
|
||||
}
|
||||
],
|
||||
},
|
||||
"ImportPrefixDef" => set! {
|
||||
|
||||
@ -2009,19 +2009,30 @@
|
||||
"markdownDescription": "How imports should be grouped into use statements.",
|
||||
"default": "crate",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"preserve",
|
||||
"crate",
|
||||
"module",
|
||||
"item",
|
||||
"one"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Do not change the granularity of any imports and preserve the original structure written by the developer.",
|
||||
"Merge imports from the same crate into a single use statement. Conversely, imports from different crates are split into separate statements.",
|
||||
"Merge imports from the same module into a single use statement. Conversely, imports from different modules are split into separate statements.",
|
||||
"Flatten imports so that each has its own use statement.",
|
||||
"Merge all imports into a single use statement as long as they have the same visibility and attributes."
|
||||
"anyOf": [
|
||||
{
|
||||
"enum": [
|
||||
"crate",
|
||||
"module",
|
||||
"item",
|
||||
"one"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Merge imports from the same crate into a single use statement. Conversely, imports from different crates are split into separate statements.",
|
||||
"Merge imports from the same module into a single use statement. Conversely, imports from different modules are split into separate statements.",
|
||||
"Flatten imports so that each has its own use statement.",
|
||||
"Merge all imports into a single use statement as long as they have the same visibility and attributes."
|
||||
]
|
||||
},
|
||||
{
|
||||
"enum": [
|
||||
"preserve"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Deprecated - unless `enforceGranularity` is `true`, the style of the current file is preferred over this setting. Behaves like `item`."
|
||||
],
|
||||
"deprecated": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user