В 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))
Другие вопросы по тегам