我一直在尝试修改vlf,以便当点接近当前批次的边缘时,通常滚动会重新加载文件的其他部分。这么多工作,但我遇到了一个奇怪的问题。
我正在通过这样的建议实施重新加载。
(defadvice scroll-up (after vlf-scroll-up activate)
"In `vlf-mode', scrolling will reload sections to avoid getting
near the edge of the block."
(vlf-force-near-center))
vlf-force-near-center
是我编写的一个函数,用于在必要时重新加载文件。它工作正常,message
末尾的 a 表示该点位于新批次的中间。但是,在函数完成和显示完成刷新之间的某个时间,该点移动到缓冲区的开头附近,但不是一直移动。它似乎已经到了文件的顶部,然后将该点移到了屏幕的中心。
为了弄清楚发生了什么,我做了(debug-on-entry 'vlf-force-near-center)
。逐步执行该功能,它按预期工作。然而,在它完成之后(我曾经c
让它运行到完成),点停留在它应该在的地方。
我看了看,post-command-hook
两者after-change-functions
都是零。
我有一个复杂的 .emacs,但如果我运行 emacs,问题也会出现
emacs -Q --load ~/emacs/vlf.el very-large-file.txt
所以我有两个问题,可以直接和间接地解决我的问题。
- 为什么点在移动?
- 为什么我通过调试器运行时不会出现问题?