143

我决定去看看 Emacs,我非常喜欢它。现在,我正在使用Emacs Starter Kit,它为 Emacs 的默认安装提供了更好的默认设置和一些不错的自定义。

我对其进行了一些定制,添加了一些东西,比如yasnippetcolor-themesunbound和其他东西。我已经建立了一个github 存储库,其中保存了所有自定义项,以便我可以从多个地方访问它们,或者以防万一出现问题并且我丢失了 .emacs.d 目录。

这一切都很好,但是有一个问题:Emacs 大约需要 1-2 秒才能加载。AFAIK 我可以使用 Mx 字节编译文件将单个 .el 文件编译为 .elc,它可以工作。但是有很多.el文件,不知道有没有办法用一个简单的命令什么的把它们全部编译,加快Emacs的加载速度。我的 Emacs 并不总是打开,我经常打开和关闭它,尤其是在我将它设置为 Total Commander 中编辑命令的默认编辑器以更快地习惯它之后(是的,这里是 windows xp)。

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

我不确定加载时首选哪个版本,.el 或编译的 .elc 顺便说一下 Oo

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

4

6 回答 6

221

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

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

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

于 2009-08-01T19:07:00.717 回答
47

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

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

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

为了加快我的 emacs 速度,我首先使用profile-dotemacs.el识别出慢速部分,然后用autoloads替换它们。

于 2012-01-17T21:49:03.380 回答
27

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

要重新编译所有,请执行

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

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

emacs --batch --eval '(byte-compile-file "your-elisp-file.el")'
于 2012-09-12T18:31:39.400 回答
18

这与问题有点摇摆不定,但要解决加载缓慢的问题,您可以使用 Emacs 23 中的新守护程序功能。

“如果你有很多支持包,emacs启动可能会有点慢。但是,emacs 23带来了emacs --daemon,它可以让你在后台启动emacs(例如当你登录时)。你可以立即弹出“

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

于 2009-08-02T02:23:47.113 回答
2

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

于 2020-08-19T20:00:15.763 回答
2

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

于 2018-05-01T15:43:57.063 回答