use std::sync::OnceLock;
use giallo::Registry;
static REGISTRY: OnceLock<Option<Registry>> = OnceLock::new();
pub(crate) const INJECTION_TARGETS: [(&str, &str); 6] = [
("source.js", "javascript"),
("source.ts", "typescript"),
("source.ts.ng", "angular-ts"),
("text.html.derivative", "html-derivative"),
("text.html.derivative.ng", "angular-html"),
("text.html.markdown", "markdown"),
];
pub(crate) fn load_registry() -> Option<&'static Registry> {
let registry = REGISTRY.get_or_init(|| {
let mut registry = Registry::builtin().ok()?;
for (scope, language) in INJECTION_TARGETS {
registry.add_alias(language, scope);
}
registry.link_grammars();
Some(registry)
});
registry.as_ref()
}