Как emacs загружает пакет?

Мне всегда интересно узнать о процессе загрузки пакета в Emacs. Вы знаете, некоторые пакеты являются встроенными, а некоторые сторонними.
Например, вы можете установить пакет "автозаполнение" из MELPA или MELPA-STABLE, или вы можете получить исходный код из github.
Если вы устанавливаете пакет из MELPA, вы найдете файлы пакета в "~/.emacs.d/elpa/auto-complete***".

auto-complete-autoloads.el  
auto-complete-config.el  
auto-complete-config.elc  
auto-complete.el  
auto-complete.elc  
auto-complete-pkg.el  
dict;;it's a directory

Что emacs делает для нас, чтобы установить пакет? Он просто загружает все файлы из MELPA и помещает их в "~/.emacs.d/elpa/auto-complete***"? Как emacs узнает о существовании пакета auto-complete-package и загружает их при следующем запуске emacs?
Я знаю, что должен добавить что-то в "~/.emacs.d/init.el", если получить исходный код из github. Может так

(add-to-list 'load-path "path-to-download-folder/auto-complete")
(require 'auto-complete-config)
(ac-config-default)

Но я не вижу никаких изменений в "init.el", если я устанавливаю пакет из MELPA. Возможно, emacs назначит путь автозаполнения переменной load-path. Но потом?
Как emacs загружает пакет? Откуда он знает мою "команду ALT-x +"?
И я действительно не знаю взаимосвязи этих файлов, загруженных из MELPA из emacs, и их функций. Может ли кто-нибудь сказать мне весь процесс загрузки пакета? Что делает emacs за нами, чтобы установить пакет из MELPA/MELPA-STABLE?

1 ответ

Emacs (по умолчанию) автоматически загружает (почти) все файлы формы ~/.emacs.d/elpa/*/*-autoloads.el, Пакет <pkg>-autoloads.el будет содержать более или менее эквивалент вашего "add-to-list + require + ...".

Другие вопросы по тегам