拡張エディター(EPM)キーワード色付け機能の使い方


 OS/2に付属している拡張エディター(以下「EPM」)は、かなり強力なキーワード色付け機能を持っています(バージョン6以降)。が、EPM のヘルプには「そんな機能がありますよ」的なコメントがちょろっと載っているだけで、その使用方法は明記されていませんでした。
 そのくせ、REXXスクリプトファイルを開いたら勝手に、しかもとてつもなくサイケな色付けされたりもして・・・
 そんなワケで、EPMKWDS.C ファイルの冒頭に記載されていた解説内容と、独自の調査結果を基に、下記のドキュメントを残す次第です。

■目次


■事前準備

 C言語ファイルなど一部の例外(後述)を除いて、キーワード色付けは、自動では行われません(不可能ではない...後述)。ファイルを読み込む毎に、EPM 編集ウィンドウ上部のツールバーの「キーワード色付けボタン」を押し下げる必要があります。
 しかし、デフォルトでは「キーワード色付けボタン」は、ツールバー上に存在しません。まずは、ボタンの追加を行います。
 因みに、カスタマイズしたツールバーは、設定ノートブックの「ツールバー(T)」ページの「エクスポート」「インポート」ボタンで、ファイル出力/入力する事が出来ます。
 他のマシンの EPM に同じカスタマイズ内容を適用したい場合に便利です。

