2012-10-24 13 views
5

Questa deve essere una domanda stupida e semplice, ma non sono stato in grado di trovare una risposta nonostante la ricerca di Google più volte in più modi e l'analisi della documentazione di Calc.Come cancellare completamente lo stato di Emacs Calc?

DARE un'istanza di Emacs, con Calc corsa, e dopo aver effettuato calcoli multipli compresi memorizzare le variabili ed equazioni, alcuni dei quali potrebbero provenire dal file "~/.emacs.d/calc.el",

COME si fa a tornare Calc ad un incontaminata stato senza riavviare Emacs?

Incontaminata: Nulla di impilato. Niente nella scia. Nessuna variabile o equazione memorizzata. Ecc

risposta

8

M-x calc-reset, che è anche associato a C-x * 0, è quello che ti serve. Dalla info manual:

Il 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' conserva i contenuti dello stack ma resetta tutto il resto al suo stato iniziale, con un negativo prefisso argomento, `Cx * 0' conserva la contenuto dello stack, ma ripristina tutto il resto allo stato predefinito

EDIT:.. Ops Anche questo non fa variabili chiare non sono sicuro se c'è un modo semplice per ottenere tutto il viaggio di ritorno a. pristine :(

MODIFICA 2: Sembra che Calc memorizzi tutte le variabili, inclusi 'built-in' come pi ed e, come variabili globali con il prefisso 'var-'. Per quanto posso dire, non tiene traccia di quali variabili sono state impostate dalla modalità (come pi), e che sono state impostate dagli utenti. Inoltre, le variabili utente predefinite sono memorizzate come var-q0, var-q1 ecc. Quindi, per eliminare tutte le variabili, è necessario compilare un elenco di variabili e stati presenti all'avvio, cancellare tutto non presente nell'elenco e quindi ripristinare i valori originali delle variabili in quell'elenco. Questo è certamente possibile, ma un po 'noioso.

Modifica 3: ecco il mio tentativo. Ho dato un'altra occhiata alla modalità calc, e all'avvio definisce le variabili che ho aggiunto a my-calc-built-vars di seguito. La seconda riga rimuoverà tutte le variabili in Emacs che iniziano con il prefisso 'var-' e sono non in questo elenco. Ciò includerà tutte le variabili definite dall'utente o in un altro pacchetto. Quindi speriamo che nessun altro usi il prefisso 'var-'. E non azzerare il valore delle variabili built-in, quindi se si hanno ridefinito pi greco a 3, rimarrà 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: 6 ago 2016

attuale built-in vars lista:

(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 per sforzo, ma in realtà è necessario cancellare le variabili e le equazioni memorizzate.Se non ottengo una risposta migliore in un futuro non troppo lontano, andrò avanti e segnerò il tuo accettato. – EdwinW

+0

@EdwinW vedere se questo funziona per voi. Non uso calc abbastanza per fare test molto approfonditi su questo. – Tyler

+0

Appena provato, funziona alla grande! Grazie! – EdwinW

0

M- # 0

Questo dovrebbe essere tutto quello che devi fare.

+0

M- # non appare come inizio di un comando nel manuale o nella guida della modalità. Vedi la risposta di Tyler sopra per una risposta migliore, ma non ancora completa. – EdwinW

Problemi correlati