C++ mode裸配置,编辑时仍然卡得没法使用,用profiler后发现是font-lock的问题。关掉font-lock就很流畅,但是没有代码高亮,请问怎么解决?
我没有试过 只是感觉可行
他能够parser一部分的代码 这样就可以只高亮你看的部分了吧
emacs -q下c++ mode的关键词高亮也会很卡么,如果不是,你得查查是具体是哪个插件的高亮导致的了。
是指按住光标移动的时候卡吗
就是输入的时候卡,好几秒才显示字符
emacs -q 后在C++文件内输入不卡,但是在orgmode的C++代码块内输入还是有一点点延迟
谢谢大家,重启后,现在在C++文件内输入很流畅了,主要是在orgmode的C++代码块中输入很卡,使用emacs -q后也会有一点点的延迟。
modern-cpp-font-lock
你是使用这个变得卡的吗?
看了下我那边的profiler,没有condition-case到save-current-buffer那块的逻辑。
font-lock
有时候是会出些莫名奇妙的问题,比如:
万万想不到几个前导空格就让 font-lock
翻船了。
我也遇到这个问题了,编辑比较大的代码文件输入会很卡,快速键入时回显很慢,有时候输 入的字符还是顺序错乱的,需要设置一下 jit-lock:
;; jit-lock
(use-package jit-lock
:ensure nil
:custom
(jit-lock-defer-time 0.25)
(jit-lock-stealth-time 16))
这样改了以后有极少数地方(如:completion buffer)代码着色会感觉到延迟,但是敲代码时总算是找回了跟手的感觉。
学习了。
另外,使用 c++-ts-mode
(parser-based font lock) 的高亮应该会比传统 font lock 快很多?前天测试了一份一千多行的 clojure-ts-mode, 速度相比传统font lock 有点儿秒杀那味儿了。又用json-ts-mode测试了2万多行的json文件,虽然还是有点儿跟手,但轻量编辑起来舒服多了。
请问怎么才能编译出来 json 的 language grammar 啊?谢谢
Warning (treesit): Cannot activate tree-sitter, because language grammar for json is unavailable (not-found): (libtree-sitter-json.so libtree-sitter-json.dylib) No such file or directory
用官方仓库的脚本就可以了,自动的。
刚才看别的帖子里说要 build 的时候 --with-tree-sitter
我已经在重新 build 了
这个不用加,只要你系统中安装了 tree-sitter,就会自动开的。 看官方文档,别看那些过时的 Blog 了。 https://git.savannah.gnu.org/cgit/emacs.git/tree/admin/notes/tree-sitter/starter-guide?h=emacs-29
看不懂这个脚本该什么时候用,在什么文件夹下用。
我用 Homebrew 安装的 tree-sitter,但是我没有~/.tree-sitter
这个文件夹
- 用系统的包安装工具(brew 或者 macports 都行)安装好 tree-sitter
- 安装 Emacs 29,确保开启了 tree-sitter 支持,自己编译的话是默认开启。
- 确保 Emacs 在你的 PATH 中,
emacs --version
能看到正确的 Emacs 版本 - 在 Emacs 的源码目录(比如我的是
~/src/emacs
)下的admin/notes/tree-sitter/build-module
中执行./batch.sh
就会自动编译 language grammar。
cd ~/src/emacs/admin/notes/tree-sitter/build-module
./batch.sh
- 自己把 dist文件夹下的 dylib 文件拷贝到 ~/.emacs.d/tree-sitter 下,没有就自己建立一个。
大概是这样,具体就看文档吧。
https://git.savannah.gnu.org/cgit/emacs.git/tree/admin/notes/tree-sitter/starter-guide?h=emacs-29
我好像有点明白了,tree-sitter 是骨架,language grammar 是单独买来的砖块。
这个是烧砖的砖窑,而且自动把烧好的砖垒进 Emacs 里了。 原来需要自己搬砖。