about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-01-07 12:07:49 +0000
committerGitHub <noreply@github.com>2021-01-07 12:07:49 +0000
commitc3e9fb183bc287d83b97b776edc87c54d18d1a73 (patch)
treed81cef123586950822b88581454f3bf1a86f8349
parent171c3c08fe245938fb25321394233de5fe2abc7c (diff)
parent037caec62c881e11325f93627d9bfd44fb374d51 (diff)
downloadrust-c3e9fb183bc287d83b97b776edc87c54d18d1a73.tar.gz
rust-c3e9fb183bc287d83b97b776edc87c54d18d1a73.zip
Merge #7192
7192: Use american spelling for config r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
-rw-r--r--crates/rust-analyzer/src/config.rs31
-rw-r--r--docs/user/generated_config.adoc2
-rw-r--r--editors/code/package.json2
3 files changed, 24 insertions, 11 deletions
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index e3ba81ac6d6..2d3e25cbf2a 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -7,7 +7,7 @@
 //! configure the server itself, feature flags are passed into analysis, and
 //! tweak things like automatic insertion of `()` in completions.
 
-use std::{convert::TryFrom, ffi::OsString, path::PathBuf};
+use std::{convert::TryFrom, ffi::OsString, iter, path::PathBuf};
 
 use flycheck::FlycheckConfig;
 use hir::PrefixKind;
@@ -28,7 +28,8 @@ use crate::{caps::completion_item_edit_resolve, diagnostics::DiagnosticsMapConfi
 config_data! {
     struct ConfigData {
         /// The strategy to use when inserting new imports or merging imports.
-        assist_importMergeBehaviour: MergeBehaviorDef = "\"full\"",
+        assist_importMergeBehavior |
+        assist_importMergeBehaviour: MergeBehaviorDef  = "\"full\"",
         /// The path structure for newly inserted paths to use.
         assist_importPrefix: ImportPrefixDef           = "\"plain\"",
 
@@ -530,7 +531,7 @@ impl Config {
         }
     }
     fn merge_behavior(&self) -> Option<MergeBehavior> {
-        match self.data.assist_importMergeBehaviour {
+        match self.data.assist_importMergeBehavior {
             MergeBehaviorDef::None => None,
             MergeBehaviorDef::Full => Some(MergeBehavior::Full),
             MergeBehaviorDef::Last => Some(MergeBehavior::Last),
@@ -639,7 +640,7 @@ macro_rules! _config_data {
     (struct $name:ident {
         $(
             $(#[doc=$doc:literal])*
-            $field:ident: $ty:ty = $default:expr,
+            $field:ident $(| $alias:ident)?: $ty:ty = $default:expr,
         )*
     }) => {
         #[allow(non_snake_case)]
@@ -648,7 +649,12 @@ macro_rules! _config_data {
         impl $name {
             fn from_json(mut json: serde_json::Value) -> $name {
                 $name {$(
-                    $field: get_field(&mut json, stringify!($field), $default),
+                    $field: get_field(
+                        &mut json,
+                        stringify!($field),
+                        None$(.or(Some(stringify!($alias))))?,
+                        $default,
+                    ),
                 )*}
             }
 
@@ -680,14 +686,21 @@ use _config_data as config_data;
 fn get_field<T: DeserializeOwned>(
     json: &mut serde_json::Value,
     field: &'static str,
+    alias: Option<&'static str>,
     default: &str,
 ) -> T {
     let default = serde_json::from_str(default).unwrap();
 
-    let mut pointer = field.replace('_', "/");
-    pointer.insert(0, '/');
-    json.pointer_mut(&pointer)
-        .and_then(|it| serde_json::from_value(it.take()).ok())
+    // XXX: check alias first, to work-around the VS Code where it pre-fills the
+    // defaults instead of sending an empty object.
+    alias
+        .into_iter()
+        .chain(iter::once(field))
+        .find_map(move |field| {
+            let mut pointer = field.replace('_', "/");
+            pointer.insert(0, '/');
+            json.pointer_mut(&pointer).and_then(|it| serde_json::from_value(it.take()).ok())
+        })
         .unwrap_or(default)
 }
 
diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc
index e45ea5c3510..a76c99d1e4b 100644
--- a/docs/user/generated_config.adoc
+++ b/docs/user/generated_config.adoc
@@ -1,4 +1,4 @@
-[[rust-analyzer.assist.importMergeBehaviour]]rust-analyzer.assist.importMergeBehaviour (default: `"full"`)::
+[[rust-analyzer.assist.importMergeBehavior]]rust-analyzer.assist.importMergeBehavior (default: `"full"`)::
  The strategy to use when inserting new imports or merging imports.
 [[rust-analyzer.assist.importPrefix]]rust-analyzer.assist.importPrefix (default: `"plain"`)::
  The path structure for newly inserted paths to use.
diff --git a/editors/code/package.json b/editors/code/package.json
index ea7f0990c0d..3e6ebd7ed64 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -349,7 +349,7 @@
                     "default": {},
                     "markdownDescription": "Optional settings passed to the debug engine. Example: `{ \"lldb\": { \"terminal\":\"external\"} }`"
                 },
-                "rust-analyzer.assist.importMergeBehaviour": {
+                "rust-analyzer.assist.importMergeBehavior": {
                     "markdownDescription": "The strategy to use when inserting new imports or merging imports.",
                     "default": "full",
                     "type": "string",