highlighter: Fix to support custom language register. (#1064)

This commit is contained in:
Jason Lee 2025-07-15 19:24:25 +08:00 committed by GitHub
parent ffa0a2eb3a
commit 0fbe32c7d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -473,6 +473,12 @@ impl LanguageRegistry {
/// Returns the language configuration for the given language name.
pub fn language(&self, name: &str) -> Option<&LanguageConfig> {
// Try to get by name first, there may have a custom language registered
if let Some(language) = self.languages.get(name) {
return Some(language);
}
// Then try to get built-in language to support short language names, e.g. "js" for "javascript"
let language = Language::from_str(name);
self.languages.get(language.name())
}
@ -482,6 +488,8 @@ impl LanguageRegistry {
mod tests {
use gpui::rgb;
use crate::highlighter::LanguageConfig;
#[test]
fn test_syntax_colors() {
use super::{HighlightTheme, SyntaxColors};
@ -498,8 +506,14 @@ mod tests {
#[test]
fn test_registry() {
use super::LanguageRegistry;
let registry = LanguageRegistry::new();
let mut registry = LanguageRegistry::new();
registry.register(
"foo",
&LanguageConfig::new("foo", tree_sitter_bash::LANGUAGE.into(), vec![], "", "", ""),
);
assert!(registry.language("foo").is_some());
assert!(registry.language("rust").is_some());
assert!(registry.language("rs").is_some());
assert!(registry.language("javascript").is_some());