https://lists.gnu.org/archive/html/emacs-devel/2022-01/msg00410.html
作者主页的安装文档 https://archive.casouri.cat/note/2021/emacs-tree-sitter/index.html
大致试着安装了一下:
- 首先安装下 tree-sitter 的库
git clone https://github.com/tree-sitter/tree-sitter.git --single-branch --depth=1
cd tree-sitter
make
make install
注:我是 debian 11,默认将生成的库文件放在了/usr/local/lib
目录下,如果你也跟我一样编译 Emacs
的时候找不到 libtree-sitter.so
文件的话,可以尝试设置下LD_LIBRARY_PATH
或者直接在 /usr/lib/x86_64-linux-gnu
下建立两个软链接,链接到 libtree-sitter.so.0.0或者直接复制过去就可以编译成功了,编译成功的话就不需要下面这步了。
sudo ln -s /usr/local/lib/libtree-sitter.so.0.0 libtree-sitter.so.0
sudo ln -s /usr/local/lib/libtree-sitter.so.0.0 libtree-sitter.so
- 编译 emacs
git clone https://github.com/casouri/emacs.git --single-branch --depth=1 --branch ts
./autogen.sh
./configure --with-tree-sitter
make
PS: 按作者主页的说法,编译的时候会自动检测,不需要加 --with-tree-sitter 也可以。
-
获取一些语言的定义?
作者写了个脚本自动获取、编译,很方便
git clone https://github.com/casouri/tree-sitter-module.git
cd tree-sitter-module
./batch-new.sh
编译成功后会将生成的文件放置在 dist
目录下,将这些文件放在比如 /usr/lib/x86_64-linux-gnu
目录下,当然,你也可以建一个软链接链接过来,或者设置下 LD_LIBRARY_PATH
都可以。
- 查看文档 除了作者主页的文档外,还可以查看内置的文档,打开你刚刚编译好的 emacs,然后输入
C-h i m elisp RET g Parsing Program Source RET
好了…
- 其他
恩嗯嗯…
作者安装语言定义的脚本里只有 C, JSON, Go, HTML, JavaScript, CSS and Python
这几个语言,你可以通过使用 build-new 这个脚本安装
这个仓库里所支持的所有语言,比如安装 javascript:
./build-new javascript
不再这个仓库里的可以自己修改一下 build-new 这个脚本,很简单:
在 lang=$1
这行下面添加 address=$2
,把 # Retrieve sources
. 这行下面的
git clone "https://github.com/tree-sitter/tree-sitter-${lang}.git" \
--depth 1
修改成
if [ "$#" == "2" ]; then
git clone $address --depth 1
else
git clone "https://github.com/tree-sitter/tree-sitter-${lang}.git" \
--depth 1
fi
例子:添加 elisp:
./build-new.sh elisp https://github.com/Wilfred/tree-sitter-elisp.git
两个参数,第二个参数是地址,第一个参数是语言名,就是地址 tree-sitter- 后面的那个