Kasus penggunaan klasik:
- Anda mulai merekam makro:
C-x (
- Anda melakukan beberapa hal, katakanlah
hello
. - Anda menjalankan perintah yang melempar kesalahan, katakanlah
C-g
(mis. Anda salah menjalankanC-s
dan Anda harus membatalkannya denganC-g
, sekarang pekerjaan Anda hilang).
Sekarang rekaman Anda sejauh ini hilang.
Saya ingin melanjutkan di mana saya tinggalkan sebelum saya menjalankan perintah yang mengganggu rekaman saya. Saya melihat C-h f start-kbd-macro
, tapi itu ditulis dalam C, jadi saya tidak bisa men-tweak itu. Saya juga mencari-cari variabel suka current-kbd-macro
, tetapi sejauh ini tidak menemukan.
Bisakah itu dipulihkan?
Memperbarui:
Saya tidak tahu mengapa C-u C-x (
tidak bekerja untuk saya, tetapi saya menemukan itu karena saya mengujinya C-g
.
Ternyata itu C-g
istimewa - jika Anda memicu jenis kesalahan yang berbeda misalnya
C-x ( M-: (signal 'quit nil)
Maka ini akan menghentikan rekaman, tetapi last-kbd-macro
akan berisi "M-: M-( signal 'quit nil"
, tetapi dengan
C-x ( C-g
Ini berhenti merekam dan membuang apa pun yang direkam. Sebagai pengguna Cg-happy (seperti setidaknya dua dari teman saya), ini adalah perbedaan yang agak disayangkan. Saya mencoba mengedit keyboard-quit
, tetapi tidak ada yang bisa saya lakukan di sana.
Sepertinya satu-satunya cara untuk memulihkan ini adalah melalui recent-keys
dan secara otomatis mencari tahu di mana start-kbd-macro (atau serupa) dipanggil, seperti pada kmacro-edit-lossage
.