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

我已经决定检查Emacs,我非常喜欢它。 现在,我正在使用Emacs Starter Kit ,它可以为Emacs的默认安装提供更好的默认设置和一些很好的自定义设置。

我已经定制了一些,添加了像yasnippet , 颜色主题 , unbound和其他东西的东西。 我已经build立了一个github仓库 ,我保留所有的定制,所以我可以从多个地方访问它们,或者如果出现问题,我会丢失我的.emacs.d目录。

所有这一切都非常好,但有一个问题:Emacs需要大约1-2秒的时间来加载。 AFAIK我可以编译单个.el文件与Mx字节编译文件为.elc,它的工作原理。 但是有很多的.el文件,我想知道是否有一种方法可以用一个简单的命令或者其他东西来编译它们,以加快Emacs的加载速度。 我的Emacs并不总是打开的,我经常打开和closures它,尤其是在我将其设置为Total Commander的编辑命令的默认编辑器以便更快地使用它(是的,这里是Windows XP)。

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

我不知道哪个版本是首选加载.el或编译.elc顺便说一句Oo

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

Cu 0 Mx byte-recompile-directory

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

Cu 0部分是为了不要求每个没有.elc对应的.el文件。

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

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

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

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

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

要重新编译所有,请执行

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

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

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

这是一个摇摆不定的问题,但要解决缓慢加载的问题,您可以使用Emacs 23中的新守护程序function。

“如果你有很多的支持包,emacs的启动可能会有点慢,但是emacs 23带来了emacs – daemon,这使得你可以在后台启动emacs(例如login时)。使用emacsclient创build新的emacs窗口(框架)当然,你可以在旧版本中拥有一个emacs“服务器”,但是能够在后台启动它,这是一个更好的解决scheme“

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