highlighter: Fix to support custom language register. (#1064)
This commit is contained in:
parent
ffa0a2eb3a
commit
0fbe32c7d7
1 changed files with 15 additions and 1 deletions
|
|
@ -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());
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue