如何对 .emacs.d 目录中的所有内容进行字节编译?
我决定尝试一下 Emacs,我非常喜欢它。 现在,我正在使用 Emacs Starter Kit,它提供了Emacs 的默认安装有更好的默认设置和一些不错的自定义。
我对其进行了一些自定义,添加了一些内容,例如 yasnippet、颜色主题, 未绑定,以及其他内容。 我已经设置了一个 github 存储库,我在其中保存所有自定义内容所以我可以从多个地方访问它们,或者万一出现问题并且我丢失了 .emacs.d 目录。
所有这些都非常好,但是有一个问题:Emacs 需要大约 1-2 秒的时间来加载。 AFAIK 我可以使用 Mx byte-compile-file 将单个 .el 文件编译为 .elc,并且它可以工作。 但是.el文件很多,我想知道是否有办法用一个简单的命令什么的来编译它们,以加快Emacs的加载速度。 我的 Emacs 并不总是打开的,我经常打开和关闭它,特别是在我将它设置为 Total Commander 中编辑命令的默认编辑器以便更快地习惯它之后(是的,这里是 Windows XP)。
我的 Emacs 版本是 22.3。 是的,没有任何自定义的默认 Emacs 安装会立即启动。
我不确定加载时首选哪个版本,.el 还是编译后的 .elc 顺便说一句 Oo
所以,是否有 elisp 命令或 Emacs 命令行开关来使 Emacs 字节编译 .emacs.d 目录中的所有内容?
I have decided to check out Emacs, and I liked it very much. Now, I'm using the Emacs Starter Kit, which sort of provides better defaults and some nice customizations to default install of Emacs.
I have customized it a little, added some stuff like yasnippet, color-themes, unbound, and other stuff. I've set up a github repository where I keep all of the customizations so I can access them from multiple places or in case something goes bad and I lose my .emacs.d directory.
All of this is very nice, but there is a problem: Emacs takes about 1-2 seconds to load. AFAIK I can compile individual .el files with M-x byte-compile-file to .elc, and it works. But there are a lot of .el files, and I wonder if there is a way to compile them all with a simple command or something, to speed up the loading of Emacs. My Emacs is not always open, and I open and close it quite frequently, especially after I've set it up as a default editor for edit command in Total Commander to get used to it faster (yeah, windows xp here).
My Emacs version is 22.3. And yes, the default Emacs installation without any customizations fires up instantly.
I am not sure which version is preferred when loading, the .el or compiled .elc one by the way O.o
So, is there an elisp command or Emacs command line switch to make Emacs byte-compile everything in .emacs.d directory?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
Cu 0 Mx byte-recompile-directory
将编译该目录及其下面所有子目录中的所有 .el 文件。
Cu 0
部分是为了使其不询问每个没有 .elc 对应项的 .el 文件。C-u 0 M-x byte-recompile-directory
will compile all the .el files in the directory and in all subdirectories below.
The
C-u 0
part is to make it not ask about every .el file that does not have a .elc counterpart.的所有内容进行字节编译,我在
.emacs
文件顶部对load-path
进行更改后添加了以下内容:为了在每次启动 emacs 时自动对需要字节编译 ,它不会增加太多我的启动时间(除非需要编译某些东西)。
为了加快我的 emacs 速度,我首先使用 profile-dotemacs.el 识别缓慢的部分,然后将它们替换为自动加载。
To automatically byte compile everything that needs byte compiling each time I start emacs, I put the following after my changes to
load-path
at the top of my.emacs
file:Surprisingly, it doesn't add much to my startup time (unless something needs to be compiled).
To speed up my emacs, I first identified the slow parts using profile-dotemacs.el and then replaced them with autoloads.
您可以使用
--batch
标志从命令行重新编译。要重新编译所有文件,请
按照 Makefile 的方式重新编译单个文件,
You can use the
--batch
flag to recompile from the command line.To recompile all, do
or to recompile a single file as from a Makefile,
这有点偏离问题,但是为了解决加载缓慢的问题,您可以使用 Emacs 23 中新的守护进程功能。
来自 http://emacs -fu.blogspot.com/2009/07/emacs-23-is-very-near.html
This is swaying a bit from the question, but to solve the problem of loading slowly you can use the new daemon feature in Emacs 23.
From http://emacs-fu.blogspot.com/2009/07/emacs-23-is-very-near.html
我使用的命令是 Mx byte-force-recompile RET,然后它询问目录,例如,我给它 ~/.emacs.d/elpa/。 然后它会重新编译其中的所有内容,通常不需要先删除 .elc 文件或以其他方式弄乱它。
The command I use is
M-x byte-force-recompile RET
, it then asks the directory so, for example, I give it~/.emacs.d/elpa/
. It then recompiles everything in there, usually no need to delete.elc
files first or mess with it in other ways.对于我使用 spacemacs 的命令是 spacemacs/recompile-elpa 。 命令
byte-recompile-directory
不会编译任何文件。For my using spacemacs, the command is
spacemacs/recompile-elpa
. The commandbyte-recompile-directory
does not compile any file.