Caso d'uso classico:
- Inizi a registrare una macro:
C-x (
- Fai delle cose, diciamo
hello
. - Esegui un comando che genera un errore, diciamo
C-g
(ad esempio, esegui erroneamenteC-s
e devi annullarlo conC-g
, ora il tuo lavoro è perso).
Ora la tua registrazione finora è andata persa.
Vorrei riprendere da dove avevo interrotto prima di eseguire un comando che ha interrotto la mia registrazione. Ho guardato C-h f start-kbd-macro
, ma è scritto in C, quindi non posso modificarlo. Ho anche cercato una variabile simile current-kbd-macro
, ma finora non ne ho trovata nessuna.
Può essere recuperato?
Aggiornare:
Non riuscivo a capire perché C-u C-x (
non funzionasse per me, ma ho scoperto che era perché stavo testando C-g
.
Si scopre che C-g
è speciale - se si attiva un diverso tipo di errore, ad es
C-x ( M-: (signal 'quit nil)
Quindi questo interromperà la registrazione, ma last-kbd-macro
conterrà "M-: M-( signal 'quit nil"
, ma con
C-x ( C-g
Questo interrompe la registrazione e scarta qualsiasi cosa registrata. Come utente soddisfatto di Cg (come lo sono almeno due dei miei amici), questa è una distinzione piuttosto sfortunata. Ho provato a modificare keyboard-quit
, ma non c'è niente che io possa fare lì.
Sembra che l'unico modo per recuperarlo sia tramite recent-keys
e automaticamente capire dove è stato chiamato start-kbd-macro (o simile), come in kmacro-edit-lossage
.