views:

182

answers:

2

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?

+4  A: 

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
  '(progn
     (define-key paredit-mode-map (kbd "<M-up>") nil)
     (define-key paredit-mode-map (kbd "<M-down>") nil)))
Emerick Rogul
A: 

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.

Ryan Thompson