Cas d'utilisation classique:
- Vous commencez à enregistrer une macro:
C-x (
- Vous faites des trucs, disons
hello
. - Vous exécutez une commande qui génère une erreur, disons
C-g
(par exemple, vous exécutez par erreurC-s
et vous devez l'annuler avecC-g
, maintenant votre travail est perdu).
Jusqu'à présent, votre enregistrement est perdu.
Je voudrais reprendre là où je m'étais arrêté avant d'exécuter une commande qui a interrompu mon enregistrement. J'ai regardé C-h f start-kbd-macro
, mais c'est écrit en C, donc je ne peux pas le modifier. J'ai également cherché une variable comme current-kbd-macro
, mais je n'en ai pas trouvé jusqu'à présent.
Peut-il être récupéré?
Mettre à jour:
Je ne pouvais pas comprendre pourquoi C-u C-x (
ne fonctionnait pas pour moi, mais j'ai découvert que c'était parce que je testais avec C-g
.
Il s'avère que C-g
c'est spécial - si vous déclenchez un autre type d'erreur, par exemple
C-x ( M-: (signal 'quit nil)
Ensuite, cela arrêtera l'enregistrement, mais last-kbd-macro
contiendra "M-: M-( signal 'quit nil"
, mais avec
C-x ( C-g
Cela arrête l'enregistrement et supprime tout ce qui a été enregistré. En tant qu'utilisateur Cg-happy (comme au moins deux de mes amis), c'est une distinction plutôt malheureuse. J'ai essayé le montage keyboard-quit
, mais je ne peux rien y faire.
Il semble que la seule façon de récupérer cela est via recent-keys
et de déterminer automatiquement où une macro start-kbd (ou similaire) a été appelée, comme dans kmacro-edit-lossage
.