我从ELPA安装了一些东西,也就是邪恶和彩虹分隔符。
为了让它们在每次加载emacs时都能运行,我会放入如下内容:
(evil-mode)
(global-rainbow-delimiters-mode)在我的init.el文件中。
但是,因为我是从ELPA安装的,所以只有在我的init.el被加载之后,它们才会被加载,所以两个符号都是未定义的。
据我所知,这也阻止了我做像这样的事情
(add-hook 'after-init-hook 'global-rainbow-delimiters-mode)我该如何解决这个问题呢?
Postscript:这个问题实际上是因为我在init.el开始时没有调用(package-initialize),它会在正确的时间加载使用软件包安装的所有程序(evilmode和彩虹分隔符只是其中的两个)
发布于 2012-07-25 17:09:59
您的add-hook解决方案将会起作用。
在这里,'global-rainbow-delimiters-mode只是一个名称,稍后调用add-hook时,它将被解析为该函数,此时该函数将存在。
ELPA documentation确实提到了这种方法,尽管它似乎认为这是最后的手段。
发布于 2012-07-26 02:52:43
AFAIU编译init文件不是一个好主意-但到目前为止还没有相关的内容。
你的钩子失败了,因为它在读取init之后,但是在数据加载之前运行。您需要一个函数在从ELPA加载后运行。
尝试eval-after-load
发布于 2012-07-26 02:57:45
您还可以使用(package-initialize)提前初始化包。这将允许你不把所有的代码放在一个钩子里。
https://stackoverflow.com/questions/11646150
复制相似问题