Ответ 1
Как уже упоминалось в комментарии ниже: ответ phils на повторяющийся вопрос, вероятно, более полезен, чем этот
Это почти наверняка означает, что ваш файл init.el
запускается перед кодом, который сортирует пакеты для package.el
. Последний код добавляет каталог с автозаполняемой библиотекой к вашему пути загрузки.
Я все еще использую ELPA, а не package.el. С elpa есть фрагмент, который выглядит так, который устанавливается в нижней части вашего .emacs
.
;;; This was installed by package-install.el.
;;; This provides support for the package system and
;;; interfacing with ELPA, the package archive.
;;; Move this code earlier if you want to reference
;;; packages in your .emacs.
(when
(load
(expand-file-name "~/.emacs.d/elpa/package.el"))
(package-initialize))
Как следует из комментария, вы, вероятно, захотите поместить свой эквивалентный package.el
код инициализации перед материалом, который загружает init.el
.
Наконец: я замечаю, что вы добавили .emacs.d
к вашему load-path
. Путь загрузки Emacs не рекурсивный, поэтому, вероятно, он не будет делать то, что вам нужно (при условии, что ваши библиотеки живут в подкаталогах). Несколько лет назад я написал этот фрагмент, чтобы загрузить различные библиотеки кода elisp, которые я написал. Вы можете найти это полезным. (Очевидно, что он будет работать только на unixy-системах с командной оболочкой и командой find. Он достаточно медленный, но это, кажется, shell-command-to-string
, который занимает несколько миллисекунд даже при запуске "echo hello" и т.п.)
(defun find-elisp-dirs (dir)
"Find all directories below DIR containing elisp sources, ignoring those"
(split-string
(shell-command-to-string
(format "find %s -iname '*.el' -printf '%%h\\n' | sort -u"
(expand-file-name dir t)))))