代码之家  ›  专栏  ›  技术社区  ›  Mikka

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

  •  122
  • Mikka  · 技术社区  · 15 年前

    我决定去看看emacs,我非常喜欢它。现在,我正在使用 Emacs Starter Kit ,哪种类型提供了更好的默认值,以及一些不错的Emacs默认安装自定义设置。

    我对它做了一些定制,添加了一些像 yasnippet , color-themes , unbound 等等。我已经建立了一个 github repository 我把所有的定制保存在那里,这样我就可以从多个地方访问它们,或者万一出了问题,我就会丢失.emacs.d目录。

    所有这些都很好,但有一个问题:Emacs大约需要1-2秒来加载。afaik我可以用m-x字节编译文件将单个.el文件编译为.elc,它可以工作。但是有很多.el文件,我想知道是否有一种方法可以用一个简单的命令或什么东西来编译它们,以加速Emacs的加载。我的emacs并不总是打开的,我经常打开和关闭它,特别是在我将它设置为total commander中编辑命令的默认编辑器以更快地适应它之后(是的,这里是Windows XP)。

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

    我不确定加载时首选哪个版本,.el或compiled.elc,顺便说一下o.o。

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

    5 回复  |  直到 7 年前
        1
  •  192
  •   Laurynas Biveinis    15 年前

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

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

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

        2
  •  43
  •   Richard Hansen Bi Rico    13 年前

    为了在每次启动Emacs时自动编译所有需要编译字节的内容,在对 load-path 在我的顶部 .emacs 文件:

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

    令人惊讶的是,它不会给我的启动时间增加太多(除非需要编译一些东西)。

    为了加速我的emacs,我首先用 profile-dotemacs.el 然后换成 autoloads .

        3
  •  23
  •   Mike Samuel    12 年前

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

    要全部重新编译,请执行

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

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

    emacs --batch --eval '(byte-compile-file "your-elisp-file.el")'
    
        4
  •  17
  •   mwilliams    15 年前

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

    “如果您有很多支持包, Emacs启动可能有点慢。 然而,Emacs23带来了Emacs --守护进程,使您能够在后台启动emacs(例如 当您登录时)。你可以马上 弹出新的Emacs窗口(框架) 非常容易。当然,你可以 已经在中有一个Emacs“服务器” 旧版本,但能够 在后台启动它 更好的解决方案”

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

        5
  •  1
  •   Yu Shen    7 年前

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