如何对. emacs.d 目录中的所有内容进行字节编译?

我决定去看看 Emacs,我非常喜欢它。现在,我使用的是 Emacs 初学者工具包,它提供了更好的默认设置和一些良好的定制来默认安装 Emacs。

我已经定制了一点,增加了一些东西,如 亚斯尼皮特色彩主题不受约束,和其他的东西。我已经建立了一个 Github 存储库,在那里我保持所有的定制,所以我可以访问他们从多个地方或万一有什么事情变坏,我失去了我的。D 目录。

所有这些都非常好,但是存在一个问题: Emacs 需要大约1-2秒来加载。AFAIK 我可以编译个人。使用 M-x byte-edit-file 的 el 文件。Elc 而且成功了。但是有很多。El 文件,我想知道是否有一种方法可以用一个简单的命令或其他东西来编译它们,从而加快 Emacs 的加载速度。我的 Emacs 并不总是打开的,我经常打开和关闭它,特别是在我将它设置为 Total Command 中编辑命令的默认编辑器之后,以便更快地适应它(是的,这里是 windows xp)。

我的 Emacs 版本是22.3。是的,没有任何自定义的默认 Emacs 安装会立即启动。

我不确定哪个版本是首选的时候加载。 el 或编译

那么,是否有一个 elisp 命令或 Emacs 命令行开关来使 Emacs 字节编译. Emacs.d 目录中的所有内容?

44262 次浏览

C-u 0 M-x byte-recompile-directory

将编译下面目录和所有子目录中的所有.el 文件。

C-u 0部分是为了使它不询问每个没有.elc 对应文件的.el 文件。

这有点偏离问题,但是为了解决缓慢加载的问题,您可以使用 Emacs 23中的新守护进程特性。

“如果你有很多支持方案, Emacs 启动有点慢。 但是 Emacs 23带来了 Emacs —— daemon,它允许您在后台启动 emacs (例如, 当你登录的时候)。你可以立即 弹出新的 emacs 窗口(框架) Emacsclient 你当然可以 已经有一个 emacs’服务器’在 旧版本,但能够 在背景中启动它 一个更好的解决方案”

来自 http://emacs-fu.blogspot.com/2009/07/emacs-23-is-very-near.html

为了自动字节编译每次启动 emacs 时需要字节编译的所有内容,我在 .emacs文件顶部的 load-path更改后放置了以下内容:

(byte-recompile-directory (expand-file-name "~/.emacs.d") 0)

令人惊讶的是,它并没有增加太多的启动时间(除非需要编译某些东西)。

为了加速我的 emacs,我首先使用 侧写文件来识别慢的部分,然后用 自动装弹来替换它们。

可以使用 --batch标志从命令行重新编译。

要重新编译所有内容,请执行

emacs --batch --eval '(byte-recompile-directory "~/.emacs.d")'

或者从 Makefile 重新编译单个文件,

emacs --batch --eval '(byte-compile-file "your-elisp-file.el")'

对于我使用的 space emacs,命令是 spacemacs/recompile-elpa。命令 byte-recompile-directory不编译任何文件。

我使用的命令是 M-x byte-force-recompile RET,然后它询问目录,例如,我给它 ~/.emacs.d/elpa/。然后重新编译这里的所有内容,通常不需要先删除 .elc文件,或者以其他方式干扰它。