GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Multi_002dfile-Packages.html ・ emacs-doc.conao3.com

44.3 複数ファイルパッケージ

マルチファイルパッケージは、シングルファイルパッケージに比べて作成の手間はかかりますが、より多くの機能を備えています。複数のEmacs LispファイルやInfoマニュアル、その他のファイル形式(画像など)を含めることができます。

インストール前に、複数のファイルからなるパッケージがtarファイルとしてパッケージアーカイブに格納されます。tarファイルの名前はname-version.tarとする必要があり、ここでnameはパッケージ名、versionはバージョン番号となります。展開後の内容はすべて、name-versionという名前のディレクトリ、すなわちコンテンツディレクトリに配置される必要があります(パッケージングの基本を参照)。また、ファイルがコンテンツディレクトリのサブディレクトリに展開される場合もあります。

contentディレクトリ内のファイルのうち1つは、name-pkg.elという名前である必要があります。このファイルには、後述する関数define-packageの呼び出しからなる単一のLispフォームが含まれている必要があります。これにより、パッケージの属性(バージョン、簡潔な説明、および要件)が定義されます。

例えば、superfrobnicatorのバージョン1.3をマルチファイルパッケージとして配布する場合、tarファイルはsuperfrobnicator-1.3.tarとなります。その内容はディレクトリsuperfrobnicator-1.3に展開され、そのうちの1つがファイル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 に依存していることを意味します。

contentディレクトリにREADMEという名前のファイルがある場合、このファイルが詳細な説明として使用されます(‘;;; Commentary:’セクションを上書きします)。

contentディレクトリにdirという名前のファイルがある場合、それはinstall-infoで作成されたInfoディレクトリファイルであるとみなされます。TexinfoのInvoking install-infoを参照してください。関連するInfoファイルもcontentディレクトリに存在する必要があります。この場合、パッケージが有効化されると、Emacsは自動的にcontentディレクトリを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 ファイルに追加できます。このファイルでは、各行にファイルまたはファイルに一致するワイルドカードを記述します。ELPA でパッケージの tarball を作成する際、これらのファイルは無視されます(パッケージアーカイブの作成と管理 を参照)。(ELPA は、ダウンロード用にパッケージを準備する際、-X コマンドラインオプションを介してこのファイルを tar コマンドに渡します。)