Klasyczny przypadek użycia:
- Zaczynasz rejestrować makro:
C-x (
- Robisz coś, powiedzmy
hello
. - Wykonujesz polecenie, które generuje błąd, powiedzmy
C-g
(np. Błędnie uruchomiłeśC-s
i musisz to anulowaćC-g
, teraz twoja praca jest utracona).
Twoje dotychczasowe nagranie zostało utracone.
Chciałbym wznowić od miejsca, w którym skończyłem, zanim wykonałem polecenie, które przerwało moje nagrywanie. Spojrzałem C-h f start-kbd-macro
, ale jest napisane w C, więc nie mogę go poprawić. Również szukałem takiej zmiennej current-kbd-macro
, ale jak dotąd nie znalazłem żadnej.
Czy można to odzyskać?
Aktualizacja:
Nie mogłem zrozumieć, dlaczego C-u C-x (
dla mnie nie działało, ale odkryłem, że to dlatego, że testowałem C-g
.
Okazuje się, że C-g
jest wyjątkowy - jeśli wywołasz inny rodzaj błędu np
C-x ( M-: (signal 'quit nil)
To zatrzyma nagrywanie, ale last-kbd-macro
będzie zawierać "M-: M-( signal 'quit nil"
, ale z
C-x ( C-g
To zatrzymuje nagrywanie i odrzuca wszystko, co zostało nagrane. Jako użytkownik Cg zadowolony (podobnie jak co najmniej dwóch moich znajomych) jest to raczej niefortunne rozróżnienie. Próbowałem edytować keyboard-quit
, ale nic nie mogę na to poradzić.
Wygląda na to, że jedynym sposobem na to jest odzyskanie recent-keys
i automatyczne ustalenie, gdzie wywołano makro start-kbd (lub podobne), jak w kmacro-edit-lossage
.