【发布时间】:2016-01-13 02:19:10
【问题描述】:
我有类似的东西(简化)
(require 'package)
(setq package-archives
'(("org" . "http://orgmode.org/elpa/")
("melpa" . "http://melpa.org/packages/")
("melpa-stable" . "http://stable.melpa.org/packages/")
("gnu" . "http://elpa.gnu.org/packages/")))
(setq package-enable-at-startup nil)
(package-initialize t)
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(let ((default-directory (expand-file-name user-emacs-directory "elpa")))
(normal-top-level-add-subdirs-to-load-path))
(require 'use-package)
(use-package helm
:ensure t
:commands (helm-M-x
helm-mini
helm-find-files
helm-show-kill-ring)
:init
(add-hook 'after-init-hook 'helm-mode)
:config
(helm-autoresize-mode 1))
在我的.emacs。但是在启动 emacs 后有人告诉我Symbol's function definition is void: helm-mode。
看了Packaging Basics和this answer的手册,我还是不明白package.el的机制。
我注意到手册中使用了load 和activate 这两个词,我认为load 是'Emacs 将包的内容目录添加到加载路径,并评估名称自动加载中的自动加载定义。埃尔。而activate 是“完全require”。我知道如果我将(package-initialize t) 更改为(package-initialize) 一切都会好起来的。
我确认"/Users/gaki/.emacs.d/elpa/helm-20160112.258" 之类的内容在load-path 中,而helm-mode 是autoload。不是可以自动加载甚至在after-init-hook吗?
【问题讨论】:
-
这个问题不清楚(对我来说)。你能澄清你在问什么吗?如果您要求对软件包系统进行解释,那么这不适合本网站(通常用于特定的问答)。猜测您不清楚的内容并尝试解释它太宽泛了。但是,如果您可以提出一个更具体的问题,那么它也许可以成立。
-
您不需要将 elpa 目录(或其子目录)添加到加载路径,包系统会在正确配置后执行此操作。