mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-25 12:33:33 +00:00
feat: Make private editable completions configurable, disable by default
This commit is contained in:
parent
789f2b9cb6
commit
2a7793d912
7 changed files with 22 additions and 2 deletions
|
@ -13,6 +13,7 @@ pub struct CompletionConfig {
|
||||||
pub enable_postfix_completions: bool,
|
pub enable_postfix_completions: bool,
|
||||||
pub enable_imports_on_the_fly: bool,
|
pub enable_imports_on_the_fly: bool,
|
||||||
pub enable_self_on_the_fly: bool,
|
pub enable_self_on_the_fly: bool,
|
||||||
|
pub enable_private_editable: bool,
|
||||||
pub add_call_parenthesis: bool,
|
pub add_call_parenthesis: bool,
|
||||||
pub add_call_argument_snippets: bool,
|
pub add_call_argument_snippets: bool,
|
||||||
pub snippet_cap: Option<SnippetCap>,
|
pub snippet_cap: Option<SnippetCap>,
|
||||||
|
|
|
@ -360,6 +360,9 @@ impl<'a> CompletionContext<'a> {
|
||||||
None => return Visible::No,
|
None => return Visible::No,
|
||||||
};
|
};
|
||||||
if !vis.is_visible_from(self.db, module.into()) {
|
if !vis.is_visible_from(self.db, module.into()) {
|
||||||
|
if !self.config.enable_private_editable {
|
||||||
|
return Visible::No;
|
||||||
|
}
|
||||||
// If the definition location is editable, also show private items
|
// If the definition location is editable, also show private items
|
||||||
let root_file = defining_crate.root_file(self.db);
|
let root_file = defining_crate.root_file(self.db);
|
||||||
let source_root_id = self.db.file_source_root(root_file);
|
let source_root_id = self.db.file_source_root(root_file);
|
||||||
|
|
|
@ -64,6 +64,7 @@ pub(crate) const TEST_CONFIG: CompletionConfig = CompletionConfig {
|
||||||
enable_postfix_completions: true,
|
enable_postfix_completions: true,
|
||||||
enable_imports_on_the_fly: true,
|
enable_imports_on_the_fly: true,
|
||||||
enable_self_on_the_fly: true,
|
enable_self_on_the_fly: true,
|
||||||
|
enable_private_editable: true,
|
||||||
add_call_parenthesis: true,
|
add_call_parenthesis: true,
|
||||||
add_call_argument_snippets: true,
|
add_call_argument_snippets: true,
|
||||||
snippet_cap: SnippetCap::new(true),
|
snippet_cap: SnippetCap::new(true),
|
||||||
|
|
|
@ -161,13 +161,15 @@ config_data! {
|
||||||
}
|
}
|
||||||
}"#,
|
}"#,
|
||||||
/// 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",
|
||||||
/// Toggles the additional completions that automatically add imports when completed.
|
/// 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.
|
/// Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.
|
||||||
completion_autoimport_enable: bool = "true",
|
completion_autoimport_enable: bool = "true",
|
||||||
/// Toggles the additional completions that automatically show method calls and field accesses
|
/// Toggles the additional completions that automatically show method calls and field accesses
|
||||||
/// 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",
|
||||||
|
/// 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",
|
||||||
|
|
||||||
/// Whether to show native rust-analyzer diagnostics.
|
/// Whether to show native rust-analyzer diagnostics.
|
||||||
diagnostics_enable: bool = "true",
|
diagnostics_enable: bool = "true",
|
||||||
|
@ -875,6 +877,7 @@ impl Config {
|
||||||
enable_imports_on_the_fly: self.data.completion_autoimport_enable
|
enable_imports_on_the_fly: self.data.completion_autoimport_enable
|
||||||
&& 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,
|
||||||
add_call_parenthesis: self.data.completion_addCallParenthesis,
|
add_call_parenthesis: self.data.completion_addCallParenthesis,
|
||||||
add_call_argument_snippets: self.data.completion_addCallArgumentSnippets,
|
add_call_argument_snippets: self.data.completion_addCallArgumentSnippets,
|
||||||
insert_use: self.insert_use_config(),
|
insert_use: self.insert_use_config(),
|
||||||
|
|
|
@ -134,6 +134,7 @@ fn integrated_completion_benchmark() {
|
||||||
enable_postfix_completions: true,
|
enable_postfix_completions: true,
|
||||||
enable_imports_on_the_fly: true,
|
enable_imports_on_the_fly: true,
|
||||||
enable_self_on_the_fly: true,
|
enable_self_on_the_fly: true,
|
||||||
|
enable_private_editable: true,
|
||||||
add_call_parenthesis: true,
|
add_call_parenthesis: true,
|
||||||
add_call_argument_snippets: true,
|
add_call_argument_snippets: true,
|
||||||
snippet_cap: SnippetCap::new(true),
|
snippet_cap: SnippetCap::new(true),
|
||||||
|
@ -171,6 +172,7 @@ fn integrated_completion_benchmark() {
|
||||||
enable_postfix_completions: true,
|
enable_postfix_completions: true,
|
||||||
enable_imports_on_the_fly: true,
|
enable_imports_on_the_fly: true,
|
||||||
enable_self_on_the_fly: true,
|
enable_self_on_the_fly: true,
|
||||||
|
enable_private_editable: true,
|
||||||
add_call_parenthesis: true,
|
add_call_parenthesis: true,
|
||||||
add_call_argument_snippets: true,
|
add_call_argument_snippets: true,
|
||||||
snippet_cap: SnippetCap::new(true),
|
snippet_cap: SnippetCap::new(true),
|
||||||
|
|
|
@ -213,6 +213,11 @@ Note that your client must specify the `additionalTextEdits` LSP client capabili
|
||||||
Toggles the additional completions that automatically show method calls and field accesses
|
Toggles the additional completions that automatically show method calls and field accesses
|
||||||
with `self` prefixed to them when inside a method.
|
with `self` prefixed to them when inside a method.
|
||||||
--
|
--
|
||||||
|
[[rust-analyzer.completion.privateEditable.enable]]rust-analyzer.completion.privateEditable.enable (default: `false`)::
|
||||||
|
+
|
||||||
|
--
|
||||||
|
Enables completions of private items and fields that are defined in the current workspace even if they are not visible at the current position.
|
||||||
|
--
|
||||||
[[rust-analyzer.diagnostics.enable]]rust-analyzer.diagnostics.enable (default: `true`)::
|
[[rust-analyzer.diagnostics.enable]]rust-analyzer.diagnostics.enable (default: `true`)::
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
|
|
|
@ -643,6 +643,11 @@
|
||||||
"default": true,
|
"default": true,
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
|
"rust-analyzer.completion.privateEditable.enable": {
|
||||||
|
"markdownDescription": "Enables completions of private items and fields that are defined in the current workspace even if they are not visible at the current position.",
|
||||||
|
"default": false,
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
"rust-analyzer.diagnostics.enable": {
|
"rust-analyzer.diagnostics.enable": {
|
||||||
"markdownDescription": "Whether to show native rust-analyzer diagnostics.",
|
"markdownDescription": "Whether to show native rust-analyzer diagnostics.",
|
||||||
"default": true,
|
"default": true,
|
||||||
|
|
Loading…
Reference in a new issue