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. /// Returns the language configuration for the given language name.
pub fn language(&self, name: &str) -> Option<&LanguageConfig> { 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); let language = Language::from_str(name);
self.languages.get(language.name()) self.languages.get(language.name())
} }
@ -482,6 +488,8 @@ impl LanguageRegistry {
mod tests { mod tests {
use gpui::rgb; use gpui::rgb;
use crate::highlighter::LanguageConfig;
#[test] #[test]
fn test_syntax_colors() { fn test_syntax_colors() {
use super::{HighlightTheme, SyntaxColors}; use super::{HighlightTheme, SyntaxColors};
@ -498,8 +506,14 @@ mod tests {
#[test] #[test]
fn test_registry() { fn test_registry() {
use super::LanguageRegistry; 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("rust").is_some());
assert!(registry.language("rs").is_some()); assert!(registry.language("rs").is_some());
assert!(registry.language("javascript").is_some()); assert!(registry.language("javascript").is_some());