2016-03-05 38 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它只能設置。 –

相關問題