Классический вариант использования:
- Вы начинаете запись макроса:
C-x ( - Вы делаете некоторые вещи, скажем
hello. - Допустим, вы запускаете команду, которая выдает ошибку
C-g(например, вы по ошибке запустили,C-sи вам нужно отменить ееC-g, теперь ваша работа потеряна).
Теперь ваша запись потеряна.
Я хотел бы продолжить с того места, где остановился, прежде чем выполнил команду, которая прервала мою запись. Я посмотрел C-h f start-kbd-macro, но он написан на C, поэтому я не могу настроить его. Я также искал переменную типа current-kbd-macro, но пока не нашел ничего.
Это можно восстановить?
Обновить:
Я не мог понять, почему C-u C-x (это не работает для меня, но я обнаружил, что это потому, что я тестировал с C-g.
Оказывается, это C-gособенное - если вы запускаете ошибку другого типа, например
C-x ( M-: (signal 'quit nil)
Тогда это остановит запись, но last-kbd-macroбудет содержать "M-: M-( signal 'quit nil", но с
C-x ( C-g
Это останавливает запись и удаляет все записанное. Как пользователь Cg-happy (как и двое моих друзей), это довольно неудачное различие. Я пытался редактировать keyboard-quit, но там я ничего не могу сделать.
Похоже, что единственный способ восстановить это - через recent-keysи автоматически определить, где был вызван макрос start-kbd (или аналогичный), как в kmacro-edit-lossage.