■EPMKWDS.* ファイルとは

 環境変数 EPMPATH(デフォルトでは x:\OS2\APPS)が示すディレクトリにある EPMKWDS.* ファイルは、EPM がどのタイプ(拡張子)のファイルを編集する際に、どのキーワードを色付け表示するかを明記するために用いられます。
 例えば EPMKWDS.C は、C言語ファイルを対象に、OS/2ツールキット2.1で定義されているシンボル(#define、typedef、関数プロトタイプ、ANSI-Cキーワード)をデフォルトで網羅しています。

 余談ですが、このファイルは初期状態ではファイルサイズが大きすぎて読み込みに時間が掛かるので、半角スペースの羅列をタブ文字などに置換したり、不要なキーワードの行を削除するなどしてファイルサイズを小さくすると、読み込み時間を短くできます。

 EPMKWDS.* ファイルは、EPM の編集ウィンドウを開き、そのタイプのファイルを初めて開いた際に、1度だけ読み込まれます。
 EPMKWDS.* ファイルを編集し、その内容を反映させたい場合は、一旦 EPM の編集ウィンドウを閉じる必要があります。

 下記のファイルは、EPM と一緒に x:\OS2\APPS ディレクトリにインストールされており、すぐにキーワード色付け機能の恩恵を得られます。
(但し、色の選定は無茶苦茶...白地に白文字とか...IBMの人らはこれで読めてるのか?^^;)
 更に、C/C++言語、REXXスクリプト及びバッチファイル、E言語、HTMLの4種は、EPM がファイルを読み込んだ時点で、自動的にキーワード色付け機能がオンになります。
(英語版バージョン 6.03B では、他のタイプのファイルもきちんと自動色付けされる)

 下記のファイルは、x:\OS2\APPS ディレクトリにはインストールされていませんが、ファイル名が EPM 内部で予約されています。
 これらも含めて、サポートされていない拡張子のファイル(例えば *.ASM)でも、同じ拡張子の EPMKWDS ファイル(例えば EPMKWDS.ASM)を、環境変数 EPMPATH で指定されたディレクトリに自作すれば、キーワード色付け機能の恩恵を得られます。
 因みに、環境変数 EPMPATH は、PATHDPATH と同じように、「;」文字で区切って複数指定することが出来ます。

■EPMKWDS.* の記述法

 1バイト目の文字、つまり最初の行の先頭の文字は「特別な文字」です。
 その文字が、以降の行の初めに現われる場合、その直後が特定の「トピック」を表す文字列だと、そこが「トピック」の境界線になり、それ以外の場合は、その行はコメント扱い(無視)になります。

 キーワードを色付けする条件は、1つのキーワードに1行ずつ記述されます。
 条件の指定のために必要な文字列及び数値を、半角空白文字またはタブ文字で区切って記述します。先頭及び末尾の半角空白文字及びタブ文字は無視されます。

 キーワードを色付けする条件は、幾種類かの「トピック」で分類されます。
 前述の「トピック」の境界線の行から、次の「トピック」の境界線の行までが、その「トピック」での色付け条件の記述と見なされます。

 定義されている「トピック」と、それぞれのキーワード定義記述フォーマットは、以下の通りです。

 各「トピック」における背景色及び前景色は、0 から 15 までの数値で指定します。-1 を指定すると、デフォルトの前景色/背景色が使用されます。

0 - ■■■■
1 - ■■■■濃青
2 - ■■■■濃緑
3 - ■■■■濃水
4 - ■■■■濃赤
5 - ■■■■濃紫
6 - ■■■■
7 - ■■■■濃灰
8 - ■■■■薄灰
9 - ■■■■
10 - ■■■■
11 - ■■■■
12 - ■■■■
13 - ■■■■
14 - ■■■■
15 - ■■■■


■自動色付け機能を拡張する

 前述の通り、C言語ファイルなど一部の例外を除いて、キーワード色付けは自動では行われません。しかし、EPM のソースファイルを修正して実行バイナリファイルを作り直し、所望する拡張子を自動色付け対象にする事もできます。
 EPM の実行バイナリファイル *.EX のソースはE言語で記述され、その拡張子は *.E です。OS/2 のパッケージには、ソースファイルは含まれていません。ネットに流通している英語版のアーカイブ(EPM603B.ZIP)を入手し、それに置き換える必要があります。

 ソースファイル修正の前に、まず MYCNF.E ファイルを作成する必要があります。 これは、今からビルドする EPM の様々な機能の有効/無効を記述するファイルで、このソースファイルが無いままビルドすると、一部の機能が使えない EPM が出来上がってしまいます。しかし、デフォルトの EPM.EXE をビルドするための MYCNF.E ファイルは、アーカイブに含まれていません。
 とりあえず、よく似た出来映えになるファイルを用意してみましたので、面倒臭い方は、そのままダウンロードして、他のソースファイルと同じディレクトリにコピーして下さい。

MYCNF.E(3KByte)

 次に、いよいよ対象ファイルの設定をカスタマイズします。
 対象ファイルは LOAD.E ファイル。このファイルの最後の方に、各ファイルタイプ毎に読み込む EPMKWDS.* ファイルを定義している個所があります。

=== 該当個所 ===
compile if MAKE_KEYWORD_HIGHLIGHTING and EPM32
   if (upcase(rightstr(.filename,8))='MAKEFILE' | load_ext='MAK') & .visible then
      'toggle_parse 1 epmkwds.mak'
   endif
compile endif
===
 これのすぐ後ろに、自分が所望するファイルタイプ(拡張子)と、読み込む EPMKWDS.* ファイルを追記してやれば良いのです。
=== 例 ===
   if load_ext='ASM' & .visible then
      'toggle_parse 1 epmkwds.asm'
   endif

   if load_ext='AWK' & .visible then
      'toggle_parse 1 epmkwds.awk'
   endif

   if upcase(leftstr(substr(.filename,lastpos('\',.filename)+1),7))="CONFIG." & .visible then
      'toggle_parse 1 config.epmkwds'
   endif
===
 上記の例では、拡張子が *.ASM のファイル、*.AWK のファイル、 そしてファイル名が CONFIG.* のファイルに対して、 それぞれ EPMKWDS.ASMEPMKWDS.AWKCONFIG.EPMKWDS を 読み込んで色付けを行うよう定義しています。
(最後のはちょっと流儀に反するやり方ですが、まぁこんな事もできますよって例という事で^^;)

 ソースの修正が終わったら、ビルド(実行バイナリの作成)を行います。
 コマンドプロンプトを開き、ソースファイルが存在するディレクトリで ETPM.EXE EPM.E と入力して下さい。
 エラーメッセージが出力されず、新しい EPM.EX ファイルが作られれば、終了です。


■サンプルファイル

REXXスクリプト及びバッチファイル用:EPMKWDS.CMD(5KByte)
メークファイル用:EPMKWDS.MAK(1KByte)
CONFIG.SYS用:CONFIG.EPMKWDS(1KByte)

戻る