首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在emacs中,当函数尚未定义时,如何将函数添加到钩子中?

在emacs中,当函数尚未定义时,如何将函数添加到钩子中?
EN

Stack Overflow用户
提问于 2012-07-25 17:00:37
回答 3查看 310关注 0票数 1

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

为了让它们在每次加载emacs时都能运行,我会放入如下内容:

代码语言:javascript
复制
(evil-mode)
(global-rainbow-delimiters-mode)

在我的init.el文件中。

但是,因为我是从ELPA安装的,所以只有在我的init.el被加载之后,它们才会被加载,所以两个符号都是未定义的。

据我所知,这也阻止了我做像这样的事情

代码语言:javascript
复制
(add-hook 'after-init-hook 'global-rainbow-delimiters-mode)

我该如何解决这个问题呢?

Postscript:这个问题实际上是因为我在init.el开始时没有调用(package-initialize),它会在正确的时间加载使用软件包安装的所有程序(evilmode和彩虹分隔符只是其中的两个)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-25 17:09:59

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

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

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

票数 3
EN

Stack Overflow用户

发布于 2012-07-26 02:52:43

AFAIU编译init文件不是一个好主意-但到目前为止还没有相关的内容。

你的钩子失败了,因为它在读取init之后,但是在数据加载之前运行。您需要一个函数在从ELPA加载后运行。

尝试eval-after-load

票数 1
EN

Stack Overflow用户

发布于 2012-07-26 02:57:45

您还可以使用(package-initialize)提前初始化包。这将允许你不把所有的代码放在一个钩子里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11646150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档