Skip to content

Commit

Permalink
Remove serde flag from indexmap dependency
Browse files Browse the repository at this point in the history
  • Loading branch information
Veykril committed Jun 30, 2024
1 parent 956c852 commit b60b27b
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 24 deletions.
2 changes: 0 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion crates/rust-analyzer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ always-assert = "0.2.0"
walkdir = "2.3.2"
semver.workspace = true
memchr = "2.7.1"
indexmap = { workspace = true, features = ["serde"] }

cfg.workspace = true
flycheck.workspace = true
Expand Down
28 changes: 19 additions & 9 deletions crates/rust-analyzer/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ use ide_db::{
imports::insert_use::{ImportGranularity, InsertUseConfig, PrefixKind},
SnippetCap,
};
use indexmap::IndexMap;
use itertools::Itertools;
use lsp_types::{ClientCapabilities, MarkupKind};
use paths::{Utf8Path, Utf8PathBuf};
Expand Down Expand Up @@ -382,8 +381,7 @@ config_data! {
/// 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.
// NOTE: we use IndexMap for deterministic serialization ordering
completion_snippets_custom: IndexMap<String, SnippetDef> = serde_json::from_str(r#"{
completion_snippets_custom: FxHashMap<String, SnippetDef> = serde_json::from_str(r#"{
"Arc::new": {
"postfix": "arc",
"body": "Arc::new(${receiver})",
Expand Down Expand Up @@ -1243,7 +1241,19 @@ impl Config {
}

pub fn json_schema() -> serde_json::Value {
FullConfigInput::json_schema()
let mut s = FullConfigInput::json_schema();

fn sort_objects_by_field(json: &mut serde_json::Value) {
if let serde_json::Value::Object(object) = json {
let old = std::mem::take(object);
old.into_iter().sorted_by(|(k, _), (k2, _)| k.cmp(k2)).for_each(|(k, mut v)| {
sort_objects_by_field(&mut v);
object.insert(k, v);
});
}
}
sort_objects_by_field(&mut s);
s
}

pub fn root_path(&self) -> &AbsPathBuf {
Expand Down Expand Up @@ -2640,9 +2650,8 @@ macro_rules! _config_data {

/// All fields `Option<T>`, `None` representing fields not set in a particular JSON/TOML blob.
#[allow(non_snake_case)]
#[derive(Clone, Serialize, Default)]
#[derive(Clone, Default)]
struct $input { $(
#[serde(skip_serializing_if = "Option::is_none")]
$field: Option<$ty>,
)* }

Expand Down Expand Up @@ -2725,7 +2734,7 @@ struct DefaultConfigData {
/// All of the config levels, all fields `Option<T>`, to describe fields that are actually set by
/// some rust-analyzer.toml file or JSON blob. An empty rust-analyzer.toml corresponds to
/// all fields being None.
#[derive(Debug, Clone, Default, Serialize)]
#[derive(Debug, Clone, Default)]
struct FullConfigInput {
global: GlobalConfigInput,
local: LocalConfigInput,
Expand Down Expand Up @@ -2770,7 +2779,7 @@ impl FullConfigInput {
/// All of the config levels, all fields `Option<T>`, to describe fields that are actually set by
/// some rust-analyzer.toml file or JSON blob. An empty rust-analyzer.toml corresponds to
/// all fields being None.
#[derive(Debug, Clone, Default, Serialize)]
#[derive(Debug, Clone, Default)]
struct GlobalLocalConfigInput {
global: GlobalConfigInput,
local: LocalConfigInput,
Expand Down Expand Up @@ -2932,7 +2941,7 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
"FxHashMap<Box<str>, Box<[Box<str>]>>" => set! {
"type": "object",
},
"IndexMap<String, SnippetDef>" => set! {
"FxHashMap<String, SnippetDef>" => set! {
"type": "object",
},
"FxHashMap<String, String>" => set! {
Expand Down Expand Up @@ -3347,6 +3356,7 @@ mod tests {
#[test]
fn generate_package_json_config() {
let s = Config::json_schema();

let schema = format!("{s:#}");
let mut schema = schema
.trim_start_matches('[')
Expand Down
12 changes: 6 additions & 6 deletions docs/user/generated_config.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -350,12 +350,6 @@ Default:
"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})",
Expand All @@ -367,6 +361,12 @@ Default:
"body": "Some(${receiver})",
"description": "Wrap the expression in an `Option::Some`",
"scope": "expr"
},
"Ok": {
"postfix": "ok",
"body": "Ok(${receiver})",
"description": "Wrap the expression in a `Result::Ok`",
"scope": "expr"
}
}
----
Expand Down
12 changes: 6 additions & 6 deletions editors/code/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -1187,12 +1187,6 @@
"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})",
Expand All @@ -1204,6 +1198,12 @@
"body": "Some(${receiver})",
"description": "Wrap the expression in an `Option::Some`",
"scope": "expr"
},
"Ok": {
"postfix": "ok",
"body": "Ok(${receiver})",
"description": "Wrap the expression in a `Result::Ok`",
"scope": "expr"
}
},
"type": "object"
Expand Down

0 comments on commit b60b27b

Please sign in to comment.