2008-11-18 174 views
10

paredit綁定M-<up>M-<down>,但我想要windmove擁有這些鑰匙扣。我已將paredit-mode設置爲僅在某些模式下激活,但windmove設置爲全局運行。我希望windmove贏得勝利,但是當它加載時,paredit會竊取這些鍵盤綁定。如何處理衝突的鑰匙扣

我該如何輕鬆阻止帕瑞迪跺踏風箏的鍵帽?我一直在進入paredit.el並且註釋了設置鍵綁定的行,但是這遠非理想(我必須記住每次更新paredit時都要這樣做)。

更普遍的是,我可以加載一個elisp文件,同時「保護」某些鍵綁定不被改變嗎?

回答

11

您可以使用eval-after-load加載它後配置paredit的行爲,在其評論中描述:

;;; Customize paredit using `eval-after-load': 
;;; 
;;; (eval-after-load 'paredit 
;;;  '(progn ...redefine keys, &c....)) 

因此,舉例來說:

(eval-after-load 'paredit 
    '(progn 
    (define-key paredit-mode-map (kbd "<M-up>") nil) 
    (define-key paredit-mode-map (kbd "<M-down>") nil))) 
+0

這也是一個很好的通用答案 - 非常感謝。我的一個貢獻是要指出,如果你還想改變一個鍵綁定(而不是刪除它),你可以在上面放置'nil`作爲paredit函數的名稱,就像我爲「forward- (定義關鍵信用額度模式映射(kbd「」)'paredit-forward-slurp-sexp))) – quux00 2012-08-17 12:57:12

1

這個問題已經回答了前:Globally override key binding in Emacs

您可以使用您的首選鍵綁定創建您自己的次要模式並在全局範圍內啓用它,以覆蓋所有其他鍵綁定。