Me he encontrado con algunas situaciones en las que sería muy conveniente que el mapa de teclas de un modo principal actúe como un mapa de teclas alternativo para otro modo principal. Por ejemplo:
- Escribo mucho LaTeX en algunos de mis documentos de organización, por lo que sería genial tener
latex-modecomandos fácilmente disponibles durante la ediciónorg-mode. - Frecuenta una sala de IRC con soporte de Markdown, por lo que también sería bueno tener
markdown-modeteclas agregadaserc-mode.
En ambos casos, este mapa de teclas adicional debería actuar como una reserva (por eso no puedo usar un modo menor para esto). No quiero que los comandos de látex anulen ninguna org-modetecla. Lo que quiero es:
si una clave está definida en latex-mode-mapY no está definida,
org-mode-mapentonces use el latex-mode-mapenlace .
P: ¿Cómo puedo configurar un mapa de teclas como un mapa de teclas alternativo para un modo mayor?
O
P: ¿Cómo puedo copiar claves de un mapa de modo principal a otro, sin anular nada?
Solo para aclarar. Sé que podría definir estas claves una por una, pero sería infinitamente más conveniente tener una solución automatizada.
fuente

make-composed-keymap.Respuestas:
Esto resultó ser más simple de lo esperado. Como se sugiere en los comentarios aquí y sobre la pregunta:
Esto creará un mapa de teclas que es una copia
erc-mode-mappero que también hereda demarkdown-mode-map. Por lo tanto, todas lasmarkdownteclas se sombrearán cada vez que choquen con lasercteclas.Si no desea algunas de las claves del mapa de teclas retroceso a eclipsar a la kemap principal, justo desactivarlas en la principal.
fuente
define-keyel valor de retorno demake-composed-keymappuede tener efectos secundarios inesperados en los mapas de teclas originales, y sospecho que lo mismo podría aplicarse a esteappendedmapa manual . Si desea utilizardefine-key, parece más seguro crear un nuevo mapa de teclas cuyo mapa de teclas principal sea un mapa de teclas compuesto.(define-key erc-mode-map "\C-c\C-s" nil), lamarkdown-modeclave correspondiente seguirá estando disponible incluso en los buffers erc.make-composed-keymapdocumentación dice que "un enlace nulo en MAPS anula cualquier enlace correspondiente en PADRE, pero no anula los enlaces correspondientes en otros mapas de teclas de MAPS". Comomarkdown-mode-mapes PADRE en su ejemplo, ¿esperaría que esenilenlace inhiba el enlace de rebajas?(make-composed-keymap (list erc-mode-map markdown-mode-map))tendría el efecto que usted describió.cl-copy-listRealmente no hará lo que quieres. Si quería copiar el mapa de teclas, entonces debería haberlo usadocopy-keymap.Como mencionó @Malabarba, puede usarlo
make-composed-keymappara eso. Pero si realmente desea que el nuevo mapa de teclas herede de ambos mapas de teclas, por lo que modificar el nuevo mapa de teclas no afecta a ninguno de los otros dos mapas de teclas, debe hacerlo en dos pasos:Esto se debe a
define-keyque a veces se pueden modificar los mapas pasados como primer argumentomake-composed-keymappero no aquellos pasados como segundo. Supongo que deberíasM-x report-emacs-bugy solicitar quemake-composed-keymapaceptes una lista de mapas de teclas como segundo argumento, para que puedas hacerfuente