Add overrides for all languages

Co-authored-by: Julia Risley <julia@zed.dev>
This commit is contained in:
Max Brunsfeld 2023-01-20 10:39:31 -08:00
parent 2967b46a17
commit 2aa7a9e95b
31 changed files with 269 additions and 13 deletions

View file

@ -830,15 +830,24 @@ impl Language {
let mut values = HashMap::default();
for (ix, name) in query.capture_names().iter().enumerate() {
if let Some(override_name) = name.strip_prefix("override.") {
let value = self
.config
.overrides
.remove(override_name)
.ok_or_else(|| anyhow!("no such override {override_name}"))?;
let value = self.config.overrides.remove(override_name).ok_or_else(|| {
anyhow!(
"language {:?} has override in query but not in config: {override_name:?}",
self.config.name
)
})?;
values.insert(ix as u32, value);
}
}
if !self.config.overrides.is_empty() {
let keys = self.config.overrides.keys().collect::<Vec<_>>();
Err(anyhow!(
"language {:?} has overrides in config not in query: {keys:?}",
self.config.name
))?;
}
self.grammar_mut().override_config = Some(OverrideConfig { query, values });
Ok(self)
}