Пакеты из нескольких файлов
Создание пакета из нескольких файлов менее удобно, чем пакета из одного файла, но оно предоставляет больше функций: в него можно включить несколько файлов Emacs Lisp, справочник Info и другие типы файлов (например, изображения).
Перед установкой пакет из нескольких файлов хранится в архиве пакетов в формате tar-файла. Файл tar должен иметь имя имя-версия.tar, где имя — имя пакета, а версия — номер версии. Его содержимое после извлечения должно располагаться в каталоге с именем имя-версия, каталоге содержимого (см. Основы упаковки). Файлы также могут быть извлечены в подкаталоги каталога содержимого.
Один из файлов в каталоге содержимого должен иметь имя имя-pkg.el. Он должен содержать единственную форму Lisp, состоящую из вызова функции define-package, описанной ниже. Это определяет атрибуты пакета: версию, краткое описание и зависимости.
Например, если мы распространяем версию 1.3 пакета superfrobnicator в виде пакета из нескольких файлов, файл tar будет superfrobnicator-1.3.tar. Его содержимое будет извлечено в каталог superfrobnicator-1.3, и одним из этих файлов будет superfrobnicator-pkg.el.
- Функция: define-package имя версия &optional описание зависимости
-
Эта функция определяет пакет. имя — это имя пакета, строка. версия — это версия, как строка, которую может понять функция
version-to-list. описание — краткое описание.зависимости — список необходимых пакетов и их версий. Каждый элемент в этом списке должен иметь вид
(dep-name dep-version), где имя_зависимости — символ, имя которого — имя пакета зависимости, а версия_зависимости — версия зависимости (строка).
Если каталог содержимого содержит файл с именем README, этот файл используется в качестве подробного описания (заменяя любой раздел ‘;;; Комментарий:’).
Если каталог содержимого содержит файл с именем dir, это предполагается файлом каталога Info, созданным с помощью install-info. См. Вызов install-info в Texinfo. Соответствующие файлы Info также должны присутствовать в каталоге содержимого. В этом случае Emacs автоматически добавит каталог содержимого к Info-directory-list при активации пакета.
Не включайте в пакет файлы с расширением .elc. Они создаются при установке пакета. Обратите внимание, что нет способа контролировать порядок байтового компилирования файлов.
Не включайте в пакет файл с именем имя-autoloads.el. Этот файл зарезервирован для определений автозагрузки пакета (см. Основы упаковки). Он создается автоматически при установке пакета путем поиска всех файлов Lisp в пакете по магическим комментариям автозагрузки.
Если пакет из нескольких файлов содержит вспомогательные файлы данных (например, изображения), код Lisp пакета может ссылаться на эти файлы через переменную load-file-name (см. Загрузка). Вот пример:
(defconst superfrobnicator-base (file-name-directory load-file-name)) (defun superfrobnicator-fetch-image (file) (expand-file-name file superfrobnicator-base))
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Multi_002dfile-Packages.html