【发布时间】:2014-08-02 20:21:37
【问题描述】:
无论我重新加载我的.emacs 文件多少次,
M-x 加载文件 RET ~/.emacs RET
我希望结果与第一次相同。我想让我的.emacs 文件为idempotent。
动机
我知道我可以通过手术评估一个区域 (Cc Cr)、一个 defun (CMx) 或最后一个 sexp (Cx Ce )。在进行小的更改时,我经常采用这种更精致的方法。但是,在重新处理 .emacs 文件时,我有时想通过重新加载整个 .emacs 文件来最终检查更改的结果。每次重新启动 emacs 都会很快变老,尤其是在做主要的 .emacs 家务时。
具体步骤
我必须采取哪些具体步骤来更新我的.emacs 文件以将非幂等操作替换为幂等操作?
例如,
- 搜索“-hook”并将对挂钩的直接添加替换为调用
add-hook,即 如果已经存在,则不会将函数重新添加到钩子中。 - 用直接设置或清除替换任何标志的切换。尤其要当心??。
- ...
一个全面的检查和纠正列表是理想的,但您遇到的任何关键的个人检查也会有所帮助。
【问题讨论】:
-
在 elisp 中完全幂等是不可能的。除非您跟踪每个定义并知道要取消绑定的内容。特别是如果您使用大量第三方软件包。您的清单走在正确的道路上,但理想情况下,您需要在重新评估之前卸载所有包。我发现开发我的 .emacs 的方法是以重新启动 emacs 不痛苦的方式编写它,如果您的启动时间很短,那么在一个 emacs 实例中进行开发并重新启动很多次以测试您的在另一个实例中初始化并不是什么大问题。
-
你可以做的是做一个 -Q 启动并将所有内容存储在一个文件中的 main obarry 中,然后编写一个函数来解除除 -Q obarray 中的所有内容之外的所有内容并恢复所有正常您商店的价值。
标签: emacs elisp emacs24 dot-emacs idempotent