2016-03-05 62 views
1

我使用一种模式(merlin,但没关系),当在其中显示类型信息时打开名为*merlin-type*的缓冲区。我希望能够在该缓冲区中输入q以关闭它。没有特定于我可以连接到的缓冲区的模式;我想要做的是创建一个缓冲区本地键绑定;我该如何做/我还应该做些什么?特定于某个缓冲区的键绑定

+0

有点困惑 - 你说你运行的模式 - 如何定义运行模式?有没有定义任何模式钩子?如果是这样,您可以创建特定于模式的键盘映射并使用它在本地绑定q以退出该模式。没有足够的细节更具体。 –

+0

merlin打开的缓冲区(在C-C C-t上)不运行merlin模式本身。这只是一个消息缓冲区,它包含了我所指定的表单类型。当我知道打开这个类型的缓冲区时,没有钩子被调用。我能想到的唯一的事情就是具有一致的名称。 – Isaac

+0

只是一个想法:你可以自己推导一个合适的模式,并添加一个条目到'auto-mode-alist',使缓冲区处于该模式?不知道这是否是处理这个问题的正确方法,但它应该非常简单。 –

回答

1

有钩子,这不是模式特定的。例如

(add-hook 'post-self-insert-hook #'DWIM) 

(add-hook 'post-command-hook #'DWIM) 

然后

(defun DWIM() 
    (when (string= MyPrefferedName (buffer-name (get-buffer (current-buffer)))) 
    DoWhatIWant)) 

(defun DWIM() 
     (when (buffer-live-p MyPrefferedBuffer) 
     DoWhatIWant)) 
+0

问题是缓冲区没有切换到,所以它不是当前缓冲区。 – Isaac

+0

@Isaac如果特定的键绑定应该在某个缓冲区中处于活动状态,那么只有当它处于最新状态时才有意义。 AFAIU它只能设置。 –

相关问题