treesit 已经合并进 master 分支了

@gangzhan 我报的 Bug 已经修复了。但是 indent 时报错的 Bug还在。

1 个赞

谢谢分享,很好看,它跟这个字体很像。细看感觉它的英文字符有中文结字风格:Hf 的横杠、E 第二横偏上;可能是我这里字体偏小, mMw 这几个字符有点太紧凑了;i 的风格有点跳脱,突然舍弃了圆体风格。(上面是我的业余感受)

跟圆体没多大关系吧,文楷文楷,很明显是以楷体的基底的嘛

部分字母做的出锋处理我比较喜欢,只不过感觉 * 号是真不好看,如果扁一点就好了;并且个人觉得还有个缺点是部分标点符号全宽和半宽的区别不是很明显,不过对我来说影响不大(跑题了,就此打住

我修改了下 @casouri 大佬的脚本,可以在 mingw64 中自动编译常用的几个语言定义,最后把 dist 目录下的 .dll 文件拷贝到 Emacs 的 bin 目录就好了。

Windows 上用上 tree-sitter 也很简单了。

3 个赞

这个东西厉害了,以后编译起来就简单多了

有个问题想问一下,假如说我在我的电脑上编译了一个模块,例如说 libtree-sitter-tsx.dll,那么在其他 Windows 电脑上可以直接拿过去用吗?如果可以的话,能否直接改个后缀(改成 libtree-sitter-tsx.so 放到 Linux 上),放到其他系统电脑上用呢?(可能问题有点小白了,但我真不懂这一块儿 :joy:

不同一平台的应该不能这样用。你不想编译可以用 @casouri 大佬发的版本,不过他没提供 Windows 的。

反正有这个脚本,生成下也很快。

好的,谢谢;主要是感觉一个个编译挺费劲的,我去学学这个脚本咋用

执行这个就是自动编译全部。

./batch.sh

看看这个

这也有个比较全的关于 tree-sitter 在 Emacs 中使用的文档

1 个赞

感谢,我基于这个fork了个仓库,用git action自动编译的windows 64位release可以在这里下载: Releases · lynnux/tree-sitter-module (github.com) 测试了下c+±ts-mode,代码着色有问题,imenu倒是没问题。

好啊,方便不想自己编译的 Windows 用户。

我这 c++-ts-mode 下 indent 有问题,有人提供了 patch,但我还没测试。 https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59498

@aqua0210 @lynnux 个人觉得,你们可以提个 PR 到 @casouri 的仓库,方便更多人看到。

我觉得应该完善下面这个官方的脚本。目前这个还是个人仓库的,临时用下就好了。

ts-mode 要改名为 typescript-ts-mode 了。看到 ts 第一反应是 typescript

https://lists.gnu.org/r/emacs-devel/2022-11/msg01587.html

https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=7fc0eae28f03601e25e2a60030ae2dc59085c6d2

这个改动感觉挺好的,不然别的都是 xxx-ts-mode,就 typescript 直接是 ts-mode,可能还以为是啥全局的 treesit 呢

不过我拉取上游编译后,我这边还残留了一个 ts-mode,不知道咋去除,调用的话也会显示没有相关的 library,但是我本地也没有相关的 elc 文件

我又 make uninstall 后重新 make distclean 然后 autogen configure 一遍下来后才没有的

编译好的 libtree-sitter-xx.so 是要加到 环境变量 吗?

你可以将它们复制到系统的标准动态库的位置,例如 /usr/local/lib,或者将它们保留在 /dist 中,然后通过设置 ‘treesit-extra-load-path’ 告诉 Emacs 在哪里可以找到这些语言定义。

如果是 Windows 系统,可以直接把 dll 文件拷贝到 Emacs 的 bin 目录下。

放在 ~/.emacs.d/tree-sitter/ 目录下也可以

一共可以放在三个地方,具体可以看一下 treesit-extra-load-path 的文档

首先会从 treesit-extra-load-path 里找(这个值需要你自己设),然后再去你 user-emacs-directory 下的 tree-sitter 里找,最后到系统默认动态库的地方找

请问如何能快速知道语法高亮是不是用了tree-sitter。

C-h m 就可以看到。比如 C++-ts-mode

The major mode is C++ mode defined in c-ts-mode.el:

Major mode for editing C++, powered by tree-sitter.