-*- outline -*-

[APEL の README (日本語版)]

* APEL とは？

APEL は "A Portable Emacs Library." の略です。これは以下のモジュールで
構成されています:

** poe.el

主に最新の emacs 環境のための基礎的な関数と特殊形式/マクロの emulation
のモジュール。

  poe-xemacs.el  --- XEmacs用
  pym.el         --- poe のための macros

** poem.el

移植性の高い MULE プログラムを書くための基礎的な関数を提供する。

  poem-ltn1.el   --- MULE なし Emacs 19/XEmacs 用
  poem-20.el     --- Emacs 20 と XEmacs-MULE の共有モジュール
  poem-e20_3.el  --- Emacs 20.3 用
  poem-xm.el     --- XEmacs-MULE 用

** pces.el

移植性の高い character encoding スキーム (coding-system) を提供する。

  pces-20.el     --- coding-system 機能を持つ Emacs 20 and XEmacs 用
  pces-e20.el    --- Emacs 20 用
  pces-raw.el    --- coding-system 機能を持たない emacsen 用
  pces-xfc.el    --- file coding 機能を持つ XEmacs 用
  pces-xm.el     --- XEmacs-mule 用

** invisible.el --- 不可視 region に関する機能を提供する

  inv-19.el     --- for Emacs 19
  inv-23.el     --- for Emacs 23
  inv-xemacs.el --- for XEmacs

** mcharset.el --- MIME charset 関連の機能を提供する

  mcs-ltn1.el   --- MULE Emacs 19/XEmacs 用
  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-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 する。

  richtext.el   --- Emacs 19.29 かそれ以降 XEmacs 19.14 かそれ以降のた
                    めの text/richtext モジュール

** pcustom.el --- 移植性の高い custom 環境を提供する

** product.el --- プロダクトのバージョン情報のための機能を提供するモジュール。


* インストール

** 展開した場所で実行

他のディレクトリーにインストールしたくないなら、以下のことだけをやって
ください (MS-DOS 系の OS のために MAKEIT.BAT が用意されています。
MAKEIT.BAT の利用については下記「MAKEIT.BAT を利用する (MS-DOS 系 OS
の場合)」を参照して下さい)。:

  % make

emacs のコマンド名を指定することができます。例えば、

  % make EMACS=xemacs

`EMACS=...' が省略されると、Emacs=emacs が使われます。

** 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 を編集することで他の選択自由な設定を指定することがで
きます。その中のコメントを読んでください。

** XEmacs のパッケージとしてインストールする

XEmacs のパッケージディレクトリーにインストールする場合は、以下のこと
をしてください:

  % make install-package

emacs のコマンド名を指定することができます。例えば、

  % make install-package XEMACS=xemacs-21

`XEMACS=...' が省略されると、XEMACS=xemacs が使用されます。

パッケージのディレクトリーを指定することができます。例えば:

  % make install PACKAGEDIR=~/.xemacs

`PACKAGEDIR=...' が省略されると、存在するパッケージディレクトリーの最
初のものが使われます。

XEmacs のパッケージシステムは XEmacs 21.0 かそれ以降を要求することに注
意してください。

** MAKEIT.BAT を利用する (MS-DOS 系 OS の場合)

MS-DOS 系の OS のために MAKEIT.BAT と MAKE1.BAT が用意されています
(cygwin 環境を利用している方は make.exe と Makefile を利用することがで
きます)。MAKEIT.BAT は、インストールの環境変数を設定した後に MAKE1.BAT
を呼出します。MAKE1.BAT によって実際のインストールに必要なコマンドが実
行されます。

これらを利用するには MAKEIT.BAT を編集することが必要です。安全のためす
べての環境変数のデフォルトの値は空文字列になっています。お使いのシステ
ムにあわせてこれらの変数を指定してください。

開発、動作確認が Windows でしか行なわれていないため、古いバージョンの
DOS では動作しない可能性があります。不都合を発見した方は
apel-ja@lists.chise.org までご連絡下さい。

*** MAKEIT.BAT の編集

DOS のバッチファイルの中では `rem' が行頭にある行はコメントとして扱わ
れます。必要に応じ、MAKEIT.BAT の各行頭に `rem' を挿入したり、または削
除したりして下さい。

また、バッチファイル内の `%変数名%' は実行時の環境変数の値と置き換えら
れます。

c:\usr\Meadow にインストールされている 1.10 の Meadow を使用
している場合の変数設定の例を挙げます。

  set PREFIX=c:\usr\Meadow
  set EMACS=%PREFIX%\1.10\bin\meadow95.exe
  set EXEC_PREFIX=
  set LISPDIR=%PREFIX%\site-lisp
  set VERSION_SPECIFIC_LISPDIR=%PREFIX%\1.10\site-lisp
  set DEFAULT_MAKE_ARG=elc

上記の例では、meadow のバイナリが c:\usr\Meadow\1.10\bin\meadow95.exe
にインストールされていることを前提にしています。その前提に基づき、APEL
のモジュールのうち、meadow のバージョンに依存しないモジュールを

  c:\usr\Meadow\site-lisp

