Next: 単純なパッケージ, Up: 配布用Lispコードの準備 [Contents][Index]
パッケージはシンプルパケージ(simple package)か複数ファイルパッケージ(multi-file package)のいずれかです。シンプルパッケージは単一のEmacs Lispファイル内に格納される一方、複数ファイルパッケージはtarファイル(複数のLispファイルとマニュアルのような非Lispファイルが含まれる可能性がある)に格納されます。
通常の使い方ではシンプルパッケージと複数ファイルパッケージとの違いは比較的重要ではありません。Package Menuインターフェースでは、それらの間に差異はありません。しかし以降のセクションで説明するように作成する手順は異なります。
パッケージ(シンプルか複数ファイル)はそれぞれ特定の属性(attributes)をもっています:
短い単語(たとえば‘auctex’)。これは通常はそのプログラム内でシンボルプレフィクスとしても使用される(Emacs Lispコーディング規約を参照)。
関数version-to-list
が理解できる形式のバージョン番号(たとえば‘11.86’)。パッケージの各リリースではユーザーがパッケージアーカイブの問い合わせでアップグレードとして認識できるようにバージョン番号のアップも行うこと。
そのパッケージがPackage Menuにリストされる際にが表示される。理想的には36文字以内の単一行であること。
これはC-h P
(describe-package
)により作成されたバッファーに表示されて、その後にそのパッケージの簡単な説明(brief
description)とインストール状態(installation
status)が続く。これには通常はパッケージの能力とインストール後に使用を開始する方法を複数行に渡って完全に記述すること。
そのパッケージが依存する他のパッケージ(恐らく最低のバージョン番号を含む)。このリストは空でもよく、その場合にはパッケージに依存パッケージがないことを意味する。それ以外ならパッケージをインストールすることにより依存パッケージも自動的かつ再帰的にインストールされる。依存パッケージのいずれかが見つからなければパッケージをインストールすることはできない。
コマンドpackage-install-file
、またはPackage
Menuのいずれかを介したパッケージのインストールでは、package-user-dir
にname-versionという名前のサブディレクトリーが作成されます。ここでnameはパッケージ名、versionはバージョン番号です(たとえば~/.emacs.d/elpa/auctex-11.86/)。わたしたちはこれをパッケージのコンテンツディレクトリー(content
directory)と呼んでいます。これはEmacsがパッケージのコンテンツ(シンプルパッケージでは単一のLispファイル、または複数ファイルパッケージから抽出されたファイル)を配置する場所です。
その後にEmacsはautoloadマジックコメント(autoloadを参照)にたいしてコンテンツディレクトリー内のすべてのLispファイルを検索します。これらのautoload定義はコンテンツディレクトリーのname-autoloads.elという名前のファイルに保存されます。これらは通常はパッケージ内で定義された主要なユーザーコマンドのautoloadに使用されますが、auto-mode-alist
への要素の追加(Emacsがメジャーモードを選択する方法を参照)等の別のタスクを行うこともできます。パッケージは通常はその中で定義された関数と変数のすべてをautoloadしないことに注意してください
—
通常はそのパッケージの使用を開始するために呼び出される一握りのコマンドだけがautoloadされます。それからEmacsはそのパッケージ内のすべてのLispファイルをバイトコンパイルします。
インストール後はインストールされたパッケージはロード済み(loaded)になります。Emacsはload-path
にコンテンツディレクトリーを追加してname-autoloads.el内のautoload定義を評価します。
Emacsのスタートアップ時には、カレントセッションでインストール済みパッケージを利用可能にするために、自動的に関数package-activate-all
を呼び出します。これは早期initファイルロード後、かつ通常initファイルロード後に行われます(要約: スタートアップ時のアクション順序を参照)。早期initファイルでユーザーオプションpackage-enable-at-startup
がnil
にセットされている場合には、パッケージは自動的に利用可能にはなりません。
この関数はカレントセッションでパッケージを利用可能にする。ユーザーオプションpackage-load-list
は利用可能にするパッケージを指定する。デフォルトではインストール済みのパッージすべてが利用可能になる。Package
Installation in The GNU Emacs Manualを参照のこと。
ほとんどの場合には、スタートアップの間に自動的に行われるのでpackage-activate-all
を呼び出す必要はないはずである。単に早期initファイル内にpackage-activate-all
の前に実行される必要のあるコードを配置するとともに、package-activate-all
の後に実行される必要のあるコードを主linitファイルに配置することを確実に行なえばよい(Init
File in The GNU Emacs Manualを参照)。
この関数は何のパッケージがインストール済みかに関するEmacsの内部レコードを初期化してからpackage-activate-all
を呼び出す。
オプション引数no-activateが非nil
なら、インストール済みパッケージを実際に利用可能にせずにこのレコードを更新する。これは内部でのみ使用される。