Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to handle conflicting keybindings

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?

like image 898
Brian Carper Avatar asked Nov 18 '08 07:11

Brian Carper


2 Answers

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)))
like image 77
Emerick Rogul Avatar answered Nov 07 '22 06:11

Emerick Rogul


This question has been answered before: 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.

like image 44
Ryan C. Thompson Avatar answered Nov 07 '22 07:11

Ryan C. Thompson