2008-11-18 173 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

您可以使用您的首选键绑定创建您自己的次要模式并在全局范围内启用它,以覆盖所有其他键绑定。