Klassischer Anwendungsfall:
- Sie beginnen mit der Aufnahme eines Makros:
C-x (
- Du machst ein paar Sachen, sagen wir mal
hello
. - Sie führen einen Befehl aus, der einen Fehler auslöst,
C-g
z. B. (z. B. Sie führen versehentlich einen Fehler ausC-s
und müssen diesen abbrechenC-g
, jetzt ist Ihre Arbeit verloren).
Jetzt ist Ihre bisherige Aufnahme verloren.
Ich möchte dort weitermachen, wo ich aufgehört habe, bevor ich einen Befehl ausgeführt habe, der meine Aufnahme unterbrochen hat. Ich habe es angeschaut C-h f start-kbd-macro
, aber es ist in C geschrieben, also kann ich es nicht optimieren. Ich habe auch nach einer Variablen wie gesucht current-kbd-macro
, aber bisher keine gefunden.
Kann es wiederhergestellt werden?
Aktualisieren:
Ich konnte nicht herausfinden, warum C-u C-x (
ich nicht arbeitete, aber ich habe festgestellt, dass ich damit getestet habe C-g
.
Es stellt sich heraus, dass dies etwas C-g
Besonderes ist - wenn Sie eine andere Art von Fehler auslösen, z
C-x ( M-: (signal 'quit nil)
Dann stoppt dies die Aufnahme, last-kbd-macro
enthält "M-: M-( signal 'quit nil"
aber, aber mit
C-x ( C-g
Dies stoppt die Aufnahme und verwirft alles, was aufgezeichnet wurde. Als Cg-glücklicher Benutzer (wie mindestens zwei meiner Freunde) ist dies eine ziemlich unglückliche Unterscheidung. Ich habe versucht zu bearbeiten keyboard-quit
, aber ich kann dort nichts tun.
Es sieht so aus, als ob die einzige Möglichkeit, dies wiederherzustellen, darin besteht, recent-keys
automatisch herauszufinden, wo ein Start-KBD-Makro (oder ähnliches) aufgerufen wurde, wie in kmacro-edit-lossage
.