M-x calc-reset
にもバインドされてC-x * 0
いる が必要です。情報マニュアルから:
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
m m' ( Cx * 0' は、スタックの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' は、スタックの内容を保存しますが、他のすべてをデフォルト状態にリセットします。
編集:おっと。それでも変数はクリアされません。元の状態に戻す簡単な方法があるかどうかはわかりません:(
編集 2: Calc は、pi や e などの「組み込み」を含むすべての変数を、接頭辞「var-」を付けたグローバル変数として格納しているようです。私が知る限り、どの変数がモード (pi など) によって設定され、どの変数がユーザーによって設定されたかを追跡していません。さらに、デフォルトのユーザー変数は var-q0、var-q1 などとして保存されます。したがって、すべての変数をクリアするには、起動時に存在する変数と状態のリストをコンパイルし、そのリストにないものをすべて消去する必要があります。 、そのリスト内の変数の元の値を復元します。それは確かに可能ですが、少し面倒です。
編集3:これが私の試みです。calc-mode をもう一度見てみると、起動時に以下の my-calc-builtin-vars に追加した変数が定義されています。2 行目は、プレフィックス 'var-' で始まり、このリストにないEmacs のすべての変数を削除します。これには、ユーザーが定義した変数、または別のパッケージで定義された変数が含まれます。ですから、誰も接頭辞「var-」を使用しないことを願いましょう。また、組み込み変数の値はリセットされないため、pi を 3 に再定義しても 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)))))
更新: 2016 年 8 月 6 日
現在の組み込み変数リスト:
(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-φ"))