に、バージョンに依存するモジュールを

  c:\usr\Meadow\1.10\site-lisp

にインストールしようとします。

19.3x 以前の Emacs (例えば 19.28 ベースの Mule for Windows) にはバージョ
ン依存の site-lisp ディレクトリ (上記の例で言えば
c:\usr\Meadow\1.10\site-lisp) が存在せず、ディフォルトでは load-path も
通っていません。この場合は c:\usr\mule\site-lisp などのバージョン非依存
の site-lisp ディレクトリに APEL の全てのモジュールを入れれば良いでしょ
う。

Demacs の設定例を準備することができませんでした。Demacs に APEL をイン
ストールした方は、設定例を apel-ja@lists.chise.org に送って下さい (非
購読者でも送信はできます)。


*** MAKEIT.BAT の編集の際、知っておくと便利な Tips

引数を指定しないで MAKEIT.BAT を実行させると、DEFAULT_MAKE_ARG に指定
されている target が実行されます (ディフォルトは安全のために target が
空になっており、メッセージだけ吐いて止まるようになってます)。

MAKEIT.BAT を編集して、

  set DEFAULT_MAKE_ARG=install

と記述しておくことで、MAKEIT.BAT をダブルクリックするだけでインストー
ルすることができます。

MAKEIT.BAT は、下記のいずれかのファイルが存在するときは、そのファイル
の設定を優先して読み込むので、適宜編集した MAKEIT.BAT は下記のいずれか
のファイルとして、コピーしてキープしておくと、アップグレードの際に
MAKEIT.BAT を再編集する必要がなく便利です。

優先順に並べると下記のようになります。下記の 1-x は apel 専用、2-x は
同種の MAKEIT.BAT を利用している cmail, skk と共通して利用することがで
きます。

  1-1. %HOME%\.elispmk.apel.bat
  1-2. %HOME%\elisp\elispmk.apel.bat
  1-3. %HOME%\config\elispmk.apel.bat
  1-4. c:\Program Files\Meadow\elispmk.apel.bat
  1-5. c:\Meadow\elispmk.apel.bat
  1-6. d:\Meadow\elispmk.apel.bat

  2-1. %HOME%\.elispmk.bat
  2-2. %HOME%\elisp\elispmk.bat
  2-3. %HOME%\config\elispmk.bat
  2-4. c:\Program Files\Meadow\elispmk.bat
  2-5. c:\Meadow\elispmk.bat
  2-6. d:\Meadow\elispmk.bat

*** バッチファイル実行時の注意

MAKEIT.BAT, MAKE1.BAT は環境変数を利用しているために、実行時に環境変数
のためのメモリ割当てができずに、エラーになることがあります。Windows を
利用している場合は、DOSPROMPT のプロパティで環境変数の初期サイズが「自
動」になっていると、環境変数が設定できないというエラーが出るので、適当
な値 (2048 など) を入れておく必要があります。non Windows の DOS の場合
は、config.sys に

   SHELL=C:\COMMAND.COM /E:4096 /P

などと書き、環境変数に割当て可能なメモリを確保します。DOS のバージョン
によって /E:nnn で指定できる環境変数領域のサイズの制約が異なり、指定の
仕方が違ったり、特定の値を指定すると不具合を生じる可能性があるので詳し
くはご利用の version のマニュアル等をご覧下さい。

* 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 を設定する必要はありません。


* 使い方

** 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-filters' を参照します。その変数はファイル名の選
別器のための関数のリストです。初期設定の選別器は以下の変数を参照してい
ます。

**** 変数 filename-limit-length

ファイル名の長さの制限。

**** 変数 filename-replacement-alist

文字と文字列が対になったリストの連想リストです。文字のリストはファイル
名として許されない文字を現わします。


* バグ報告

バグ報告や改善の提案を書いたときは、是非 APEL メーリングリストに送って
ください:

  apel-ja@lists.chise.org	（日本語）
  apel-en@lists.chise.org	（英語）

APEL ML を通して、APEL のバグを報告したり、APEL の最新のリリースを取得
したり、APEL の将来の拡張の議論をしたりすることができます。APEL ML に
参加するには、以下の頁の記述を見て手続きを行ってください：

  http://lists.chise.org/mailman/listinfo/apel-ja	（日本語）
  http://lists.chise.org/mailman/listinfo/apel-en	（英語）


* Download

最新の APEL のリリースは以下の場所から取得できます:

    http://git.chise.org/elisp/dist/apel/


* Git

APEL の開発には Git を使っています。最新の開発バージョンを以下の Gitリ
ポジトリーから取得できます。

  % git clone http://git.chise.org/git/elisp/apel.git

この APEL のリポジトリーは WWW 経由でも閲覧することができます：

    http://git.chise.org/gitweb/?p=elisp/apel.git

Git に基づいた開発に参加したいときは、APEL メーリングリストでその旨を
宣言してください。

我々は多くの方がこの開かれた開発に参加してくださることを望んでいます。
