先说一下系统环境,在ubuntu22.04 server服务器中,手动编译的emacs-29.3,配置完tree-sitter之后,感觉高亮显示的颜色和之前使用的ide相差很大,能否自己配置高亮显示的颜色。如下图中
求助是否有办法修改这个颜色,我google并没有找到有类似的示例。希望有大神已经有过类似的配置可以参考一下。 我使用的配置是基于 子龙山人 推荐的配置修改的 GitHub - condy0919/.emacs.d: 一个快速且实用的 Emacs 配置
先说一下系统环境,在ubuntu22.04 server服务器中,手动编译的emacs-29.3,配置完tree-sitter之后,感觉高亮显示的颜色和之前使用的ide相差很大,能否自己配置高亮显示的颜色。如下图中
求助是否有办法修改这个颜色,我google并没有找到有类似的示例。希望有大神已经有过类似的配置可以参考一下。 我使用的配置是基于 子龙山人 推荐的配置修改的 GitHub - condy0919/.emacs.d: 一个快速且实用的 Emacs 配置
同一段代码,在terminal的emacs中打开是下图中的效果
可以的,但是有个前提,就是你用的语言的 treesitter 可以识别到你要求的这些语义。
具体判断方式 M-x treesit-explore-mode, 然后光标移动到你想要区别的节点,然后看看 tree sitter 解析出来的类型是否是不一样的。
我使用的是c语言,请问有可以供参考的配置吗
你可以先按上面我补充的方式检查一下是否能解析出来
你需要按一下回车选语言才可以
点击这些红色的部分,就可以跳转到源代码,你看看你想要区别开的内容,红色的 type 是否一样。如果是不一样,就好办,如果是一样的话,就需要写一些高亮逻辑,有些语义上的区分可能很难甚至无法写出来。
感谢大佬,我自己研究一下看看。
具体修改的方式是改 treesit-font-lock-settings
。比如
(setq-local treesit-font-lock-settings
(append
treesit-font-lock-settings
(treesit-font-lock-rules ... 这里写规则)))
具体可以看 treesit-font-lock-settings
和 treesit-font-lock-rules
的文档
好的,非常感谢,我会去看这个文档。
是的,但是你可以尝试将 (declaration )
里面的 identifier 高亮成不同的颜色
好的,我会试试,非常感谢!
试试这个,我没实际运行。
(setq-local treesit-font-lock-settings
(append
treesit-font-lock-settings
(treesit-font-lock-rules
:language 'c
:override t
:feature 'definition
;; Highlights identifiers in declarations.
'((declaration
declarator: (_)
;; set color here or use any face you want
@ansi-color-red)))))
不过原来 c-ts-mode 是用了 c-ts-mode–fontify-declarator 这个函数来做高亮的,也许写死反而不是更好的选择。你可以考虑 advice 一下这个函数。
好的,我试了一下,但是好像没有生效,我在此基础上,再根据文档调一下试试,非常感谢~~