我是 emacs lisp 的新手。我想知道在 elisp 中是否可以在输入缓冲区时监听键盘事件。我阅读了有关 read-key-sequence / read-key-sequence-vector / read-event / read-key 的文档,结果发现这些命令阻止了缓冲输入流程,因为在调用时,后续的击键不会出现在缓冲区。例如,如果我在当前缓冲区中键入“go”然后调用 read-key-sequence 然后键入“o”,则第二个“o”被视为命令序列而不是缓冲区内容文本的字符。
尽管我可能已经找到了解决此问题的方法,但就是以编程方式将击键插入缓冲区:
(catch 'break
(while
(progn
(let
((strokes (read-key-sequence-vector nil)))
(if
(equal strokes [27 27 27])
(throw 'break nil)
(insert strokes)))
t)))
我更愿意看看是否有更好的方法来实现这一点。如果 elisp 可以像在 javascript 中那样做事件驱动的东西,那就太好了
someObject.addEventListener('keydown', function (e) { ... })
这当然只是我的希望。:) 谢谢。