A Simple tree-sitter Config That Works
Recently, I’ve discovered a number of posts on Reddit — like
tree-sitter-hl-mode does not do
anything
or How to use Emacs 29
Tree-sitter?
— and decided to share my simple tree-sitter
setup that
seems to be working on my Emacs 28.2 like a charm.
Step 1. OS: Installing the tree-sitter
app
First of all, I’ve downloaded the latest pre-build binary archive for my
system from this GitHub
repo,
in my case that is tree-sitter-linux-x64.gz because I’m on Pop!_OS
20.10. Then I’ve unpack the archive, put the standalone binary in my
$HOME/bin
that is in my $PATH
and therefore is accessible from
anywhere, and changed its mode to executable by chmod +x tree-sitter
.
Step 2. Emacs
Step 2.1. Emacs: Installing tree-sitter
packages
Then I’ve installed tree-sitter
(the parsing system) and tree-sitter-langs
(the grammar bundle) Emacs packages using package-list-packages
.
Step 2.2. Emacs: Configuring tree-sitter
I’ve added the following lines to my ~/.emacs
.
;;;; `TREE-SITTER'
;; 2022-12-04
(require 'tree-sitter)
(require 'tree-sitter-langs)
(global-tree-sitter-mode)
(add-hook 'python-mode-hook #'tree-sitter-hl-mode)
That’s it. Quite simple, isn’t it?
Please pay attention to the last line. It seems that the tree-sitter
highlighting mode provided by tree-sitter-hl-mode
is not activated when
you load a file into the buffer even if the global tree sitter mode is on.
Adding the hook for the particular source code mode solves this problem.
Result
Now I have a pretty looking Python code.
More on tree-sitter
and its internals can be found at https://tree-sitter.github.io/tree-sitter/.
Happy tree-sittering!