Hack Tree-Sitters HTML Debug Output To Dark Mode
I'm working on a Tree-Sitterts parser for Neopolitan. I'm using the -D
flag for command line tests to produce a log.html
file with a visual graph of the output. It's easier to figure out what's going on when things aren't going right.
The graph is produced by graphvizgv via an internal call STDIN call. The output is black text on a white background. As someone who like working in dark mode it's a bit of a flash-bang every time I switch to it.
To fix that, I pulled down the source codesc and made the following edits:
Add this to the style sheet section
body {
background-color: darkslategray;
}
Change:
fprintf(self->dot_graph_file, "graph {\nlabel=\"");
To:
fprintf(self->dot_graph_file, "graph {\nbgcolor=\"darkslategray\"\nlabel=\"");
Change:
fprintf(f, "digraph stack { \n");
To:
fprintf(f, "digraph stack { \nbgcolor=\"darkslategray\"\n");
Change:
fprintf(f, "digraph tree {\n");
To:
fprintf(f, "digraph tree {\nbgcolor=\"darkslategray\"\n");
Installing The Hack
Installing the modified version of Tree-Sitter is done by running:
cargo install --path cli
That drops the binary under:
~/.cargo/bin/tree-sitter
My main tree-sitter is under:
/opt/homebrew/bin/tree-sitter
I could switch things around to use the new one 100% of the time, but I just call the ~/.cargo/bin
version directly when testing like:
~/.cargo/bin/tree-sitter test
Notes
- The above changes the background color only. The text and lines stay black. It's possible to change them as well, but this is fine for me
-
graphviz must be installed to generate the html. I got it using the homebrew command
brew install graphviz
References
-
Graphviz
-
Tree-Sitter Source Code
-
Tree-Sitter
If all goes well, this is what I'll be using to do syntax highlighting for neopolitan in neovim