Caso de uso clásico:
- Empiezas a grabar una macro:
C-x (
- Haces algunas cosas, digamos
hello
. - Ejecutas un comando que arroja un error, digamos
C-g
(por ejemplo, ejecutas por errorC-s
y tienes que cancelarlo conC-g
, ahora tu trabajo está perdido).
Ahora tu grabación hasta ahora está perdida.
Me gustaría continuar donde lo dejé antes de ejecutar un comando que interrumpió mi grabación. Lo miré C-h f start-kbd-macro
, pero está escrito en C, por lo que no puedo modificarlo. También busqué una variable como current-kbd-macro
, pero no encontré ninguna hasta ahora.
¿Se puede recuperar?
Actualizar:
No podía entender por qué C-u C-x (
no funcionaba para mí, pero descubrí que es porque estaba probando con C-g
.
Resulta que C-g
es especial, si activa un tipo diferente de error, por ejemplo
C-x ( M-: (signal 'quit nil)
Entonces esto detendrá la grabación, pero last-kbd-macro
contendrá "M-: M-( signal 'quit nil"
, pero con
C-x ( C-g
Esto detiene la grabación y descarta todo lo grabado. Como usuario feliz de Cg (como lo son al menos dos de mis amigos), esta es una distinción bastante desafortunada. Intenté editar keyboard-quit
, pero no hay nada que pueda hacer allí.
Parece que la única forma de recuperar esto es a través de recent-keys
y descubrir automáticamente dónde se llamó a start-kbd-macro (o similar), como en kmacro-edit-lossage
.