Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #19636 from Veykril/push-wttkunmqyskm
fix: Fix completion_snippets_custom config always erroring
Lukas Wirth 2025-04-21
parent 723121e · parent 5680911 · commit 66e3b58
-rw-r--r--crates/rust-analyzer/src/config.rs23
1 files changed, 12 insertions, 11 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index 1f44889883..619cf3d501 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -923,7 +923,6 @@ impl Config {
if !(json.is_null() || json.as_object().is_some_and(|it| it.is_empty())) {
let detached_files = get_field_json::<Vec<Utf8PathBuf>>(
&mut json,
- // Do not record errors here; it is not an error if a field is missing here.
&mut Vec::new(),
"detachedFiles",
None,
@@ -935,19 +934,20 @@ impl Config {
patch_old_style::patch_json_for_outdated_configs(&mut json);
- let snips = get_field_json::<FxIndexMap<String, SnippetDef>>(
- &mut json,
- // Do not record errors here; it is not an error if a field is missing here.
- &mut Vec::new(),
- "completion_snippets_custom",
- None,
- )
- .unwrap_or(self.completion_snippets_custom().to_owned());
-
let mut json_errors = vec![];
+
+ let input = FullConfigInput::from_json(json, &mut json_errors);
+
// IMPORTANT : This holds as long as ` completion_snippets_custom` is declared `client`.
config.snippets.clear();
+ let snips = input
+ .global
+ .completion_snippets_custom
+ .as_ref()
+ .unwrap_or(&self.default_config.global.completion_snippets_custom);
+ #[allow(dead_code)]
+ let _ = Self::completion_snippets_custom;
for (name, def) in snips.iter() {
if def.prefix.is_empty() && def.postfix.is_empty() {
continue;
@@ -974,8 +974,9 @@ impl Config {
)),
}
}
+
config.client_config = (
- FullConfigInput::from_json(json, &mut json_errors),
+ input,
ConfigErrors(
json_errors
.into_iter()