バッファを編集しないキーストローク(フックなど)を検出する最良の方法は何ですか?つまり、ポイントモーションの矢印キー、への呼び出しbeginning-of-buffer
などです。
その理由はycmd
、emacsのバインディングに取り組んでおり、ユーザーが編集を停止してバッファー内を移動していることを(少なくともヒューリスティックに)検出できるようにしたいためです。これは、解析のためにバッファの内容を出荷する良い機会です。vimクライアントは、ユーザーが挿入モードを終了したときにこれを実行し、私はその動作をエミュレートしようとしています。
self-insert-command
を使用する代わりに、タイマーをキャンセルして再スケジュールすることをお勧めします。この方法では、ユーザーが何かを行っても、「何か」がテキスト挿入でない限り、タイマーはリセットされません。
after-change-functions
は、テキストの変更に反応するための一般的なメカニズムです。
post-command-hook
ます。それはすべてでトリガーされるため、必要なアクションを実行する前に、トリガーされたものに対してフィルタリングを行う必要がある場合があります。
buffer-chars-modified-tick
関数が役立つ場合があります。