3

编写 init.el 文件时,如何避免在加载路径中硬编码版本号?

每次我检查并更新我的包时,我都必须在我的 init.el 文件中做同样的事情。

如果我能做这样的事情会很棒:

(setq yas-snippet-dirs
      '("~/.emacs.d/snippets/"
       (regexp-quote "~/.emacs.d/elpa/yasnippet-[.*]/snippets/"))

这对我不起作用,但是我又一次尝试将它从这个例子中快速地组合在一起,所以老实说我并不感到惊讶。有人可以让我知道这是否是处理此问题的首选方式,如果是,您将如何去做?

4

2 回答 2

3

我想你正在寻找这样的东西:

(setq yas-snippet-dirs
    '("~/.emacs.d/snippets/"
     (file-expand-wildcards "~/.emacs.d/elpa/yasnippet-*/snippets"))

但我认为你不需要它...

对于load-path变量...package-initialize应该自动更新它,所以这不是必需的。

对于yas-snippet-dirs使用 elpa 安装...只需执行 Mx yas-global-mode 即可将该变量的值设置为您想要的值。

于 2013-09-05T15:38:05.967 回答
0

一种选择是更改 elpa 目录中的文件夹名称,然后查看 . . . autoload.el 以确保没有对带有版本号的文件夹的特殊引用。 注意:您可能需要专门添加 autoload.el 文件,以便在启动时加载它——应该在您的 init.el 文件中定义加载路径之后调用该文件。

或者,设置一个subdirs类似于 Emacs 源中使用的系统,以便所有指定的子文件夹都在加载路径中,但是您仍然需要添加新文件夹名称并在之后专门调用 autoload.el 文件加载路径已定义。

仅供参考:不需要将您的代码段放在该目录中。您可以将它们放在版本更改不会影响其位置的其他地方。

于 2013-09-05T15:13:27.477 回答