diff --git a/Cargo.toml b/Cargo.toml index 47422a9..3e266fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -87,13 +87,13 @@ serde_json = "1.0" encoding = "0.2" kstring = "1.0" typed-arena = "2.0.1" +maplit = "1.0" [dev-dependencies] assert_fs = "1.0" assert_cmd = "2.0" predicates = "2.0" criterion = "0.3" -maplit = "1.0" [profile.dev] panic = "abort" diff --git a/src/config.rs b/src/config.rs index 2a21607..ae099da 100644 --- a/src/config.rs +++ b/src/config.rs @@ -167,6 +167,40 @@ impl TypeEngineConfig { pub fn patterns(&self) -> impl Iterator { let mut patterns = self.patterns.clone(); + patterns + .entry("lock".into()) + .or_insert_with(|| GlobEngineConfig { + extend_glob: Vec::new(), + engine: EngineConfig { + check_file: Some(false), + ..Default::default() + }, + }); + patterns + .entry("rust".into()) + .or_insert_with(|| GlobEngineConfig { + // From a spell-check perspective, these are more closely related to Rust than Toml + extend_glob: vec!["Cargo.toml".into()], + engine: EngineConfig { + dict: Some(DictConfig { + extend_words: maplit::hashmap! { + "flate".into() => "flate".into(), + "ser".into() => "ser".into(), + }, + ..Default::default() + }), + ..Default::default() + }, + }); + patterns + .entry("python".into()) + .or_insert_with(|| GlobEngineConfig { + // From a spell-check perspective, these are more closely related to Python than Toml + extend_glob: vec!["pyproject.toml".into()], + engine: EngineConfig { + ..Default::default() + }, + }); patterns.entry("cert".into()).or_insert_with(|| { GlobEngineConfig { extend_glob: vec![ diff --git a/src/policy.rs b/src/policy.rs index 5c85e83..87787c8 100644 --- a/src/policy.rs +++ b/src/policy.rs @@ -194,7 +194,11 @@ impl<'s> ConfigEngine<'s> { } } - let type_config = self.init_file_config(type_engine.engine); + let mut engine = default.clone(); + engine.update(&type_engine.engine); + engine.update(&overrides); + + let type_config = self.init_file_config(engine); types.insert(type_name, type_config); } default.update(&overrides);