Пакеты из нескольких файлов
Пакет из нескольких файлов создавать менее удобно, чем пакет из одного файла, но он предоставляет больше возможностей: он может включать несколько файлов Emacs Lisp, руководство Info и файлы других типов (например, изображения).
До установки пакет из нескольких файлов хранится в архиве пакетов в виде tar-файла. Имя tar-файла должно иметь вид name-version.tar, где name — имя пакета, а version — номер версии. После распаковки всё его содержимое должно находиться в каталоге с именем name-version — каталоге содержимого (см. Основы создания пакетов). Файлы также могут распаковываться во вложенные каталоги каталога содержимого.
Один из файлов в каталоге содержимого должен называться name-pkg.el. Он должен содержать одну форму Lisp — вызов функции define-package, описанной ниже. Эта функция задаёт атрибуты пакета: версию, краткое описание и требования.
Например, если мы распространяем версию 1.3 superfrobnicator в виде пакета из нескольких файлов, tar-файл будет называться superfrobnicator-1.3.tar. Его содержимое распакуется в каталог superfrobnicator-1.3, и одним из файлов в нём будет superfrobnicator-pkg.el.
- Функция: define-package name version &optional docstring requirements
-
Эта функция определяет пакет. name — имя пакета, представленное строкой. version — версия в виде строки формата, который может распознать функция
version-to-list. docstring — краткое описание.requirements — список требуемых пакетов и их версий. Каждый элемент этого списка должен иметь вид
(dep-name dep-version), где dep-name — символ, имя которого совпадает с именем пакета-зависимости, а dep-version — версия зависимости (строка). Специальное значение ‘emacs’ означает, что пакет зависит от указанной версии Emacs.
Если в каталоге содержимого есть файл с именем README, он используется в качестве полного описания (вместо раздела ‘;;; Commentary:’).
Если в каталоге содержимого есть файл с именем dir, предполагается, что это файл каталога Info, созданный с помощью install-info. См. Запуск install-info в Texinfo. Соответствующие файлы Info также должны находиться в каталоге содержимого. В этом случае Emacs автоматически добавит каталог содержимого в Info-directory-list при активации пакета.
Не включайте в пакет файлы .elc. Они создаются при установке пакета. Обратите внимание, что управлять порядком байт-компиляции файлов невозможно.
Не включайте файлы с именем name-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))
Если пакет содержит файлы, которые вы не хотите распространять среди пользователей (например, тесты регрессии), их можно добавить в файл .elpaignore. В этом файле каждая строка содержит имя файла или шаблон подстановки, соответствующий файлам; такие файлы следует исключать при создании tar-архива пакета в ELPA (см. Создание архивов пакетов и управление ими). (При подготовке пакета к скачиванию ELPA передаст этот файл команде tar с помощью параметра командной строки -X.)
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Multi_002dfile-Packages.html