我最近一直在研究Emacs的次要模式,其部分功能是在單獨的緩衝區中顯示圖像。到目前爲止,我一直在使用這樣的函數:如何在Emacs中創建緩衝區本地鍵綁定?
(defun create-buffer-with-image (name)
(let ((buffer (generate-new-buffer name))
(image (get-svg-for-kanji-code name)))
(switch-to-buffer buffer)
(turn-on-iimage-mode)
(iimage-mode-buffer t)
(insert-image image)))
和它產生作爲參數傳遞的圖像的緩衝區,但關閉緩衝要求打CXķ和返回,它開始變得一段時間後很麻煩。簡化關閉這種瞬態緩衝區的方法是爲kill-this-buffer
函數設置一個鍵綁定,但它需要是緩衝區特定的,以免混淆其他任何東西。問題是如何通過創建緩衝區來實現這種綁定。
'地方設置key'修改本地鍵映射,在大多數情況下是主要模式鍵盤映射,這將影響使用該主要模式的所有*緩衝區。所以'local-set-key'是**不是**緩衝區本地效應。 (這只是「本地」,而不是每個緩衝區都可見的「全局」鍵映射。) – phils 2014-12-06 08:48:39
感謝您的回覆,@phils。我對你的評論做了一些調查。當我使用'iimage-mode'顯示圖像時,該緩衝區的主要模式是'Fundamental'(其他次要模式是'iImg'和'MRev')。在做了local-set-key綁定之後,我檢查了所有這些模式下的鍵綁定,並且他們都沒有顯示出你警告過我的行爲。根據我的看法,它確實會導致緩衝區局部效應。如果我在這裏丟失了重要的東西,請糾正我。 – 2014-12-21 14:06:46
在基本模式下,這是正確的。它不設置本地鍵盤映射,並且在這種情況下看起來'local-set-key'確實創建了緩衝區本地鍵盤映射。請注意,這不是正常行爲,因爲大多數主要模式都設置(和共享)本地鍵盤映射。 – phils 2014-12-21 20:39:26