2
我是emacs lisp的新手。我想知道在elisp中鍵入緩衝區時是否可以監聽鍵盤事件。我讀了關於read-key-sequence/read-key-sequence-vector/read-event/read-key的文檔,結果發現這些命令阻止了緩衝輸入流,因爲當調用時,隨後的擊鍵不會顯示在緩衝區。例如。如果我在當前緩衝區中鍵入「go」,然後調用read-key-sequence然後鍵入「o」,則第二個「o」被視爲不是緩衝區內容文本字符的命令序列。emacs - 在輸入緩衝區時收聽鍵盤事件
雖然我可能已經找到一種方法來解決這個問題,這是對擊鍵插回到編程緩衝區:
(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) { ... })
這只是我當然希望。 :) 謝謝。
你想達到什麼目的?通常情況下,你可以將鍵或鍵序列綁定到函數,或者你可以使用'pre-command-hook'和'post-command-hook'等事件鉤子來做「神奇」的事情。 – Lindydancer
我想在當前緩衝區中輸入東西時在每個關鍵筆劃上附加一些行爲;行爲可以是任何東西 - 就像在* Message *緩衝區中顯示有趣的東西。關鍵是我不希望這些行爲中斷正常的打字流程 - 不切換回迷你緩衝區。我會看看前後鉤子。謝謝。 – Shawn