我一直在嘗試修改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
表示該點位於新批次的中間。但是,在函數完成和顯示刷新完成之間的某個時間點,該點將移動到緩衝區的開始附近,但不是全部。它似乎已經到了文件的頂部,然後將點移動到了屏幕的中心。
爲了弄清楚發生了什麼,我做了(debug-on-entry 'vlf-force-near-center)
。通過該功能,它按預期工作。但是,在完成之後(我使用c
讓它運行完成),該點保持在它應該在的位置。
我看着post-command-hook
和after-change-functions
,兩者都是零。
我有一個複雜的.emacs,但問題也存在,如果我通過
emacs -Q --load ~/emacs/vlf.el very-large-file.txt
運行的emacs所以我有兩個問題,將給予直接和間接解決我的問題。
- 爲什麼這一點是移動?
- 爲什麼在運行調試器時不會發生問題?