¿Cómo eliminar una clave de un mapa de teclas en modo menor en Emacs?
keyboard-shortcuts elisp (3)
Así es como lo hago. Aunque podría mejorarse.
(defun get-key-combo (key)
"Just return the key combo entered by the user"
(interactive "kKey combo: ")
key)
(defun keymap-unset-key (key keymap)
"Remove binding of KEY in a keymap
KEY is a string or vector representing a sequence of keystrokes."
(interactive
(list (call-interactively #''get-key-combo)
(completing-read "Which map: " minor-mode-map-alist nil t)))
(let ((map (rest (assoc (intern keymap) minor-mode-map-alist))))
(when map
(define-key map key nil)
(message "%s unbound for %s" key keymap))))
;;
;; Then use it interativly
;; Or like this:
(keymap-unset-key ''[C-M-left] "paredit-mode")
..
..
He asignado globalmente Cc/
to as-jump-mode pero reftex-mode (un modo menor para las citas utilizadas con AucTeX) anula esta tecla con alguna función que nunca uso.
Intenté local-unset-key
pero solo desenlaza claves del mapa del modo principal actual.
¿Cómo reftex-mode-map
Cc/
from reftex-mode-map
sin hacer cambios en reftex.el?
Puede cambiar un mapa de claves existente usando define-key
. Al pasar nil
como la función a llamar, la clave se desvinculará. Supongo que deberías poder hacer algo como:
(define-key reftex-mode-map "/C-c/" nil)
Por supuesto, debes hacer esto en algún tipo de gancho, por ejemplo:
(defun my-reftex-hook ()
(define-key reftex-mode-map "/C-c/" nil))
(add-hook ''reftex-mode-hook ''my-reftex-hook)
Puedes usar el siguiente comando:
(define-key reftex-mode-map "/C-c/" nil)
para desasignar esta función de Cc /
... Pero se debe cargar reftex-mode-map
, de modo que reftex-mode-map
estará disponible para su modificación