Классический вариант использования:
- Вы начинаете запись макроса:
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
.