感谢大佬的回复。
我不咋熟悉elisp的写法,根据treesit-auto的README,它貌似是针对原生Emacs的配置,尝试写了如下代码:doom/package.el中
:recipe (:host github :repo "renzmann/treesit-auto" :files ("*.el" "dist")))
在doom/config.el中
(use-package! treesit-auto
:custom
(treesit-auto-install 'prompt)
:config
(treesit-auto-add-to-auto-mode-alist 'all)
(global-treesit-auto-mode))
是模仿以前copilot的配置方式,但是依旧报错tree-setter-rust.so的错误,还有就是报找不到tr
treesit-auto文件的错误Error caused by user’s config or system: /Users/hal/.config/doom/config.el, (file-missing Cannot open load file No such file or directory treesit-auto)
package.el中的完整代码
(package! treesit-auto :recipe (:host github :repo "renzmann/treesit-auto" :files ("*.el" "dist")))
doom里面不要enable tree-sitter,还没处理跟29.2自带的treesit的兼容
多谢大佬指点。我目前是将所有的动态库安装成功了。然后不能启动和生效。不知道该怎么在doom 里面设置。
init.el文件里面不要启用tree-sitter,直接用emacs29自带的
请教下大家,用tree-sitter的主要需求是什么?
我试用neovim时,tree-sitter是默认,总感觉除了高亮语法外也没什么需要了,其它lsp也覆盖了。
我主要是想在Emacs中写React代码的tsx语法可以代码高亮。tree-sitter在官方的的playground是可以解析出代码的语法树。
https://tree-sitter.github.io/tree-sitter/playground
我记得有包基于tree-sitter,可以实现代码块的mark, 但我用的也不多。的确, 我现在用tree-sitter,主要是高亮语法,比系统自带的tree-sit 配置简单。
@songpeng @54yeying 谢谢哇,我去了解下。看来大家主要可能主要也是用来语法高亮,有语法树可能可以搞跳转之类的,虽然和lsp功能有重叠。
今天找到了一种方法,可以比较好的显示语法高亮:
源码编译Emacs 29.2 选项中选择包含tree-sitter
Doom Emacs配置如下
~/.doom.d/package.el中添加:
(package! tree-sitter)
(package! tree-sitter-langs)
~/.doom.d/config.el中添加
(use-package! tree-sitter
:config
(require 'tree-sitter-langs)
(global-tree-sitter-mode)
(add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode))
效果如下:
之前的配置只显示了const, import,return 这几个关键字的颜色。现在可以比较好的显示颜色。所有的语法解析器动态库文件是之前配置时已经装好了。
init.el 里 :tools 开启 tree-sitter , :lang 里 开启 (cc +lsp +tree-sitter) 就可以了,哦,我这里是 C语言
多谢大佬答疑,我之前用brew 装的emacs-plus,是这么配置但是不能高亮。然后重新下载源码编译了29.2,配置了上面的内容,包括之前也配置了:tools :lang里面的相关配置。
我刚刚把package.el和config.el中的配置删除,重新doom sync后,也可以显示高亮了。我看的emacs-plus默认貌似有配置tree-sitter,但是当时不管怎么配置,还用了auto-treesitter这个包才高亮显示了几个关键字。
aagain
2024 年8 月 18 日 08:16
18
请问,能不能具体介绍一下利用doomemacs中的配置来把emacs设置成一个C语言的IDE?谢谢!
我发现doomemacs的说明文档里面把+lsp划掉了,是不是用了+tree-sitter就不需要+lsp了?
Tree-sitter 跟 LSP 是兩種不同的東西. 通常兩個都需要!~
aagain
2024 年8 月 18 日 10:52
20
请问一下,如何自动编译正在打开的的文件。我现在是用emacs打开一个vterm, 然后在里面像命令行一样输入cc ***.c 编译,在运行.out 文件。有没有自动一点的方法?谢谢!
楼上大佬说的,两个都要的。
lsp我用ccls(clangd也没差啦),通常要想办法生成compile_commands.json,一般来说可以依靠构建系统来生成,实在不行的话自己了解一下工程的编译flags、头文件搜索目录、附加的宏,然后自己用python写一个小脚本按格式生成compile_commands.json就可以了。
觉得json文件麻烦的话,ccls还有一种简单一点的方式,把通用的flags、头文件搜索路径等写到.ccls文件里,也是可以的。clangd的话我记得我试过也有类似的方式(自己看看对应的文档了)
vterm的话,我也是自己写了一个快捷键来触发编译(可以搜索一下我怕曾经提问过论坛的大佬如何向vterm输入命令并执行)。
我比较笨,我写了一个函数先去加载project根目录下的一个.dark.el文件,这个文件里面包含了一些编译命令(这样只要每个project我都放写了不同命令的.dark.el文件就行了),然后将里面的编译、清理、生成compile_commands.json分别绑定到F5、6、7、8就可以了,一按就弹出vterm窗口并开始执行。