Emacs Eglot and Tree-Sitter
After a long wait, I finally decided to move away from apt-get install Emacs and decided to compile the 2023 stable Emacs release which is 29.
The 2 major reasons why I wanted to move to Emacs 29 eglot
and tree-sitter
.
To read more about eglot
and tree-sitter.
To compile Emacs on Debian
based get the dependencies
sudo apt build-dep emacs && \ 8s
sudo apt install libgccjit0 libgcc-10-dev libjansson4 libjansson-dev gnutls-bin libtree-sitter-dev
Check GCC
version
gcc --version
gcc (Debian 12.2.0-14) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Get the tree-sitter
git clone git@github.com:tree-sitter/tree-sitter.git
Build tree-sitter
cd tree-sitter/
make
sudo make install
Once make install
done library should be available `/usr/local/lib`
ls -ltrh /usr/local/lib/libtree-sitter.*
-rwxr-xr-x 1 root root 261K Aug 11 23:22 /usr/local/lib/libtree-sitter.a
-rwxr-xr-x 1 root root 214K Aug 11 23:22 /usr/local/lib/libtree-sitter.so.0.0
lrwxrwxrwx 1 root root 21 Aug 11 23:22 /usr/local/lib/libtree-sitter.so.0 -> libtree-sitter.so.0.0
lrwxrwxrwx 1 root root 21 Aug 11 23:22 /usr/local/lib/libtree-sitter.so -> libtree-sitter.so.0.0
Clone Emacs from the Savannah and compile with native compilation and tree-sitter
git clone --single-branch --branch=emacs-29 http://git.savannah.gnu.org/r/emacs.git emacs-29
cd emacs-29
./autogen.sh
./configure --with-native-compilation --with-tree-sitter
make -j$(nproc)
To check the CPU’s
echo $(nproc)
Check Emacs if it works or not
./src/emacs -Q
C-x C-c
to quit Emacs.
To install Emacs
and emacsclient
to /usr/local/bin
along with supporting libraries and man pages using the Makefile
sudo make install
To install in a different location, pass the full path using the --prefix
option to make, e.g make install --prefix /yourdirectory/emacs
Now your Emacs is ready to use emacs
Language Grammar for tree-sitter
By default no language grammar is available, so you need to install it on your own
To check if you have language grammar available you can evaluate Elisp expression, M-x ielm
ELISP> (treesit-language-available-p 'python)
t
ELISP> (treesit-language-available-p 'golang)
nil
Emacs will return t
if it’s a known language and nil
otherwise.
If not you can install using
M-X treesit-install-language-grammar