最近我一直在开发一个 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)))
这段代码使用传入的图像生成缓冲区,但关闭缓冲区需要按下 C-x k 和 Return,久而久之变得繁琐。简化关闭临时缓冲区的方法是绑定一个键来执行 kill-this-buffer
函数,但需要进行缓冲区特定的设置,以免影响其他内容。问题在于如何在创建缓冲区时进行此类绑定。
local-set-key
修改本地键映射,大多数情况下是主模式键映射,这将影响使用该主模式的所有缓冲区。因此,local-set-key
不是缓冲区本地效果。(它只是相对于“全局”键映射而言的“本地”)。 - philsiimage-mode
显示图像时,该缓冲区的主要模式为Fundamental
(附加的次要模式为iImg
和MRev
)。在进行local-set-key
绑定后,我检查了所有这些模式中的按键绑定,但没有一个显示出您警告我的行为。在我看来,这实际上会导致缓冲区本地效果。如果我漏掉了重要的东西,请纠正我。 - Wojciech Gacfundamental-mode
中是正确的。它不设置本地键映射,而且在这种情况下,local-set-key
确实会创建一个缓冲区本地键映射。只需注意,这不是正常行为,因为大多数主要模式都设置(并共享)本地键映射。 - phils