关于treesit安装的c语言的语法库不能用

执行命令M-x treesit-install-language-grammar后安装c语言,显示 Warning (treesit): Cannot activate tree-sitter, because language grammar for c is unavailable (version-mismatch): 15 怎么办?急死了

我的emacs是29.3

试试其他语言,做做排除法。

(setq treesit-language-source-alist
	  '((bash        "https://github.com/tree-sitter/tree-sitter-bash")
		(c           "https://github.com/tree-sitter/tree-sitter-c")))

类似上面这样做好设置

我做过这样的设置了.cpp可以正常安装,c就不可以

有无更加详细的环境信息,比如:

  1. 使用的 tree-sitter 动态链接库的版本。
  2. 使用的语法库的生成的 parser.c 的 cli 的版本(这个可能得看具体的仓库才能知道了)

由于目前 tree-sitter 已经 26 了,Emacs 29.3 差不多是在 tree-sitter 0.22 左右发布的。也许最好使用比较新的 Emacs 来使用较新的 tree-sitter 本体和语法库试试。

https://www.reddit.com/r/emacs/comments/1lce0sy/treesitter_claims_my_c_grammar_version_is_wrong/

这个问题有人提过,你参考下。

谢大佬,我去看看

这两个链接我一个打不开,求助

1 个赞

感谢~

这种兼容问题,最后其实也没给出解决答案。Re: Versions of language grammar library (was: master 3d3be6dd0eb 2/2: Lock tree-sitter language grammars to verified versions.) - Peter Oliver 。也许你得更新才能解决问题。

遇到过同样的问题,自己到 Releases · tree-sitter/tree-sitter-c 下载一个旧版本,比如 0.20.7 ,然后自己编译出 so 放到对应位置

tar -zxvf tree-sitter-c-0.20.7.tar.gz
cd tree-sitter-c-0.20.7
gcc -shared -fPIC     src/parser.c     -I./src     -o libtree-sitter-c.so
(use-package treesit-langs
  :straight (treesit-langs :type git
                           :host github
                           :repo "emacs-tree-sitter/treesit-langs"))

试试这个?

原因是 Treesit 执行的动态库版本不对, 设置:

  (setq treesit-language-source-alist
   '((c "https://github.com/tree-sitter/tree-sitter-c" "v0.23.6")
     (cpp "https://github.com/tree-sitter/tree-sitter-cpp")))

其中 v0.23.6 就是仓库的 分支/Tag, 找一个你能用的版本试试, 已知 v0.23.6 是适合 treesit 15/16 ?? 版本的

然后重新执行 M-x treeist-xxx-install 重新安装即可

太感谢了!现在解决了