不知道大家发现没,在 org 文档中,当代码块长到一个屏幕放不下的时候,并且碰巧是从下向上浏览,没有显示全部代码块,那么代码块就会渲染为普通的文本。只有当浏览到 #+begin_src 的时候才会渲染为代码。
补充两个截图,大家应该更容易明白我的意思(可以调整到合适位置 revert-buffer 一下就能复现):
不知道大家发现没,在 org 文档中,当代码块长到一个屏幕放不下的时候,并且碰巧是从下向上浏览,没有显示全部代码块,那么代码块就会渲染为普通的文本。只有当浏览到 #+begin_src 的时候才会渲染为代码。
补充两个截图,大家应该更容易明白我的意思(可以调整到合适位置 revert-buffer 一下就能复现):
比较卡的时候好像 font-lock 就是这样的,我用 nov.el 自定义了一些 font-lock 也是这样的。
没发现有这问题啊,怎么操作的,复现一下?
没错我也是这样子的
你在 org 文档中创建一个长一点的代码块,然后你把代码块开头 #+begin_src 移出屏幕,然后 revert-buffer 一下就可以复现了。
font-lock-update C-x x f
试了一下,没有出现不能高亮的现象
谢谢这个解决了我的问题
那有点奇怪,我在 emacs -Q 启动中也能复现这个问题
还有个疑问,我把这个函数绑定到 org-mode-hook 上,重新刷新 buffer 还是没有高亮,还要手动执行一下 font-lock-update
我也没办法了, font-lock-update 这个方法也是看其它的帖子发现的,我猜使用了 treesit 的 mode 可能会没这个问题,使用 font-lock 的就先忍忍了,要是这个问题解决了它干嘛要给 font-lock-update 默认绑定一个快捷键。
我一般编辑 org mode 里的源代码都是 C-c '
org-edit-special
,倒也不太在意 org-mode 里高亮是否正确了。
在家里电脑复现了,在公司电脑上没复现,不清楚什么原因
我一般不在org中写太长的代码,如果长的话放到源码文件里,再拉到org中