[APEL の README (日本語版)] APEL とは? ============ APEL は "A Portable Emacs Library." の略です。これは以下のモジュール で構成されています: poe.el --- 主に最新の emacs 環境のための基礎的な関数と特殊形式/マ クロの emulation のモジュール poe-xemacs.el --- XEmacs用 poe-18.el --- Emacs 18/Nemacs 用 env.el --- Emacs 18 用の env.el localhook.el --- Emacs 18 と Emacs 19.28 以前用の hook 関数群 poem.el --- 移植性の高い MULE プログラムを書くための基礎的な関数を 提供する poem-nemacs.el --- Nemacs 用 poem-ltn1.el --- MULE なし Emacs 19/XEmacs 用 poem-om.el --- MULE 1.*, 2.* 用 poem-20.el --- Emacs 20 と XEmacs-MULE の共有モジュール poem-e20_2.el --- Emacs 20.1/20.2 用 poem-e20_3.el --- Emacs 20.3 用 poem-xm.el --- XEmacs-MULE 用 invisible.el --- 不可視 region に関する機能を提供する inv-18.el --- for Emacs 18 inv-19.el --- for Emacs 19 inv-xemacs.el --- for XEmacs mcharset.el --- MIME charset 関連の機能を提供する mcs-nemacs.el --- Nemacs 用 mcs-ltn1.el --- MULE Emacs 19/XEmacs 用 mcs-om.el --- MULE 1.*, 2.* 用 mcs-20.el --- Emacs 20 と XEmacs-MULE 用の共有モジュール mcs-e20.el --- Emacs 20 用 mcs-xm.el --- XEmacs-MULE 用 mcs-xmu.el --- XEmacs-MULE 用 (ISO646 文字の単一化) static.el --- 静的評価のためのユーティリティー broken.el --- Emacs の壊れている機能の情報を提供する pccl.el --- 移植可能な CCL プログラムを書くためのユーティリティー pccl-om.el --- MULE 2.* 用 pccl-20.el --- Emacs 20/XEmacs-21-MULE 用 alist.el: 連想リストのためのユーティリティー calist.el: 状態木と状態/状況連想リスト用のユーティリティー path-util.el: パス管理とファイル探索のためのユーティリティー filename.el:ファイル名を作るためのユーティリティ install.el: emacs-lisp パッケージインストールするためのユーティリ ティー mule-caesar.el: ROT 13-47-48 Caesar 変換のユーティリティー emu.el --- (tm-7.106 に入っていた emu との互換性を保つためのモジュー ル。poe, poem, mcharset を require する) emu-mule: MULE 1.*, 2.* 用 richtext.el --- Emacs 19.29 かそれ以降 XEmacs 19.14 かそれ以降 のための text/richtext モジュール tinyrich.el --- 古い emacs 環境のための text/richtext モジュー ル pcustom.el --- 移植性の高い custom 環境を提供する tinycustom.el --- custom.el のエミュレーションを行なう インストール ============ (a) 展開した場所で実行 他のディレクトリーにインストールしたくないなら、以下のことだけをやっ てください: % make emacs のコマンド名を指定することができます。例えば、 % make EMACS=xemacs `EMACS=...' が省略されると、Emacs=emacs が使われます。 (b) make install 他のディレクトリーにインストールしたいなら、以下のことをしてください: % make install emacs のコマンド名を指定することができます。例えば、 % make install EMACS=xemacs `EMACS=...' が省略されると、Emacs=emacs が使われます。 Emacs Lisp プログラムとシェルスクリプトのためのディレクトリー木の接 頭辞 (prefix) を指定することができます。例えば、 % make install PREFIX=~/ `PREFIX=...' が省略されると、指定された emacs コマンドのディレクトリー 木の接頭辞が使用されます (おそらく /usr/local です)。 例えば、PREFIX=/usr/local と Emacs 20.2 が指定されれば、以下のディレ クトリー木が作成されます。 /usr/local/share/emacs/20.2/site-lisp/ --- emu /usr/local/share/emacs/site-lisp/apel/ --- APEL Emacs Lisp プログラムのための lisp ディレクトリーを指定することがで きます。例えば、: % make install LISPDIR=~/elisp emu モジュールがインストールされる、バージョン特有の lisp ディレクト リーを指定することもできます。例えば、: % make install VERSION_SPECIFIC_LISPDIR=~/elisp どのファイルが emu モジュールか apel モジュールの一部なのか、それら がどこにインストールされるかを知りたいときは、次のようなコマンドを入 力することができます。 % make what-where LISPDIR=~/elisp VERSION_SPECIFIC_LISPDIR=~/elisp ファイル APEL-CFG を編集することで他の選択自由な設定を指定することが できます。その中のコメントを読んでください。 (c) XEmacs のパッケージとしてインストールする XEmacs のパッケージディレクトリーにインストールする場合は、以下のこ とをしてください: % make install-package emacs のコマンド名を指定することができます。例えば、 % make install-package XEMACS=xemacs-21 `XEMACS=...' が省略されると、XEMACS=xemacs が使用されます。 パッケージのディレクトリーを指定することができます。例えば: % make install PACKAGEDIR=~/.xemacs `PACKAGEDIR=...' が省略されると、存在するパッケージディレクトリーの 最初のものが使われます。 XEmacs のパッケージシステムは XEmacs 21.0 かそれ以降を要求することに 注意してください。 load-path(Emacs と MULE の場合) ================================ もし Emacs もしくは Mule をお使いなら、APEL を install した場所を load-path に追加してください。もし Emacs 19.29 以降または Emacs 20.1, 20.2 を使って初期設定でインストールしたのなら、次のように subdirs.el を書くことができます。 -------------------------------------------------------------------- (normal-top-level-add-to-load-path '("apel")) -------------------------------------------------------------------- もし Emacs 20.3 以降もしくは XEmacs を使って普通にインストールするの ならば、load-path を設定する必要はありません。 Emacs のバージョンに関連した情報 ================================ 「古い byte-compiler」と「新しい byte-compiler」 Emacs 18 のユーザのみなさんへ: このパッケージではコンパイル時における条件判断をたくさん行なっていま す。残念ながら Emacs 18 に付属している byte-compiler には、例えば `eval-when-compile' や `eval-and-compile' の機能が無いので代用品のマ クロを用意してありますが、これらはコンパイル時だけでなく load 時また は実行時にも働いてしまいます! 加えて「古い byte-compiler」はトップ レベルのマクロをコンパイルしてくれないので、APEL の多くのコードがコ ンパイルされないままになってしまいます。 そこで、最適化を行なう「新しい byte-compiler」を使うことをお勧めしま す。それは Emacs 19 以降に付属している byte-compiler の元になってい るものです。 最適化を行なう byte-compiler は Emacs Lisp Archive およびそれらのミ ラーから入手することができます。 Mule 1.* の時代には Mule 用の「新しい byte-compiler」を含む Mule 1.* 用の "contrib" パッケージが配布されていました。しかし現在ではこのパッ ケージを手に入れることは難しいでしょう。 我々の知る限りでは Emacs 18 用の「新しい byte-compiler」は SKK 9.6 に付属しています。これは Mule 1.* 用のパッチも含んでいます。 「古い custom」と「新しい custom」 Emacs 19.34 と XEmacs 19.14 のユーザのみなさんへ: Emacs 19.32〜19.34、XEmacs 19.14 および Gnus 5.2/5.3 に含まれている custom ライブラリは「古い」もので、これの API は Emacs 20.1 または XEmacs 19.15 より新しい Emacsen と Gnus 5.4/5.5 に含まれている 「新しい custom」とは違っています。 Emacs 19.34 と XEmacs 19.15〜20.2 用の「新しい custom」は、以下の URL から手に入れることができます。 ftp://ftp.dina.kvl.dk/pub/Staff/Per.Abrahamsen/custom/custom-1.9962.tar.gz (注: XEmacs 19.15〜20.2 と Gnus 5.4/5.5 に含まれている「新しい custom」はこの版より古いものです。) 「新しい custom」をインストールする前に、次の各項目をチェックして下 さい。 1) もしあなたが Gnus 5.2/5.3 (または他の「古い custom」を使うアプ リケーション) を使うことに固執しているのならば「新しい custom」 をインストールしてはいけません。 2) Emacs 19 を元にした Mule を使うのならば、このパッチを「新しい custom」に当てる必要があります。 ----8<------8<------8<------8<------8<------8<------8<------8<---- --- custom-1.9962/cus-face.el~ Wed Mar 4 19:52:39 1998 +++ custom-1.9962/cus-face.el Mon Mar 9 08:05:33 1998 @@ -96,7 +96,7 @@ "Define a new FACE on all frames, ignoring X resources." (interactive "SMake face: ") (or (internal-find-face name) - (let ((face (make-vector 8 nil))) + (let ((face (make-vector face-vector-length nil))) (aset face 0 'face) (aset face 1 name) (let* ((frames (frame-list)) ----8<------8<------8<------8<------8<------8<------8<------8<---- 3) custom を使うコンパイルされたアプリケーションは、それを load す るときや実行するときに同じバージョンの custom を必要とします。 したがって、いつも load-path に「新しい custom」を含めておかな ければなりません。 これを行なうためのもっとも簡単な方法は subdirs.el を使うことで す。 「新しい custom」が /usr/local/share/emacs/19.34/site-lisp/custom/ にインストールされているのならば、 /usr/local/share/emacs/19.34/site-lisp/subdirs.el というファイ ルに以下の行を書き込んで下さい。 (normal-top-level-add-to-load-path '("custom")) 使い方 ====== alist ----- 関数 put-alist (ITEM VALUE ALIST) ALIST を ITEM の値が VALUE になるように修正します。car が ITEM であ る対が存在すれば、その cdr を VALUE で置き換えます。そのような対がな ければ、新しい対 (ITEM . VALUE) を作り、car が新しい対で、cdr が ALIST である新しい連想リストを返します。 関数 del-alist (ITEM ALIST) 連想リスト ALIST に key が ITEM である対があれば、それを ALIST から取 り除きます。 関数 set-alist (SYMBOL ITEM VALUE) SYMBOL で指定されている連想リストを、ITEM の値が VALUE であるように 修正します。 例. (set-alist 'auto-mode-alist "\\.pln$" 'text-mode) 関数 modify-alist (MODIFIER DEFAULT) 連想リスト DEFAULT を連想リスト MODIFIER に修正します。 関数 set-modified-alist (SYMBOL MODIFIER) SYMBOL の値を連想リスト MODIFIER に修正します。SYMBOL は連想リストで ある必要があります。それが束縛されていなければ、その値を nil とみな します。 path-util --------- 関数 add-path (PATH &rest OPTIONS) PATH が `default-load-path' のディレクトリーの下に存在して、 `load-path'に存在しないときに、それを `load-path' に追加します。 次のような PATH の様式を使うことができます: load-path からの相対: "PATH" (それは `default-load-path から探 されます。) ホームディレクトリーからの相対: "~/PATH" "~USER/PATH" 絶対パス: "/FOO/BAR/BAZ" 次のような OPTIONS を指定することができます: 'all-paths --- `default-load-path の代わり `load-path' から探しま す。 'append --- PATH を `load-path' の最後に追加します。 関数 add-latest-path (PATTERN &optional ALL-PATHS) 正規表現 PATTERN に合致した最新のパスが `default-load-path' の下に存 在していて、`load-path' の下に存在していないときにそれを `load-path' に追加します。 例えば、bbdb-1.50 と bbdb-1.51 が site-lisp の下にあって、bbdb-1.51 が bbdb-1.50 よりも新しく、site-lisp が /usr/local/share/emacs/site-lisp であるときは、 (add-latest-path "bbdb") は "/usr/local/share/emacs/site-lisp/bbdb-1.51" を `load-path' の先 頭に追加します。 省略可能な引数 ALL-PATHS が指定されると、`default-load-path' のかわ りに `load-path' から探します。 関数 get-latest-path (PATTERN &optional ALL-PATHS) 正規表現 PATTERN に合致する default-load-path にある最新のディレクト リーを返します。省略可能な引数 ALL-PATHS が指定されると、 default-load-path の代わりに load-path の全てから探します。 例. (let ((gnus-path (get-latest-path "gnus"))) (add-path (expand-file-name "lisp" gnus-path)) (add-to-list 'Info-default-directory-list (expand-file-name "texi" gnus-path)) ) 関数 file-installed-p (FILE &optional PATHS) FILE が PATHS に存在した場合、FILE の絶対パスを返します。PATHS が省 略されると、`load-path' が使われます。 関数 exec-installed-p (FILE &optional PATHS SUFFIXES) FILE が PATHS に存在した場合に FILE の絶対パスを返します。PATHS が省 略されると、`exec-path' が使われます。SUFFIXES が省略されると、 `exec-suffix-list' が使われます。 関数 module-installed-p (MODULE &optional PATHS) MODULE が提供されている (provided) か、PATHS に存在する場合に nil で ない値を返します。PATHS が省略されると、`load-path' が使われます。 filename -------- 関数 replace-as-filename (string) STRING から安全なファイル名を返します。 それは変数 'filename-fileters' を参照します。その変数はファイル名の 選別器のための関数のリストです。初期設定の選別器は以下の変数を参照し ています。 変数 filename-limit-length ファイル名の長さの制限。 変数 filename-replacement-alist 文字と文字列が対になったリストの連想リストです。文字のリスト はファイル名として許されない文字を現わします。 バグ報告 =========== バグ報告や改善の提案を書いたときは、是非 APEL メーリングリストに送っ てください: apel-en@m17n.org (英語) apel-ja@m17n.org (日本語) APEL ML を通して、APEL のバグを報告したり、APEL の最新のリリースを取 得したり、APEL の将来の拡張の議論をしたりすることができます。APEL ML に参加するには、空の電子メールを apel-en-ctl@m17n.org (英語) apel-ja-ctl@m17n.org (日本語) に送ってください。 Anonymous FTP ============= 最新の APEL のリリースは以下の場所から取得できます: ftp://ftp.m17n.org/pub/mule/apel/ CVS === APEL の開発は CVS を使っています。最新の開発バージョンを CVS で 取得できます。 (0) cvs login (一回目だけ) % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root login CVS password: [CR] # 空文字列 (1) checkout % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/root checkout apel CVS に基づいた開発に参加したいときは、 cvs@cvs.m17n.org にアカウント名と、ssh の公開鍵を送ってください。ssh 経由では、 cvsroot は :ext:cvs@cvs.m17n.org:/cvs/root となります。 どうしても ssh が使えない場合、pserver 経由でも開発に参加できます。 この場合、UNIX の /etc/passwd 様式で暗号化されたパスワードを送って下 さい。この場合 cvsroot は :pserver:<アカウント名>@cvs.m17n.org:/cvs/root となります。 開かれた開発に参加してくださることを期待します。