diff --git a/Cargo.lock b/Cargo.lock index 4b7791e0e3abbefaa3c9ab36ac6dfa39449ac2c3..b1ba19ec318ac197fbffeeb10ebf04337653d164 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12077,7 +12077,7 @@ dependencies = [ "paths", "schemars", "serde", - "serde_json", + "serde_json_lenient", "snippet", "util", ] diff --git a/crates/snippet_provider/Cargo.toml b/crates/snippet_provider/Cargo.toml index 6bdc4bbb07209f4cdefb15c8b8fac08729037988..3e312a0923263a97403145628be1bc51e322c8c8 100644 --- a/crates/snippet_provider/Cargo.toml +++ b/crates/snippet_provider/Cargo.toml @@ -18,7 +18,7 @@ gpui.workspace = true parking_lot.workspace = true paths.workspace = true serde.workspace = true -serde_json.workspace = true +serde_json_lenient.workspace = true snippet.workspace = true util.workspace = true schemars.workspace = true diff --git a/crates/snippet_provider/src/format.rs b/crates/snippet_provider/src/format.rs index 2a8acf0d654ff418fc6692d80e8f7430eb3b8192..a52df70412359340f801b744e0c5134f71b4ea4b 100644 --- a/crates/snippet_provider/src/format.rs +++ b/crates/snippet_provider/src/format.rs @@ -5,7 +5,7 @@ use schemars::{ JsonSchema, }; use serde::Deserialize; -use serde_json::Value; +use serde_json_lenient::Value; #[derive(Deserialize)] pub struct VSSnippetsFile { @@ -20,7 +20,7 @@ impl VSSnippetsFile { .into_generator() .into_root_schema_for::(); - serde_json::to_value(schema).unwrap() + serde_json_lenient::to_value(schema).unwrap() } } diff --git a/crates/snippet_provider/src/lib.rs b/crates/snippet_provider/src/lib.rs index d5f3de1b647ec7cf4ce1e962956d854f9e4aa584..dc625779b37bc0124d1d452266a223143e320c27 100644 --- a/crates/snippet_provider/src/lib.rs +++ b/crates/snippet_provider/src/lib.rs @@ -98,7 +98,8 @@ async fn process_updates( let Some(file_contents) = contents else { return; }; - let Ok(as_json) = serde_json::from_str::(&file_contents) else { + let Ok(as_json) = serde_json_lenient::from_str::(&file_contents) + else { return; }; let snippets = file_to_snippets(as_json); diff --git a/crates/snippet_provider/src/registry.rs b/crates/snippet_provider/src/registry.rs index 0abc7e84b2a2031eb3d354f3cea544cb67ca5ba3..b4b3e3282afffae05030672f1a3e57cd36a88017 100644 --- a/crates/snippet_provider/src/registry.rs +++ b/crates/snippet_provider/src/registry.rs @@ -37,7 +37,8 @@ impl SnippetRegistry { } pub fn register_snippets(&self, file_path: &Path, contents: &str) -> Result<()> { - let snippets_in_file: crate::format::VSSnippetsFile = serde_json::from_str(contents)?; + let snippets_in_file: crate::format::VSSnippetsFile = + serde_json_lenient::from_str(contents)?; let kind = file_path .file_stem() .and_then(|stem| stem.to_str().and_then(file_stem_to_key));