后初始化钩vs评估后加载/与评估后加载


13

我发现相当有用的“ 如何在Emacs 24中使用软件包”是什么,但是,我想从经验丰富的用户或核心开发人员那里得到明确的答案,以决定在24.4的典型情况下,实际上哪个是首选的。

Afaik (add-hook 'after-init-hook ...)是所谓的蛮力方法,用于为软件包设置自定义。但是,eval-after-load它在语法上更加含糖,with-eval-after-load似乎更适合于动态,细粒度的配置,这些配置可以很好地与扩展的逐渐,单独和延迟加载配合使用。

我的理解正确吗?我还要记住什么?

Answers:


11

Afaik (add-hook 'after-init-hook ...)是所谓的蛮力方法,用于为软件包设置自定义。

否。如果要在init文件中配置软件包,通常的方法是(package-initialize)在文件顶部调用,然后进行配置。after-init-hook为此不必要地变得复杂。

但是,eval-after-load它在语法上更加含糖,with-eval-after-load似乎更适合于动态,细粒度的配置,这些配置可以很好地与扩展的逐渐,单独和延迟加载配合使用。

(with-)eval-after-load用于装载软件包要执行的操作。package-initialize不加载软件包,它仅“准备”它们(加载它们的自动加载)。

如果您使用eval-after-load了每套配置,则无需(package-initialize)在顶部调用。但是人们通常要做的是调用(package-initialize),这样大多数配置都可以直接写到init文件中,然后只写 eval-after-load很长的代码或取决于要加载的软件包的代码。


但是将所有东西放在eval-after-load任何给定的包装下仍然可以,对(package-initialize)吗?根本不使用吗?
埃里克·卡普伦

@ErikAllik是的。如果对每组配置都使用eval-after-load,则无需在顶部调用(程序包初始化)。
马拉巴巴
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.