如何完全清除Emacs Calc';什么州?

如何完全清除Emacs Calc';什么州?,emacs,calc,Emacs,Calc,这一定是一个愚蠢的简单问题,但尽管我用多种方式搜索了谷歌多次,并在Calc文档中进行了深入研究,但我还是没能找到答案 给定了一个Emacs实例,Calc正在运行,并执行了多个计算,包括存储变量和方程,其中一些可能来自“~/.Emacs.d/Calc.el”文件 如何在不重新启动Emacs的情况下将Calc返回到原始状态 原始的:堆栈上没有任何内容。路上什么也没有。没有存储的变量或方程。等等M-#0 这应该是您所需要做的全部工作。M-x calc reset,它也绑定到C-x*0,这是您所需要的。

这一定是一个愚蠢的简单问题,但尽管我用多种方式搜索了谷歌多次,并在Calc文档中进行了深入研究,但我还是没能找到答案

给定了一个Emacs实例,Calc正在运行,并执行了多个计算,包括存储变量和方程,其中一些可能来自“~/.Emacs.d/Calc.el”文件

如何在不重新启动Emacs的情况下将Calc返回到原始状态

原始的:堆栈上没有任何内容。路上什么也没有。没有存储的变量或方程。等等

M-#0


这应该是您所需要做的全部工作。

M-x calc reset
,它也绑定到
C-x*0
,这是您所需要的。从:

C-x*0'命令('calc-reset';即'C-x*'后跟
零)将计算器重置为其初始状态。这就清除了错误
堆栈,将所有模式重置为其初始值(
使用
m'(
calc save modes')保存,清除缓存(*注意
缓存:),等等。(它不会擦除任何
变量。)参数为0时,Calc将重置为其默认值
国家;也就是说,这些模式将被赋予它们的默认值。用一个
正前缀参数,
C-x*0'保留堆栈的内容 但将其他一切重置为初始状态;带负前缀 参数,`C-x*0'保留堆栈的内容,但重置 其他一切都将恢复到默认状态

编辑:哎呀。即使这样也不能清除变量。我不确定是否有一种直接的方法可以让你一路回到原始状态:(

编辑2:Calc似乎将所有变量(包括“内置”变量,如pi和e)存储为前缀为“var-”的全局变量。据我所知,它不跟踪模式设置的变量(如pi),并由用户设置。此外,默认用户变量存储为var-q0、var-q1等。因此,为了清除所有变量,您需要编译一个启动时存在的变量和状态列表,删除列表中未包含的所有内容,然后恢复该列表中变量的原始值。这当然是可能的e、 但是有点乏味

编辑3:这是我的尝试。我再次查看了calc模式,在启动时,它定义了我添加到下面calc内置变量中的变量。第二行将删除Emacs中所有以前缀“var-”开头但不在此列表中的变量。这将包括您或其他包中定义的任何变量。希望没有任何变量else使用前缀“var-”。它不会重置内置变量的值,因此如果将pi重新定义为3,它将保持为3

(设置我的计算内置变量
“(“var nan”“var uinf”“var sym”“var行”“var模式”
“var EvalRules”“var inf”“var phi”“var pi”“var gamma”“var-π”
“var-φ”“var-γ”“var规范”“var-e”“var-i”))
(defun实际重置计算()
(互动)
(计算重置零)
(mapc#’(lambda(el)(untrn el))
(拆下零(地图车)
#'(lambda(el)(除非(成员el my calc builtin vars)el))
(所有完井“var-”奥巴雷()())))
更新: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-φ"))

M-#在手册或模式帮助中都不会作为命令的开始出现。请参阅上面泰勒的答案,以获得更好但仍然不完整的答案。E表示努力,但它确实需要删除存储的变量和方程。如果我在不远的将来没有得到更好的答案,我将继续并将您的答案标记为已接受。@Edwin看看这对你是否有效。我没有使用足够的计算器来对这个进行彻底的测试。