A CMake build script is pre-provided; use that to generate a build system, then invoke it.
cmake -B bld
cmake --build bld
This will compile and link a shared library tree-sitter-int
within the
bld
subdirectory. It is recommended to copy it into
~/.tree_sitter/bin
or alike. For the tree-sitter CLI to look in the
right place, alter parser-directories
in ~/tree-sitter/config.json
. See official docs for more info.
Alternatively, use a compiler (and lots of flags) to build it. Make sure to change the output file name to the proper extension based on your platform.
gcc -O3 -march=native src/parser.c -shared -flto -fPIC -o tree-sitter-int.so -lm -lpthread -Wall -Wextra
NOTE: Only one of the following needs to be completed.
npm install
npx tree-sitter generate
NOTE: Assuming you’ve built tree-sitter from source using Cargo
and have successfully installed the CLI executable somewhere in your PATH environment variable, you can now just generate the grammar.
tree-sitter generate
Now that you have successfully generated the parser, the src
directory has been populated with C
source code representing the grammar, which can be built into a shared library and used by many different programs. See instructions above on building the shared object.
NOTE: Emacs changes every day, so the info here may be out of date. Consult the documentation within Emacs for best results.
If tree-sitter-major-mode-language-alist
is not nil, as in you
have set it to another value and would like to retain it, use
(add-to-list 'tree-sitter-major-mode-language-alist '(int-mode . int))
,
and don’t forget to also do this with int-ts-mode
.
(setq tree-sitter-major-mode-language-alist '((int-mode . int) (int-ts-mode . int)))
Then use tree-sitter as you would normally. Try
M-x tree-sitter-query-builder
while in a int-mode buffer!
Also run the one above for older versions if you would like the old
tree-sitter API to work (i.e. tree-sitter-query-builder
), as the
legacy tree-sitter functions are still included.
If treesit-extra-load-path
is not nil, as in you have set it to
another value and would like to retain it, use
(add-to-list 'treesit-extra-load-path "path/to/here/bld")
.
Otherwise, if this is the only extra load path needed, use setq
.
(setq treesit-extra-load-path '("path/to/here/bld"))
Then navigate to a buffer containing Intercept source code and try
treesit-explore-mode
. When it asks for a language, input int
(short
for Intercept
). A new buffer will open containing the AST for the
contents of the buffer—or, at least, the grammar’s current best
approximation of it. You can even navigate through it, highlight
different portions, etc. Very educational!
In the Intercept repository, you will find a int-ts-mode.el
in the
editor subdirectory which can be loaded and subsequently used for
tree-sitter based syntax highlighting.