package ochre

  1. Overview
  2. Docs
Syntax highlighter using TextMate grammars and themes

Install

dune-project
 Dependency

Authors

Maintainers

Sources

ochre-1.1.0.tbz
sha256=a8e38fbcd22fbb68b0f7d93b36a2ba1670e8bd061b43a0177226738307183a32
sha512=7b344c3812be283b0101078564e564732f878ad226c7ce0212c9e9139fb41a291e4d31ad52c949f2978c48e04240d4d22b5b4ae63808e15a21c44a2fbeed8a22

Description

ochre is a syntax highlighter inspired by Shiki, using TextMate grammars and themes. It supports HTML output (inline styles or CSS classes), ANSI terminal colors, LaTeX, SVG, and raw token output.

Added to opam-repository:

README

ochre

A syntax highlighter for OCaml using TextMate grammars and themes, inspired by Shiki.

docs/video/ochre-examples.gif

Installation

opam install ochre -y

Quick start

let theme = Ochre.Theme.nord in
let highlighter = Ochre.load_from_files_exn ["path/to/ocaml.tmLanguage.json"] in
let html = Ochre.to_html highlighter ~theme ~lang:"ocaml" source_code

Load any TextMate grammar with tm-grammars

tm-grammars packages a collection of TextMate grammars for OCaml, so you can load grammars in ochre without managing JSON files on disk.

Install the bundled grammar package:

opam install tm-grammars -y

Then load a grammar from OCaml and create a highlighter:

let theme = Ochre.Theme.nord in
let highlighter = Ochre.load_exn [ ("ocaml", Tm_grammars.ocaml) ] in
let html = Ochre.to_html highlighter ~theme ~lang:"ocaml" "let x = 42"

Output formats

ochre can render highlighted code to several output formats (also called backends):

  • HTML — Self-contained <pre><code> blocks with inline styles or CSS classes. Supports multi-theme via CSS custom properties, line numbers, and configurable class prefixes. See rendered example.
  • SVG — Standalone <svg> elements with monospace <text> and per-token <tspan> styling. Open preview: SVG rendered example. Source: .svg file.
  • ANSI — 24-bit color escape sequences for terminal display.
  • LaTeX\textcolor commands inside an ochrehighlight environment. Requires the xcolor and soul packages. See rendered PDF (source: .tex file).

All backends share the same interface: create a highlighter, pick a theme, and call the corresponding to_* function.

Documentation

Contribute

Set up the development environment:

make init

Build the project:

make build

Run the test suite:

make test

You can also preview highlighted output in a browser with make test-browser, which serves a sample on port 5000.

Credits

Dependencies (7)

  1. plist-xml >= "0.5.0"
  2. dune-configurator >= "2.9" & build
  3. conf-oniguruma
  4. melange-json-native >= "2.0.0"
  5. yojson >= "2.0.0"
  6. ocaml >= "4.14.0"
  7. dune >= "3.22"

Dev Dependencies (11)

  1. ocamlformat = "0.29.0" & with-dev-setup
  2. ocamlformat-mlx with-dev-setup
  3. ocamlmerlin-mlx with-dev-setup
  4. ocaml-lsp-server with-dev-setup
  5. mlx with-test
  6. alcotest with-test
  7. tm-grammars >= "2.0.0" & with-test
  8. odoc >= "3.1.0" & with-doc
  9. tiny_httpd with-test
  10. html_of_jsx >= "0.0.9" & with-test
  11. ezjsonm with-test

Used by (2)

  1. html_of_jsx >= "0.0.9"
  2. ochre-cli >= "1.1.0"

Conflicts

None