2012-10-24 12 views
5

To musi być głupie proste pytanie, ale nie byłem w stanie znaleźć odpowiedzi mimo wielokrotnego przeszukiwania Google na wiele sposobów i przeszukiwania dokumentacji Calca.Jak całkowicie usunąć stan Emacsa Calca?

UDZIELONA wystąpienie Emacs, Calc z rzędu, a po przeprowadzeniu wielu obliczeń oraz przechowywania zmiennych i równań, z których część może pochodzić od „~/.emacs.d/calc.el” pliku,

JAK pan wrócić Calc do dziewiczy stanie bez ponowne uruchomienie Emacs?

Pristine: Nic na stosie. Nic na szlaku. Brak zapisanych zmiennych lub równań. Itd.

Odpowiedz

8

M-x calc-reset, który jest również powiązany z C-x * 0, jest tym, czego potrzebujesz. Od info manual:

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' zachowuje zawartość stosu ale resetuje wszystko inne do stanu początkowego; z ujemnym prefiks argumentu` Cx * 0' zachowuje zawartość stosu, ale resetuje wszystko jeszcze do stanu domyślnego

EDIT:.. Ups Mimo, że nie czyści zmienne nie jestem pewien, czy jest prosty sposób, aby uzyskać z powrotem do. dziewiczy: (

EDYCJA 2: Wygląda na to, że Calc przechowuje wszystkie zmienne, w tym "wbudowane", takie jak pi i e, jako zmienne globalne z przedrostkiem "var-". O ile mogę powiedzieć, nie śledzi on, które zmienne zostały ustawione przez tryb (np. Pi) i które zostały ustawione przez użytkowników. Ponadto domyślne zmienne użytkownika są zapisywane jako var-q0, var-q1 itd. Aby więc wyczyścić wszystkie zmienne, musisz skompilować listę zmiennych i stanów obecnych przy starcie, usunąć wszystko nie na tej liście , a następnie przywrócić oryginalne wartości zmiennych z tej listy. To na pewno możliwe, ale trochę żmudne.

Edytuj 3: Oto moja próba. Ponownie przyjrzałem się trybowi calc, a przy uruchomieniu zdefiniowałem zmienne, które dodałem do my-calc-builtin-vars poniżej. Druga linia usunie wszystkie zmienne w Emacs, które zaczynają się od przedrostka "var-" i na tej liście są , a nie. Obejmuje to dowolne zmienne zdefiniowane przez ciebie lub w innym pakiecie. Miejmy więc nadzieję, że nikt inny nie użyje przedrostka "var-". I nie będzie wyzerować wartość wbudowanych zmiennych, więc jeśli nowo pi do 3, to pozostanie 3.

(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: 06 sierpień 2016

Aktualny wbudowany w Vars list:

(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

E dla wysiłku, ale naprawdę trzeba wyczyścić przechowywane zmienne i równania.Jeśli nie otrzymam lepszej odpowiedzi w niezbyt odległej przyszłości, dodam, że jesteś przyjęty. – EdwinW

+0

@EdwinW sprawdź, czy to działa. Nie używam calc wystarczająco, aby wykonać bardzo dokładne testy na tym. – Tyler

+0

Właśnie wypróbowałem to, działa świetnie! Dzięki! – EdwinW

0

M- # 0

To powinno być wszystko, co musisz zrobić.

+0

M- # nie pojawia się jako początek polecenia ani w podręczniku, ani w pomocy trybu. Zobacz odpowiedź Tylera powyżej, aby uzyskać lepszą, ale wciąż niekompletną odpowiedź. – EdwinW

Powiązane problemy