Spec-Zone.ru › Elisp

Пакеты из нескольких файлов

Пакет из нескольких файлов создавать менее удобно, чем пакет из одного файла, но он предоставляет больше возможностей: он может включать несколько файлов 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API