В emacs, кто устанавливает Info-directory-list при включении пакетов?
Я недавно переключился на использование менеджера пакетов emacs packages
,
С тех пор некоторые переменные пути emacs устанавливаются сверх того, что я делаю в моем .emacs
файл: оба load-path
а также Info-directory-list
получить с вещами из пакетов. Но я не понимаю, где эти настройки сделаны.
Давайте сосредоточимся на Info-directory-list
: В моем .emacs
файл, который я не установил, так что он должен быть нулевым (чтобы позже, когда info
запускается, его инициализируется из Info-default-directory-list
, Однако с моей новой упаковкой она уже инициализирована и добавлены некоторые каталоги пакетов. Это портит мой dir
структура в info
, Я проверил файлы автозагрузки, но они не установлены Info-directory-list
никак - и нет другого файла elisp в пакетах (pandoc-mode
в частности) сделай так.
Где Info-directory-list
набор переменных и как я могу восстановить контроль над порядком в этой переменной?
1 ответ
После оценки вашего файла инициализации, Emacs вызывает package-initialize
(что делает то, на что это похоже). После инициализации пакетов Emacs запускается after-init-hook
, поэтому, если вы хотите манипулировать переменными, которые были изменены во время инициализации пакета, вы можете поместить в файл инициализации следующее:
(add-hook 'after-init-hook 'my-after-init-hook)
(defun my-after-init-hook ()
"After package initialisation."
;; do something with Info-directory-list
)
Вы также можете позвонить package-initialize
самостоятельно, при условии, что вы убедитесь, что все необходимые переменные, связанные с пакетом, установлены заранее. Подробности смотрите в Emacs 24 "Проблемы инициализации системы пакетов".
Что касается как и почему Info-directory-list
В настоящее время в комментариях к этому аспекту (elisp) Multi-file Packages
:
Пакет из нескольких файлов создавать менее удобно, чем пакет из одного файла, но он предлагает больше возможностей: он может включать несколько файлов Emacs Lisp, руководство Info и другие типы файлов (например, изображения).
[...]
Если каталог содержимого содержит файл с именем
dir
предполагается, что это файл каталога Info, созданный сinstall-info
, * Примечание. Invoking install-info: (texinfo)Invoking install-info. Соответствующие файлы Info также должны присутствовать в каталоге содержимого. В этом случае Emacs автоматически добавит каталог содержимого вInfo-directory-list
когда пакет активирован.
В частности, package-activate-1
Является ли это:
(when (file-exists-p (expand-file-name "dir" pkg-dir))
;; FIXME: not the friendliest, but simple.
(require 'info)
(info-initialize)
(push pkg-dir Info-directory-list))