En general, no es posible.
La razón es que puede haber varios mapas que definen el mismo enlace, y no hay forma de averiguar automáticamente cuál desea. (en su ejemplo, elisp-slime-nav-mode
es un modo menor). Entonces, el único enfoque realmente confiable es que usted descubra exactamente qué definición desea.
Dicho esto ... hay un posible hack (no siempre existe ...) Parte de lo que lo hace difícil es que el enlace que desea reasignar ya está potencialmente enmascarado por un mapa de teclas activo malvado, por lo que obtener el enlace actual de M-.
es inútil
(defun lookup-no-evil (key)
;; excluding evil maps from the lookup. not sure if
;; anything more than evail-normal-state-map is needed
(let* ((evil-maps (list evil-normal-state-map))
(bindings
(remq nil
(mapcar
(lambda (map)
(unless (memq map evil-maps)
(lookup-key map key)))
(current-active-maps)))))
(when bindings
;; let's assume the first one is the right one.
;; Given that minor modes are at the beginning
;; (although this is *not* documented so should not
;; be relied upon), it might be what we would have
;;without evil-mode indeed
(car bindings))))
(defmacro evil-remap (from to)
;; assuming that we want to put it in the normal-state map.
;; not sure about that
`(define-key evil-normal-state-map ,to
(lambda ()
(interactive)
(call-interactively (lookup-no-evil ,from)))))
(evil-remap (kbd "M-.") (kbd "C-]"))
Normalmente no uso el mal en absoluto, por lo que podría ser necesario hacer ajustes (ver comentarios incrustados)
Además, un enfoque más limpio sería buscar los enlaces una vez (en un enlace de modo, por ejemplo), en lugar de buscar dinámicamente cada vez que se presiona el teclado. Pero no estoy seguro de qué gancho malvado usar, así que esto se deja como ejercicio;) (y dependiendo del orden que use para sus modos menores, o si los alterna dinámicamente, puede ser incorrecto)