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-si 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-gjest wyjątkowy - jeśli wywołasz inny rodzaj błędu np
C-x ( M-: (signal 'quit nil)
To zatrzyma nagrywanie, ale last-kbd-macrobę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-keysi automatyczne ustalenie, gdzie wywołano makro start-kbd (lub podobne), jak w kmacro-edit-lossage.