implement very basic highlighting

This commit is contained in:
2023-07-07 01:47:46 +00:00
parent 27596798d6
commit c2fcc8b6ee
17 changed files with 87 additions and 20 deletions

22
tests/test_highlight Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/sh
# `tree-sitter test` doesn't work to validate syntax highlighting for two reasons:
# - it identifies a file's language only by its filetype (not shebang/regex), but nix-shell has no filetype
# - it requires the language to support comments, but nix-shell doesn't have those
#
# hence this custom testing tool.
#
# usage: test_highlight <TEST_NAME>
#
# upon execution, performs this sequence:
# 1. highlights the file at `highlight/<TEST_NAME>`.
# 2. asserts the result's body against `hightlight/<TEST_NAME>.spec.html`
here=$(dirname $(realpath $0))
input_file="$here/highlight/$1"
spec_file="$here/highlight/$1.spec.html"
# cd into this directory before highlighting because paths specified in the tree-sitter config are relative to PWD
cd "$here" && XDG_CONFIG_HOME="$here/config" tree-sitter highlight --scope "source.nix_shell" --html "$input_file" | \
htmlq 'body' | \
diff -u "$spec_file" '/dev/stdin'