ポイントが現在のバッチの端に近づいたときに、通常スクロールするとファイルの追加部分が再ロードされるように、 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
andとafter-change-functions
andの両方を見ました。
複雑な .emacs を使用していますが、emacs を実行すると問題が発生します。
emacs -Q --load ~/emacs/vlf.el very-large-file.txt
だから私は、私の問題に直接的および間接的な解決策を与える2つの質問があります.
- なぜポイントが移動するのですか?
- デバッガを実行しても問題が発生しないのはなぜですか?