1

我从 ELPA 安装了一些东西,即邪恶和彩虹分隔符。

为了让它们在 emacs 加载时运行,我会放一些类似的东西:

(evil-mode)
(global-rainbow-delimiters-mode)

在我的 init.el 文件中。

但是,因为我是从 ELPA 安装它们的,所以直到我的 init.el 加载后才加载它们,因此这两个符号都是未定义的。

据我了解,这也阻止了我做类似的事情

(add-hook 'after-init-hook 'global-rainbow-delimiters-mode)

我该如何解决这个问题?

后记:这个问题实际上是由于我没有(package-initialize)在我的 init.el 开始时调用引起的,它会在正确的时间加载使用包安装的所有东西(evilmode 和彩虹分隔符只是其中的两个)

4

3 回答 3

3

您的add-hook解决方案将起作用。

那里,'global-rainbow-delimiters-mode只是一个名称,它会在稍后add-hook被调用时解析为函数,并且到那时该函数将存在。

ELPA文档确实提到了这种方法,尽管它似乎认为它是最后的手段。

于 2012-07-25T09:09:58.860 回答
1

AFAIU 编译 init 文件不是一个好主意——但到目前为止还没有关系。

你的钩子失败了,因为它在读取初始化之后运行,但在加载东西之前。从 ELPA 加载后,您需要一个函数来运行。

尝试 eval-after-load

于 2012-07-25T18:52:42.933 回答
1

您还可以使用(package-initialize). 这将允许您不将所有代码放在一个钩子中。

于 2012-07-25T18:57:44.743 回答