Take the 2-minute tour ×

paredit binds M-<up> and M-<down>, but I want windmove to own those keybindings. I have paredit-mode set to activate in certain modes only, but windmove is set to run globally. I want windmove to win, but paredit steals those keybindings when it loads.

How can I easily stop paredit from stomping on windmove's keybindings? I have been going into paredit.el and commenting out the lines which set the keybinding, but this is far from ideal (I have to remember to do this every time I update paredit).

More generally, can I load an elisp file while "protecting" certain keybindings from being changed?

share|improve this question
add comment

2 Answers

up vote 11 down vote accepted

You can use eval-after-load to configure paredit's behavior after loading it, as described in its comments:

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

So, for example:

(eval-after-load 'paredit
     (define-key paredit-mode-map (kbd "<M-up>") nil)
     (define-key paredit-mode-map (kbd "<M-down>") nil)))
share|improve this answer
This is a also great general purpose answer - thanks so much. My one contribution is to point out that if also you want to alter a keybinding (rather than remove it), you would put the name of the paredit function where Emerick put the nil above, like I've done for "forward-slurp": (eval-after-load 'paredit '(progn (define-key paredit-mode-map (kbd "<M-right>") 'paredit-forward-slurp-sexp))) –  quux00 Aug 17 '12 at 12:57
add comment

This question has been answered before: http://stackoverflow.com/questions/683425/globally-override-key-binding-in-emacs

You create your own minor mode with your preferred keybindings and enable it globally, so that it overrides all other keybindings.

share|improve this answer
add comment

Your Answer


