mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-28 14:03:35 +00:00
Make completion_* local
This commit is contained in:
parent
eef79b4e47
commit
a7207f4b64
1 changed files with 76 additions and 72 deletions
|
@ -209,6 +209,70 @@ config_data! {
|
|||
/// Term search fuel in "units of work" for assists (Defaults to 1800).
|
||||
assist_termSearch_fuel: usize = 1800,
|
||||
|
||||
|
||||
/// Toggles the additional completions that automatically add imports when completed.
|
||||
/// Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.
|
||||
completion_autoimport_enable: bool = true,
|
||||
/// Toggles the additional completions that automatically show method calls and field accesses
|
||||
/// with `self` prefixed to them when inside a method.
|
||||
completion_autoself_enable: bool = true,
|
||||
/// Whether to add parenthesis and argument snippets when completing function.
|
||||
completion_callable_snippets: CallableCompletionDef = CallableCompletionDef::FillArguments,
|
||||
/// Whether to show full function/method signatures in completion docs.
|
||||
completion_fullFunctionSignatures_enable: bool = false,
|
||||
/// Maximum number of completions to return. If `None`, the limit is infinite.
|
||||
completion_limit: Option<usize> = None,
|
||||
/// Whether to show postfix snippets like `dbg`, `if`, `not`, etc.
|
||||
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.
|
||||
completion_privateEditable_enable: bool = false,
|
||||
/// Custom completion snippets.
|
||||
completion_snippets_custom: FxHashMap<String, SnippetDef> = serde_json::from_str(r#"{
|
||||
"Arc::new": {
|
||||
"postfix": "arc",
|
||||
"body": "Arc::new(${receiver})",
|
||||
"requires": "std::sync::Arc",
|
||||
"description": "Put the expression into an `Arc`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Rc::new": {
|
||||
"postfix": "rc",
|
||||
"body": "Rc::new(${receiver})",
|
||||
"requires": "std::rc::Rc",
|
||||
"description": "Put the expression into an `Rc`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Box::pin": {
|
||||
"postfix": "pinbox",
|
||||
"body": "Box::pin(${receiver})",
|
||||
"requires": "std::boxed::Box",
|
||||
"description": "Put the expression into a pinned `Box`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Ok": {
|
||||
"postfix": "ok",
|
||||
"body": "Ok(${receiver})",
|
||||
"description": "Wrap the expression in a `Result::Ok`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Err": {
|
||||
"postfix": "err",
|
||||
"body": "Err(${receiver})",
|
||||
"description": "Wrap the expression in a `Result::Err`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Some": {
|
||||
"postfix": "some",
|
||||
"body": "Some(${receiver})",
|
||||
"description": "Wrap the expression in an `Option::Some`",
|
||||
"scope": "expr"
|
||||
}
|
||||
}"#).unwrap(),
|
||||
/// Whether to enable term search based snippets like `Some(foo.bar().baz())`.
|
||||
completion_termSearch_enable: bool = false,
|
||||
/// Term search fuel in "units of work" for autocompletion (Defaults to 1000).
|
||||
completion_termSearch_fuel: usize = 1000,
|
||||
|
||||
/// List of rust-analyzer diagnostics to disable.
|
||||
diagnostics_disabled: FxHashSet<String> = FxHashSet::default(),
|
||||
/// Whether to show native rust-analyzer diagnostics.
|
||||
|
@ -463,68 +527,6 @@ config_data! {
|
|||
/// Configs that only make sense when they are set by a client. As such they can only be defined
|
||||
/// by setting them using client's settings (e.g `settings.json` on VS Code).
|
||||
client: struct ClientDefaultConfigData <- ClientConfigInput -> {
|
||||
/// Toggles the additional completions that automatically add imports when completed.
|
||||
/// Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.
|
||||
completion_autoimport_enable: bool = true,
|
||||
/// Toggles the additional completions that automatically show method calls and field accesses
|
||||
/// with `self` prefixed to them when inside a method.
|
||||
completion_autoself_enable: bool = true,
|
||||
/// Whether to add parenthesis and argument snippets when completing function.
|
||||
completion_callable_snippets: CallableCompletionDef = CallableCompletionDef::FillArguments,
|
||||
/// Whether to show full function/method signatures in completion docs.
|
||||
completion_fullFunctionSignatures_enable: bool = false,
|
||||
/// Maximum number of completions to return. If `None`, the limit is infinite.
|
||||
completion_limit: Option<usize> = None,
|
||||
/// Whether to show postfix snippets like `dbg`, `if`, `not`, etc.
|
||||
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.
|
||||
completion_privateEditable_enable: bool = false,
|
||||
/// Custom completion snippets.
|
||||
completion_snippets_custom: FxHashMap<String, SnippetDef> = serde_json::from_str(r#"{
|
||||
"Arc::new": {
|
||||
"postfix": "arc",
|
||||
"body": "Arc::new(${receiver})",
|
||||
"requires": "std::sync::Arc",
|
||||
"description": "Put the expression into an `Arc`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Rc::new": {
|
||||
"postfix": "rc",
|
||||
"body": "Rc::new(${receiver})",
|
||||
"requires": "std::rc::Rc",
|
||||
"description": "Put the expression into an `Rc`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Box::pin": {
|
||||
"postfix": "pinbox",
|
||||
"body": "Box::pin(${receiver})",
|
||||
"requires": "std::boxed::Box",
|
||||
"description": "Put the expression into a pinned `Box`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Ok": {
|
||||
"postfix": "ok",
|
||||
"body": "Ok(${receiver})",
|
||||
"description": "Wrap the expression in a `Result::Ok`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Err": {
|
||||
"postfix": "err",
|
||||
"body": "Err(${receiver})",
|
||||
"description": "Wrap the expression in a `Result::Err`",
|
||||
"scope": "expr"
|
||||
},
|
||||
"Some": {
|
||||
"postfix": "some",
|
||||
"body": "Some(${receiver})",
|
||||
"description": "Wrap the expression in an `Option::Some`",
|
||||
"scope": "expr"
|
||||
}
|
||||
}"#).unwrap(),
|
||||
/// Whether to enable term search based snippets like `Some(foo.bar().baz())`.
|
||||
completion_termSearch_enable: bool = false,
|
||||
/// Term search fuel in "units of work" for autocompletion (Defaults to 1000).
|
||||
completion_termSearch_fuel: usize = 1000,
|
||||
|
||||
/// Controls file watching implementation.
|
||||
files_watcher: FilesWatcherDef = FilesWatcherDef::Client,
|
||||
|
@ -879,7 +881,7 @@ impl Config {
|
|||
// IMPORTANT : This holds as long as ` completion_snippets_custom` is declared `client`.
|
||||
config.snippets.clear();
|
||||
|
||||
let snips = self.completion_snippets_custom().to_owned();
|
||||
let snips = self.completion_snippets_custom(None).to_owned();
|
||||
|
||||
for (name, def) in snips.iter() {
|
||||
if def.prefix.is_empty() && def.postfix.is_empty() {
|
||||
|
@ -1417,13 +1419,15 @@ impl Config {
|
|||
|
||||
pub fn completion(&self, source_root: Option<SourceRootId>) -> CompletionConfig {
|
||||
CompletionConfig {
|
||||
enable_postfix_completions: self.completion_postfix_enable().to_owned(),
|
||||
enable_imports_on_the_fly: self.completion_autoimport_enable().to_owned()
|
||||
enable_postfix_completions: self.completion_postfix_enable(source_root).to_owned(),
|
||||
enable_imports_on_the_fly: self.completion_autoimport_enable(source_root).to_owned()
|
||||
&& self.caps.completion_item_edit_resolve(),
|
||||
enable_self_on_the_fly: self.completion_autoself_enable().to_owned(),
|
||||
enable_private_editable: self.completion_privateEditable_enable().to_owned(),
|
||||
full_function_signatures: self.completion_fullFunctionSignatures_enable().to_owned(),
|
||||
callable: match self.completion_callable_snippets() {
|
||||
enable_self_on_the_fly: self.completion_autoself_enable(source_root).to_owned(),
|
||||
enable_private_editable: self.completion_privateEditable_enable(source_root).to_owned(),
|
||||
full_function_signatures: self
|
||||
.completion_fullFunctionSignatures_enable(source_root)
|
||||
.to_owned(),
|
||||
callable: match self.completion_callable_snippets(source_root) {
|
||||
CallableCompletionDef::FillArguments => Some(CallableSnippets::FillArguments),
|
||||
CallableCompletionDef::AddParentheses => Some(CallableSnippets::AddParentheses),
|
||||
CallableCompletionDef::None => None,
|
||||
|
@ -1434,9 +1438,9 @@ impl Config {
|
|||
prefer_prelude: self.imports_preferPrelude(source_root).to_owned(),
|
||||
prefer_absolute: self.imports_prefixExternPrelude(source_root).to_owned(),
|
||||
snippets: self.snippets.clone().to_vec(),
|
||||
limit: self.completion_limit().to_owned(),
|
||||
enable_term_search: self.completion_termSearch_enable().to_owned(),
|
||||
term_search_fuel: self.completion_termSearch_fuel().to_owned() as u64,
|
||||
limit: self.completion_limit(source_root).to_owned(),
|
||||
enable_term_search: self.completion_termSearch_enable(source_root).to_owned(),
|
||||
term_search_fuel: self.completion_termSearch_fuel(source_root).to_owned() as u64,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue