Spec-Zone.ru › Elisp

Основы упаковки

Пакет может быть простым пакетом или пакетом с несколькими файлами. Простой пакет хранится в архиве пакетов как один файл Emacs Lisp, а пакет с несколькими файлами хранится как архив tar (содержащий несколько файлов Lisp и, возможно, файлы, не относящиеся к Lisp, такие как руководство).

В обычном использовании разница между простыми и многофайловыми пакетами относительно невелика; интерфейс меню «Пакеты» не различает их. Однако процедура их создания отличается, как объясняется в следующих разделах.

Каждый пакет (простой или многофайловый) имеет определенные атрибуты:

Имя

Краткое слово (например, «auctex»). Это обычно также префикс символа, используемый в программе (см. Руководство по стилю программирования).

Версия

Номер версии в формате, который понимает функция version-to-list (например, «11.86»). Каждое обновление пакета должно сопровождаться увеличением номера версии, чтобы пользователи, запрашивающие архив пакетов, распознавали его как обновление.

Краткое описание

Отображается при отображении пакета в меню «Пакеты». Оно должно занимать одну строку, желательно не более 36 символов.

Полное описание

Отображается в буфере, созданном командой C-h P (describe-package), после краткого описания пакета и статуса его установки. Оно обычно занимает несколько строк и должно полностью описывать возможности пакета и способ его использования после установки.

Зависимости

Список других пакетов (возможно, включая минимально допустимые номера версий), от которых зависит этот пакет. Список может быть пустым, что означает, что у этого пакета нет зависимостей. В противном случае установка этого пакета также автоматически устанавливает его зависимости рекурсивно; если какая-либо зависимость не найдена, пакет установить невозможно.

Установка пакета, как через команду package-install-file, так и через меню «Пакеты», создает подкаталог в package-user-dir с именем имя-версия, где имя — имя пакета, а версия — его версия (например, ~/.emacs.d/elpa/auctex-11.86/). Мы называем это каталогом содержимого пакета. Именно сюда Emacs помещает содержимое пакета (один файл Lisp для простого пакета или файлы, извлечённые из многофайлового пакета).

Затем Emacs ищет в каждом файле Lisp в каталоге содержимого магические комментарии автозагрузки (см. Автозагрузка). Эти определения автозагрузки сохраняются в файл с именем имя-autoloads.el в каталоге содержимого. Они обычно используются для автозагрузки основных команд пользователя, определенных в пакете, но также могут выполнять другие задачи, такие как добавление элемента в auto-mode-alist (см. Автоматический режим). Обратите внимание, что пакет обычно не автозагружает каждую функцию и переменную, определённую в нём — только несколько команд, обычно вызываемых для начала использования пакета. Затем Emacs выполняет байт-компиляцию каждого файла Lisp в пакете.

После установки установленный пакет загружается: Emacs добавляет каталог содержимого пакета в load-path, и оценивает определения автозагрузки в имя-autoloads.el.

При каждом запуске Emacs автоматически вызывает функцию package-activate-all, чтобы сделать установленные пакеты доступными для текущего сеанса. Это выполняется после загрузки начального файла инициализации, но до загрузки обычного файла инициализации (см. Краткое описание запуска). Пакеты не доступны автоматически, если пользовательский параметр package-enable-at-startup установлен на значение nil в начальном файле инициализации.

Функция: package-activate-all

Эта функция делает пакеты доступными для текущего сеанса. Пользовательский параметр package-load-list определяет, какие пакеты сделать доступными; по умолчанию доступны все установленные пакеты. См. Установка пакетов в Руководство по GNU Emacs.

В большинстве случаев вам не нужно вызывать package-activate-all, поскольку это делается автоматически во время запуска. Просто убедитесь, что любой код, который должен выполняться до package-activate-all, находится в начальном файле инициализации, а любой код, который должен выполняться после него, — в основном файле инициализации (см. Файл инициализации в Руководстве по GNU Emacs).

Команда: package-initialize &optional no-activate

Эта функция инициализирует внутреннюю запись Emacs о том, какие пакеты установлены, а затем вызывает package-activate-all.

Необязательный аргумент no-activate, если не nil, заставляет Emacs обновить запись об установленных пакетах без их фактического включения.

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/Packaging-Basics.html

Spec-Zone.ru

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