tui_syntax/lib.rs
1//! # tui-syntax
2//!
3//! Tree-sitter based syntax highlighting for TUI applications.
4//!
5//! This crate provides syntax highlighting that integrates with [ratatui](https://ratatui.rs),
6//! returning styled `Line` and `Span` types ready for rendering.
7//!
8//! ## Features
9//!
10//! - Tree-sitter based highlighting (accurate, fast)
11//! - Helix-compatible TOML theme format
12//! - Built-in themes (One Dark, GitHub Light)
13//! - SQL language support built-in
14//! - Extensible to other languages via tree-sitter grammars
15//!
16//! ## Example
17//!
18//! ```rust
19//! use tui_syntax::{Highlighter, themes, sql};
20//!
21//! // Create highlighter with default dark theme
22//! let mut highlighter = Highlighter::new(themes::one_dark());
23//!
24//! // Register SQL language
25//! highlighter.register_language(sql()).unwrap();
26//!
27//! // Highlight some SQL
28//! let lines = highlighter.highlight("sql", "SELECT * FROM users WHERE id = 1;").unwrap();
29//!
30//! // `lines` is Vec<ratatui::text::Line> ready to render
31//! ```
32
33mod highlighter;
34pub mod languages;
35mod theme;
36pub mod themes;
37
38pub use highlighter::{HighlightError, Highlighter};
39pub use languages::{html, json, sql, Language, LanguageError};
40pub use theme::{Style as ThemeStyle, StyleModifier, Theme, ThemeError};