Caso de uso clássico:
- Você começa a gravar uma macro:
C-x (
- Você faz algumas coisas, digamos
hello
. - Você executa um comando que gera um erro, digamos
C-g
(por exemplo, você executa por enganoC-s
e precisa cancelar issoC-g
agora, agora seu trabalho está perdido).
Agora sua gravação até agora está perdida.
Gostaria de retomar de onde parei antes de executar um comando que interrompeu minha gravação. Eu olhei C-h f start-kbd-macro
, mas está escrito em C, então não posso ajustá-lo. Eu também procurei por uma variável como current-kbd-macro
, mas não encontrei nenhuma até agora.
Pode ser recuperado?
Atualizar:
Eu não conseguia descobrir por que C-u C-x (
não estava funcionando para mim, mas descobri que é porque estava testando C-g
.
Acontece que C-g
é especial - se você disparar um tipo diferente de erro, por exemplo,
C-x ( M-: (signal 'quit nil)
Então isso interromperá a gravação, mas last-kbd-macro
conterá "M-: M-( signal 'quit nil"
, mas com
C-x ( C-g
Isso interrompe a gravação e descarta qualquer coisa gravada. Como um usuário que gosta de Cg (como são pelo menos dois de meus amigos), essa é uma distinção bastante infeliz. Eu tentei editar keyboard-quit
, mas não há nada que eu possa fazer lá.
Parece que a única maneira de recuperar isso é através de recent-keys
e descobrir automaticamente onde uma macro start-kbd-macro (ou similar) foi chamada, como em kmacro-edit-lossage
.