use tree_sitter_highlight::{HighlightConfiguration, HighlightEvent, Highlighter};
use crate::highlight::HIGHLIGHT_NAMES;
pub fn highlight_bash(lines: &[u8]) -> Result<Vec<HighlightEvent>, String> {
let mut highlither = Highlighter::new();
let language = tree_sitter_bash::LANGUAGE;
let mut bash_config = HighlightConfiguration::new(
language.into(),
"bash",
tree_sitter_bash::HIGHLIGHT_QUERY,
"",
"",
)
.unwrap();
bash_config.configure(&HIGHLIGHT_NAMES);
let highlights: Result<Vec<HighlightEvent>, String> =
if let Ok(lines) = highlither.highlight(&bash_config, lines, None, |_| None) {
lines
.collect::<Result<Vec<_>, _>>()
.map_err(|e| e.to_string())
} else {
Err("Failed to highlight".to_string())
};
highlights
}