2012-10-24 12 views
5

Das muss eine blöde, einfache Frage sein, aber ich konnte keine Antwort finden, obwohl ich Google mehrfach mehrfach gesucht und die Calc-Dokumentation durchforstet habe.Wie lösche ich den Zustand von Emacs Calc vollständig?

BESTIMMTEN eine Instanz von Emacs mit Calc Laufen, und mehrere Berechnungen durchgeführt worden ist, einschließlich Variablen und Gleichungen zu speichern, von denen einige gekommen sind, können von der „~/.emacs.d/calc.el“ Datei,

WIE kehren Sie Calc zu einem unberührten Zustand ohne Emacs Neustart?

Pristine: Nichts auf dem Stapel. Nichts in der Spur. Keine gespeicherten Variablen oder Gleichungen. Usw.

Antwort

8

M-x calc-reset, die auch an C-x * 0 gebunden ist, ist, was Sie brauchen. Von der info manual:

Die C-x * 0' command ('calc-reset'; that's 'C-x *' followed by a zero) resets the Calculator to its initial state. This clears the stack, resets all the modes to their initial values (the values that were saved with mm‘(calc-save-modes')), clears the caches (*note Caches::), and so on. (It does _not_ erase the values of any variables.) With an argument of 0, Calc will be reset to its default state; namely, the modes will be given their default values. With a positive prefix argument, Cx * 0' bewahrt den Inhalt des Stapels aber alles andere in den Ausgangszustand zurücksetzt, mit einem negativen Argument Präfix` Cx * 0' bewahrt die Inhalt des Stapels setzt aber alles andere in den Grundzustand

EDIT:.. Oops Auch Variablen, die nicht klar, dass ich nicht sicher bin, ob es eine einfache Möglichkeit, den ganzen Weg zurück zu bekommen, ist zu. makellos :(

EDIT 2: Es sieht so aus, als ob Calc alle Variablen, einschließlich 'Built-Ins' wie pi und e, als globale Variablen mit dem Präfix 'var-' speichert. Soweit ich das beurteilen kann, verfolgt es nicht, welche Variablen durch den Modus (wie pi) gesetzt wurden und welche von Benutzern eingestellt wurden. Außerdem werden die Standardbenutzervariablen als var-q0, var-q1 usw. gespeichert. Um also alle Variablen zu löschen, müssen Sie eine Liste von Variablen und Zuständen kompilieren, die beim Start vorhanden sind, und alles löschen, was nicht in dieser Liste ist und stellen Sie dann die ursprünglichen Werte der Variablen in dieser Liste wieder her. Das ist sicherlich möglich, aber ein wenig langweilig.

Edit 3: Hier ist mein Versuch. Ich habe einen weiteren Blick auf den Calc-Modus geworfen, und beim Start definiert er die Variablen, die ich meinen unten angegebenen my-calc-builtin-vars hinzugefügt habe. Die zweite Zeile entfernt alle Variablen in Emacs, die mit dem Präfix 'var-' beginnen und in dieser Liste nicht sind. Dies schließt alle von Ihnen definierten Variablen oder ein anderes Paket ein. Hoffentlich benutzt niemand das Präfix 'var-'. Und es wird den Wert der integrierten Variablen nicht zurückgesetzt, wenn Sie also pi bis 3 neu definiert haben, wird es 3. bleiben

(setq my-calc-builtin-vars 
     '("var-nan" "var-uinf" "var-sym" "var-lines" "var-Modes" 
     "var-EvalRules" "var-inf" "var-phi" "var-pi" "var-gamma" "var-π" 
     "var-φ" "var-γ" "var-spec" "var-e" "var-i")) 

(defun really-reset-calc() 
    (interactive) 
    (calc-reset nil) 
    (mapC#'(lambda (el) (unintern el)) 
     (remove nil (mapcar 
        #'(lambda (el) (unless (member el my-calc-builtin-vars) el)) 
        (all-completions "var-" obarray))))) 

UPDATE: 6. August 2016

Aktuelle built-in Vars Liste:

(setq my-calc-builtin-vars 
     '("var-CommuteRules" "var-Decls" "var-DistribRules" "var-EvalRules" 
     "var-FactorRules" "var-FitRules" "var-Holidays" "var-IntegAfterRules" 
     "var-IntegLimit" "var-InvertRules" "var-JumpRules" "var-MergeRules" 
     "var-Modes" "var-NegateRules" "var-e" "var-gamma" "var-i" "var-phi" 
     "var-pi" "var-γ" "var-π" "var-φ")) 
+0

Ein E für Anstrengung, aber es muss wirklich die gespeicherten Variablen und Gleichungen löschen.Wenn ich in nicht allzu ferner Zukunft keine bessere Antwort bekomme, werde ich deine angenommene Markierung markieren. – EdwinW

+0

@EdwinW sehen, ob das für Sie funktioniert. Ich benutze nicht genug, um dies gründlich zu testen. – Tyler

+0

Habe es einfach ausprobiert, funktioniert super! Vielen Dank! – EdwinW

0

M- # 0

Das sollte alles sein, was Sie tun müssen.

+0

M- # erscheint weder im Handbuch noch in der Modushilfe als Start eines Befehls. Siehe Tylers Antwort oben für eine bessere, aber immer noch nicht vollständige Antwort. – EdwinW

Verwandte Themen