关于package-initialize的一点疑问

现在Emacs 25会自动在~/.emacs.d/init.el中添加(package-initialize).

那么我如果只想兼容Emacs 25及以上版本的Emacs,还有没有必要在诸如init-elpa.el之类关于elpa的文件里再写一行(package-initialize)? 还是说只在init.el里写一个(package-initialize)就够了?

另外我看到大神配置里(package-initialize)一般会重复很多次, 请问这是为什么?

多谢指教

1 个赞

好吧……难道问题太傻……?

同样不太了解背后的道理,我只在 init.el 开头调用了一次 (package-initialize)

;;; init.el

(setq package-archives ...)
(package-initialize)

...

;;; init.el ends here

照我的理解,我需要 (package-initialize) 在一开始就设置好已安装包的 load-path 和 Autoloads。

只调用一次就好了。Emacs25会自动在init.el中增加一行 (package-initialize),如果你想在init-elpa.el之类的调用,可以注释掉init.el中的那行,但注意不能删除,否则Emacs又会自动给你加上。不必重复调用,会浪费很多启动时间。

这么想的话,看来选择不在init.el中调用确实是为了启动效率?或者兼容老版本?

不,只是为了方便强迫症管理配置。

……强迫症?

如果没有init-epla.el,在init.el里调用就好了啊。既然有init-elpa.el,肯定是想归类管理配置啦。这样理解没错吧?

这解释行得通……

毕竟强迫症嘛