我使用hide-show折叠文字的某些部分,并使用下面的代码显示隐藏线的数量。
但是,当文件足够大(例如C ++或LaTeX)并且我崩溃所有区域(从而创建了数十个叠加层)时,Emacs变得非常慢到无法使用。即使将标记从一行移动到另一行也需要半秒左右。
有没有办法解决这个问题?
(defun display-code-line-counts (ov)
(overlay-put ov 'display
(format "...%d..."
(count-lines (overlay-start ov)
(overlay-end ov))
))
(overlay-put ov 'face '(:foreground "red" :box (:line-width 1 :style none)))
)
(setq hs-set-up-overlay 'display-code-line-counts)
编辑:原因是emacs变得非常慢是因为linum minor模式创建了数千个(隐藏)叠加层,这些叠加层与hide-show一起折叠。有没有办法来解决这个问题?还是更好的行号模式?
答案 0 :(得分:3)
正如你在标题中所说,叠加可以使Emacs变慢。
有时你可以做的一件事就是在当前的光标位置(point
)周围重新设置一组叠加层。你这样做是使用功能
的 overlay-recenter
强>
作为Elisp手册,节点Managing Overlays告诉您:
此功能重新定位当前缓冲区的叠加层 位置
POS
。这使得近距离位置的叠加查找更快POS
,但远离POS
的位置较慢。可以运行一个向前扫描缓冲区,创建叠加层的循环 如果你先
(overlay-recenter (point-max))
,请加快速度。