internal: Make VSCode config more GUI edit friendly

This commit is contained in:
Lukas Wirth 2022-05-14 13:53:41 +02:00
parent 8496633c87
commit 622defb373
3 changed files with 106 additions and 121 deletions

View file

@ -109,7 +109,8 @@ config_data! {
/// ///
/// Set to `"all"` to pass `--all-features` to cargo. /// Set to `"all"` to pass `--all-features` to cargo.
checkOnSave_features: Option<CargoFeatures> = "null", checkOnSave_features: Option<CargoFeatures> = "null",
/// Do not activate the `default` feature. /// Whether to pass `--no-default-features` to cargo. Defaults to
/// `#rust-analyzer.cargo.noDefaultFeatures#`.
checkOnSave_noDefaultFeatures: Option<bool> = "null", checkOnSave_noDefaultFeatures: Option<bool> = "null",
/// Override the command rust-analyzer uses to run build scripts and /// Override the command rust-analyzer uses to run build scripts and
/// build procedural macros. The command is required to output json /// build procedural macros. The command is required to output json
@ -134,7 +135,7 @@ config_data! {
/// with `self` prefixed to them when inside a method. /// with `self` prefixed to them when inside a method.
completion_autoself_enable: bool = "true", completion_autoself_enable: bool = "true",
/// Whether to add parenthesis and argument snippets when completing function. /// Whether to add parenthesis and argument snippets when completing function.
completion_callable_snippets: Option<CallableCompletionDef> = "\"fill_arguments\"", completion_callable_snippets: CallableCompletionDef = "\"fill_arguments\"",
/// Whether to show postfix snippets like `dbg`, `if`, `not`, etc. /// Whether to show postfix snippets like `dbg`, `if`, `not`, etc.
completion_postfix_enable: bool = "true", completion_postfix_enable: bool = "true",
/// Enables completions of private items and fields that are defined in the current workspace even if they are not visible at the current position. /// Enables completions of private items and fields that are defined in the current workspace even if they are not visible at the current position.
@ -1030,10 +1031,11 @@ impl Config {
&& completion_item_edit_resolve(&self.caps), && completion_item_edit_resolve(&self.caps),
enable_self_on_the_fly: self.data.completion_autoself_enable, enable_self_on_the_fly: self.data.completion_autoself_enable,
enable_private_editable: self.data.completion_privateEditable_enable, enable_private_editable: self.data.completion_privateEditable_enable,
callable: self.data.completion_callable_snippets.map(|it| match it { callable: match self.data.completion_callable_snippets {
CallableCompletionDef::FillArguments => CallableSnippets::FillArguments, CallableCompletionDef::FillArguments => Some(CallableSnippets::FillArguments),
CallableCompletionDef::AddParentheses => CallableSnippets::AddParentheses, CallableCompletionDef::AddParentheses => Some(CallableSnippets::AddParentheses),
}), CallableCompletionDef::None => None,
},
insert_use: self.insert_use_config(), insert_use: self.insert_use_config(),
snippet_cap: SnippetCap::new(try_or_def!( snippet_cap: SnippetCap::new(try_or_def!(
self.caps self.caps
@ -1385,6 +1387,7 @@ enum ImportGranularityDef {
enum CallableCompletionDef { enum CallableCompletionDef {
FillArguments, FillArguments,
AddParentheses, AddParentheses,
None,
} }
#[derive(Deserialize, Debug, Clone)] #[derive(Deserialize, Debug, Clone)]
@ -1662,16 +1665,16 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
"type": "string", "type": "string",
"enum": ["workspace", "workspace_and_dependencies"], "enum": ["workspace", "workspace_and_dependencies"],
"enumDescriptions": [ "enumDescriptions": [
"Search in current workspace only", "Search in current workspace only.",
"Search in current workspace and dependencies" "Search in current workspace and dependencies."
], ],
}, },
"WorkspaceSymbolSearchKindDef" => set! { "WorkspaceSymbolSearchKindDef" => set! {
"type": "string", "type": "string",
"enum": ["only_types", "all_symbols"], "enum": ["only_types", "all_symbols"],
"enumDescriptions": [ "enumDescriptions": [
"Search for types only", "Search for types only.",
"Search for all symbols kinds" "Search for all symbols kinds."
], ],
}, },
"ParallelCachePrimingNumThreads" => set! { "ParallelCachePrimingNumThreads" => set! {
@ -1680,8 +1683,6 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
"maximum": 255 "maximum": 255
}, },
"LifetimeElisionDef" => set! { "LifetimeElisionDef" => set! {
"anyOf": [
{
"type": "string", "type": "string",
"enum": [ "enum": [
"always", "always",
@ -1694,12 +1695,7 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
"Only show lifetime elision hints if a return type is involved." "Only show lifetime elision hints if a return type is involved."
] ]
}, },
{ "type": "boolean" }
],
},
"ReborrowHintsDef" => set! { "ReborrowHintsDef" => set! {
"anyOf": [
{
"type": "string", "type": "string",
"enum": [ "enum": [
"always", "always",
@ -1712,15 +1708,21 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
"Only show mutable reborrow hints." "Only show mutable reborrow hints."
] ]
}, },
{ "type": "boolean" }
],
},
"CargoFeatures" => set! { "CargoFeatures" => set! {
"type": ["string", "array"], "anyOf": [
"items": { "type": "string" }, {
"enum": ["all"], "type": "string",
"enum": [
"all"
],
"enumDescriptions": [ "enumDescriptions": [
"Pass `--all-features` to cargo", "Pass `--all-features` to cargo",
]
},
{
"type": "array",
"items": { "type": "string" }
}
], ],
}, },
"Option<CargoFeatures>" => set! { "Option<CargoFeatures>" => set! {
@ -1741,22 +1743,19 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
{ "type": "null" } { "type": "null" }
], ],
}, },
"Option<CallableCompletionDef>" => set! { "CallableCompletionDef" => set! {
"anyOf": [
{
"type": "string", "type": "string",
"enum": [ "enum": [
"fill_arguments", "fill_arguments",
"add_parentheses" "add_parentheses",
"none",
], ],
"enumDescriptions": [ "enumDescriptions": [
"Add call parentheses and pre-fill arguments", "Add call parentheses and pre-fill arguments.",
"Add call parentheses" "Add call parentheses.",
"Do no snippet completions for callables."
] ]
}, },
{ "type": "null" }
],
},
"SignatureDetail" => set! { "SignatureDetail" => set! {
"type": "string", "type": "string",
"enum": ["full", "parameters"], "enum": ["full", "parameters"],

View file

@ -104,7 +104,8 @@ Set to `"all"` to pass `--all-features` to cargo.
[[rust-analyzer.checkOnSave.noDefaultFeatures]]rust-analyzer.checkOnSave.noDefaultFeatures (default: `null`):: [[rust-analyzer.checkOnSave.noDefaultFeatures]]rust-analyzer.checkOnSave.noDefaultFeatures (default: `null`)::
+ +
-- --
Do not activate the `default` feature. Whether to pass `--no-default-features` to cargo. Defaults to
`#rust-analyzer.cargo.noDefaultFeatures#`.
-- --
[[rust-analyzer.checkOnSave.overrideCommand]]rust-analyzer.checkOnSave.overrideCommand (default: `null`):: [[rust-analyzer.checkOnSave.overrideCommand]]rust-analyzer.checkOnSave.overrideCommand (default: `null`)::
+ +

View file

@ -423,13 +423,9 @@
"rust-analyzer.cargo.features": { "rust-analyzer.cargo.features": {
"markdownDescription": "List of features to activate.\n\nSet this to `\"all\"` to pass `--all-features` to cargo.", "markdownDescription": "List of features to activate.\n\nSet this to `\"all\"` to pass `--all-features` to cargo.",
"default": [], "default": [],
"type": [ "anyOf": [
"string", {
"array" "type": "string",
],
"items": {
"type": "string"
},
"enum": [ "enum": [
"all" "all"
], ],
@ -437,6 +433,14 @@
"Pass `--all-features` to cargo" "Pass `--all-features` to cargo"
] ]
}, },
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
"rust-analyzer.cargo.noDefaultFeatures": { "rust-analyzer.cargo.noDefaultFeatures": {
"markdownDescription": "Whether to pass `--no-default-features` to cargo.", "markdownDescription": "Whether to pass `--no-default-features` to cargo.",
"default": false, "default": false,
@ -513,7 +517,7 @@
] ]
}, },
"rust-analyzer.checkOnSave.noDefaultFeatures": { "rust-analyzer.checkOnSave.noDefaultFeatures": {
"markdownDescription": "Do not activate the `default` feature.", "markdownDescription": "Whether to pass `--no-default-features` to cargo. Defaults to\n`#rust-analyzer.cargo.noDefaultFeatures#`.",
"default": null, "default": null,
"type": [ "type": [
"null", "null",
@ -552,21 +556,16 @@
"rust-analyzer.completion.callable.snippets": { "rust-analyzer.completion.callable.snippets": {
"markdownDescription": "Whether to add parenthesis and argument snippets when completing function.", "markdownDescription": "Whether to add parenthesis and argument snippets when completing function.",
"default": "fill_arguments", "default": "fill_arguments",
"anyOf": [
{
"type": "string", "type": "string",
"enum": [ "enum": [
"fill_arguments", "fill_arguments",
"add_parentheses" "add_parentheses",
"none"
], ],
"enumDescriptions": [ "enumDescriptions": [
"Add call parentheses and pre-fill arguments", "Add call parentheses and pre-fill arguments.",
"Add call parentheses" "Add call parentheses.",
] "Do no snippet completions for callables."
},
{
"type": "null"
}
] ]
}, },
"rust-analyzer.completion.postfix.enable": { "rust-analyzer.completion.postfix.enable": {
@ -797,8 +796,6 @@
"rust-analyzer.inlayHints.lifetimeElisionHints.enable": { "rust-analyzer.inlayHints.lifetimeElisionHints.enable": {
"markdownDescription": "Whether to show inlay type hints for elided lifetimes in function signatures.", "markdownDescription": "Whether to show inlay type hints for elided lifetimes in function signatures.",
"default": "never", "default": "never",
"anyOf": [
{
"type": "string", "type": "string",
"enum": [ "enum": [
"always", "always",
@ -811,11 +808,6 @@
"Only show lifetime elision hints if a return type is involved." "Only show lifetime elision hints if a return type is involved."
] ]
}, },
{
"type": "boolean"
}
]
},
"rust-analyzer.inlayHints.lifetimeElisionHints.useParameterNames": { "rust-analyzer.inlayHints.lifetimeElisionHints.useParameterNames": {
"markdownDescription": "Whether to prefer using parameter names as the name for elided lifetime hints if possible.", "markdownDescription": "Whether to prefer using parameter names as the name for elided lifetime hints if possible.",
"default": false, "default": false,
@ -838,8 +830,6 @@
"rust-analyzer.inlayHints.reborrowHints.enable": { "rust-analyzer.inlayHints.reborrowHints.enable": {
"markdownDescription": "Whether to show inlay type hints for compiler inserted reborrows.", "markdownDescription": "Whether to show inlay type hints for compiler inserted reborrows.",
"default": "never", "default": "never",
"anyOf": [
{
"type": "string", "type": "string",
"enum": [ "enum": [
"always", "always",
@ -852,11 +842,6 @@
"Only show mutable reborrow hints." "Only show mutable reborrow hints."
] ]
}, },
{
"type": "boolean"
}
]
},
"rust-analyzer.inlayHints.renderColons": { "rust-analyzer.inlayHints.renderColons": {
"markdownDescription": "Whether to render leading colons for type hints, and trailing colons for parameter hints.", "markdownDescription": "Whether to render leading colons for type hints, and trailing colons for parameter hints.",
"default": true, "default": true,
@ -1065,8 +1050,8 @@
"all_symbols" "all_symbols"
], ],
"enumDescriptions": [ "enumDescriptions": [
"Search for types only", "Search for types only.",
"Search for all symbols kinds" "Search for all symbols kinds."
] ]
}, },
"rust-analyzer.workspace.symbol.search.limit": { "rust-analyzer.workspace.symbol.search.limit": {
@ -1084,8 +1069,8 @@
"workspace_and_dependencies" "workspace_and_dependencies"
], ],
"enumDescriptions": [ "enumDescriptions": [
"Search in current workspace only", "Search in current workspace only.",
"Search in current workspace and dependencies" "Search in current workspace and dependencies."
] ]
}, },
"$generated-end": {} "$generated-end": {}