Expand description
Arborium — High-performance syntax highlighting
Arborium provides batteries-included syntax highlighting powered by tree-sitter. It supports 60+ languages with automatic language injection (e.g., CSS/JS in HTML).
§Quick Start
ⓘ
use arborium::Highlighter;
let mut hl = Highlighter::new();
let html = hl.highlight("rust", "fn main() {}")?;
// Output: <a-k>fn</a-k> <a-f>main</a-f>() {}§HTML vs ANSI Output
Use Highlighter for HTML output (web pages, documentation):
ⓘ
use arborium::{Highlighter, Config, HtmlFormat};
// Default: custom elements (<a-k>, <a-f>, etc.)
let mut hl = Highlighter::new();
// Or use class-based output for CSS compatibility
let config = Config {
html_format: HtmlFormat::ClassNames,
..Default::default()
};
let mut hl = Highlighter::with_config(config);Use AnsiHighlighter for terminal output:
ⓘ
use arborium::AnsiHighlighter;
use arborium::theme::builtin;
let theme = builtin::catppuccin_mocha().clone();
let mut hl = AnsiHighlighter::new(theme);
let colored = hl.highlight("rust", "fn main() {}")?;
println!("{}", colored);§Language Support
Enable languages via feature flags:
[dependencies]
arborium = { version = "0.1", features = ["lang-rust", "lang-python"] }Or enable all languages:
[dependencies]
arborium = { version = "0.1", features = ["all-languages"] }§Supported Languages
§Permissively Licensed (97 languages, included by default)
| Language | Feature Flag | License |
|---|---|---|
| Ada | lang-ada | MIT |
| Agda | lang-agda | MIT |
| Asciidoc | lang-asciidoc | Apache-2.0 |
| Assembly | lang-asm | MIT |
| AWK | lang-awk | MIT |
| Bash | lang-bash | MIT |
| Batch | lang-batch | MIT |
| C | lang-c | MIT |
| C# | lang-c-sharp | MIT |
| Caddyfile | lang-caddy | MIT |
| Cap'n Proto | lang-capnp | MIT |
| Clojure | lang-clojure | Unlicense |
| CMake | lang-cmake | MIT |
| Common Lisp | lang-commonlisp | MIT |
| C++ | lang-cpp | MIT |
| CSS | lang-css | MIT |
| D | lang-d | MIT |
| Dart | lang-dart | MIT |
| Device Tree | lang-devicetree | MIT |
| Diff | lang-diff | MIT |
| Dockerfile | lang-dockerfile | MIT |
| DOT/Graphviz | lang-dot | MIT |
| Emacs Lisp | lang-elisp | MIT |
| Elixir | lang-elixir | Apache-2.0 |
| Elm | lang-elm | MIT |
| Erlang | lang-erlang | Apache-2.0 |
| Fish | lang-fish | Unlicense |
| F# | lang-fsharp | MIT |
| Gleam | lang-gleam | Apache-2.0 |
| GLSL | lang-glsl | MIT |
| Go | lang-go | MIT |
| GraphQL | lang-graphql | MIT |
| Groovy | lang-groovy | MIT |
| Haskell | lang-haskell | MIT |
| HCL | lang-hcl | Apache-2.0 |
| HLSL | lang-hlsl | MIT |
| HTML | lang-html | MIT |
| Idris | lang-idris | MIT |
| INI | lang-ini | Apache-2.0 |
| Java | lang-java | MIT |
| JavaScript | lang-javascript | MIT |
| Jinja2 | lang-jinja2 | Apache-2.0 |
| jq | lang-jq | MIT |
| JSON | lang-json | MIT |
| Julia | lang-julia | MIT |
| KDL | lang-kdl | MIT OR Apache-2.0 |
| Kotlin | lang-kotlin | MIT |
| Lean | lang-lean | MIT |
| Lua | lang-lua | MIT |
| Markdown | lang-markdown | MIT |
| MATLAB | lang-matlab | MIT |
| Meson | lang-meson | MIT |
| Ninja | lang-ninja | MIT |
| Nix | lang-nix | MIT |
| Objective-C | lang-objc | MIT |
| OCaml | lang-ocaml | MIT |
| Perl | lang-perl | MIT |
| PHP | lang-php | MIT |
| PostScript | lang-postscript | MIT |
| PowerShell | lang-powershell | MIT |
| Prolog | lang-prolog | MIT |
| Python | lang-python | MIT |
| Tree-sitter Query | lang-query | Apache-2.0 |
| R | lang-r | MIT |
| ReScript | lang-rescript | MIT |
| RON | lang-ron | MIT OR Apache-2.0 |
| Ruby | lang-ruby | MIT |
| Rust | lang-rust | MIT |
| Scala | lang-scala | MIT |
| Scheme | lang-scheme | MIT |
| SCSS | lang-scss | MIT |
| SPARQL | lang-sparql | MIT |
| SQL | lang-sql | MIT |
| SSH Config | lang-ssh-config | MIT |
| Starlark | lang-starlark | MIT |
| Svelte | lang-svelte | MIT |
| Swift | lang-swift | MIT |
| Text Proto | lang-textproto | ISC |
| Thrift | lang-thrift | MIT |
| TLA+ | lang-tlaplus | MIT |
| TOML | lang-toml | MIT |
| TSX | lang-tsx | MIT |
| TypeScript | lang-typescript | MIT |
| Typst | lang-typst | MIT |
| Uiua | lang-uiua | MPL-2.0 |
| Visual Basic | lang-vb | MIT |
| Verilog | lang-verilog | MIT |
| VHDL | lang-vhdl | MIT |
| Vimscript | lang-vim | MIT |
| Vue | lang-vue | MIT |
| WIT | lang-wit | Apache-2.0 WITH LLVM-exception |
| x86 Assembly | lang-x86asm | MIT |
| XML | lang-xml | MIT |
| YAML | lang-yaml | MIT |
| Yuri | lang-yuri | Apache-2.0 |
| Zig | lang-zig | MIT |
| Zsh | lang-zsh | MIT |
§GPL Licensed (1 languages, opt-in)
These require explicit opt-in via feature flags due to their copyleft license.
| Language | Feature Flag | License |
|---|---|---|
| nginx | lang-nginx | GPL-3.0 |
§Advanced Usage
For building custom grammar providers or working with raw spans, see the
advanced module.
Re-exports§
pub use arborium_tree_sitter as tree_sitter;
Modules§
Structs§
- Ansi
Highlighter - High-level syntax highlighter for ANSI terminal output.
- Config
- Configuration for highlighting.
- Grammar
Store - Thread-safe cache of compiled grammars.
- Highlighter
- High-level syntax highlighter for HTML output.
Enums§
- Error
- Error type for highlighting operations.
- Html
Format - HTML output format for syntax highlighting.
Constants§
- HIGHLIGHT_
NAMES - Standard highlight names used for syntax highlighting.
Functions§
- detect_
language - Detect the language from a file path or name.