กรณีใช้คลาสสิก:
- คุณเริ่มบันทึกแมโคร:
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
โดยอัตโนมัติและการหาที่เริ่มต้น kbd แมโคร (หรือคล้ายกัน) kmacro-edit-lossage
ถูกเรียกว่าในขณะที่