Con mucha frecuencia tendría que realizar el conjunto de pasos que requieren múltiples pulsaciones de teclas. Para la misma sesión, esos pasos se pueden grabar en una macro de teclado.
Un ejemplo es guardar una operación de búsqueda / reemplazo ejecutada con frecuencia como una macro de teclado. Pero esa macro se pierde cuando salgo de emacs.
¿Cómo puedo guardar mi macro de teclado de uso frecuente como una función Lisp?
En aras de la simplicidad, quiero guardar la acción de reemplazar "abc" con "def" como una función para poder reutilizarlo en las sesiones de emacs.
fuente
insert-kbd-macro
. Esa es la respuesta a la pregunta (y el resto de esta respuesta proporciona ayuda adicional).insert-kbd-macro
depende de si lo nombró usandokmacro-name-last-macro
(como en la respuesta anterior) oname-last-kbd-macro
.name-last-kbd-macro
formato (como se menciona anteriormente en @phils) terminará con una cadena, no una función.fset
ting eso a un símbolo le permite ejecutar la macro usando Mx, pero no llamarlo desde lisp (commandp
->t
,functionp
->nil
). Curiosamente, incluso llamarlo a través decall-interactively
no funciona (aunque puede usarloexecute-kbd-macro
para ejecutarlo).@lunaryorn ya mencionó elmacro, pero como autor de este paquete, pensé que sería bueno dar un ejemplo.
Si graba una macro como esta:
F3 C-e M-b M-u C-a C-n F4
Entonces haciendo M-x elmacro-show-last-macro upcase-last-wordproduce un buffer con:
fuente
El paquete elmacro le permite ver la última macro grabada con Emacs Lisp adecuada M-x elmacro-show-last-macro.
fuente