Question

Slime remaps several keys I like to use and have set in global-set-key.

I'd like to avoid directly editing slime.el.

What's the routine to override keys in a given mode?


Update:

In your .emacs, set the mode-map directly:

(define-key slime-mode-map "\M-n" 'next-line)
(define-key slime-mode-map "\M-p" 'previous-line)
Was it helpful?

Solution

It's not too easy to redefine a key for a mode since it can provide several keymaps. And there can be many modes that grab my favorite keys.

I solved it this way: I defined a minor mode that doesn't do anything except it has it's own keymap. I put some keys there i want to be really global.

;; my minor mode for really global keybindings
(defvar my-keys-minor-mode-map (make-keymap) "my-keys-minor-mode keymap.")                           
(define-minor-mode my-keys-minor-mode
  "My minor mode for global keybindings."
  :init-value t :lighter "" :keymap 'my-keys-minor-mode-map)
(defun my-minibuffer-setup-hook ()
  (my-keys-minor-mode 0))
(add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook)
(my-keys-minor-mode 1)



;; for example
(define-key my-keys-minor-mode-map (kbd "C-a") 'mark-whole-buffer)
...
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top