環境設定: 構文カラー強調表示

 ここでは、編集テキスト内の構文要素のカラー強調表示に関する設定を行ないます。 なお、この関連の説明は、「構文カラー強調表示」の 章にあります。
●「構文カラー強調表示」チェックボックス
 このチェックボックスの ON/OFF で、構文カラー強調表示を行なうか否かを指定します。 構文カラー強調表示の設定を行なうには、これを ON にしておく必要があります。 これが OFF の場合、この設定は一時的に不能になります。但し、その各設定内容が 消えるわけではありません。
●「題目」入力ボックス
 ここには、構文カラー強調表示の題目、あるいは、テーマ、概要などを、設定します。 これは、単にコメント的な役割があるだけで、強調表示の規定に影響するものではありません。
●「コピー」ボタン
 他の環境の「構文カラー強調表示」データを、本環境へコピーする時に、 このボタンを押します。すると、コピー元の環境を選択するための ダイアログボックスが表示されます。ここで、その環境を選ぶと、 そのコピーが行なわれます。
 なお、「構文カラー強調表示」データが何も設定されていない環境からの コピーは、現設定データの全クリアに使えます。
●「一致分類」ツリービュー
 ここには、構文要素の各パターン名の一覧が表示されます。 「構文カラー強調表示」で述べたように、 構文要素の各パターンは、コンテキスト外で7個、コンテキスト(1)〜(3) 内で 各8個ずつ、指定できます。

 このツリービューは、あらかじめこのような構成に対応した構造になっています。 この中には、まず、コンテキスト外の7項目があります。 これらの名前は、デフォールトでは「(未設定)」になります。 次に、コンテキスト(1)〜(3) の上位ノードがあります。 これらの名前は、デフォールトでは「 区間1 」〜「 区間3 」になります。 その各ノードの階層下には、それぞれ8項目があります。 このうち、最初の3個は、「【開始】」,「【終了】」,「【不特定部】」という 名前になっています。これらの名前は、変更できません。 残りの5個の名前は、デフォールトでは「(未設定)」になります。

 このツリービューの構造は、変更できませんが、各項目の名前は、先程断った項目を 除いて、変更できます。この名前は、通常、その構文要素のパターン名にしますが、 これは、単にコメント的なもので、そのパターンの中身を規定するものではありません。 この名前の変更の仕方は、後で述べます。

 このツリービュー内では、どれか1項目(ノード)だけが選択状態になります。 選択項目は、マウスのクリック等で任意に変更できます。 選択されている項目は、それに設定されている内容が、次の各ボックスに表示されます。 これらの表示内容は、この選択項目を変えると、それに応じて変わります。 これらの内容を変えると、現選択項目の設定内容に反映されます。 なお、これらの表示内容は、コンテキスト(1)〜(3) の上位ノードが選択されている時には、 無効です。

 各コンテキストの階層下の最初の3項目は、次の内容を規定します。
【開始】そのコンテキストの開始パターンを規定します。
【終了】そのコンテキストの終了パターンを規定します。
【不特定部】そのコンテキスト内で、 どのパターンにも一致しないテキスト部の「表示属性」を規定します。この項目が 選択されている時、「一致パターン」の入力ボックスと「一致条件」の 各チェックボックスの設定は、無効になります。
上位ノードの操作
 このツリービュー内のコンテキスト(1)〜(3) の上位ノードを、マウスで右クリックすると、 その項目を操作するためのコンテキストメニューが表示されます。 このメニュー内には、次の項目があります。
・この区間の名前変更
 この項目の名前を変更する状態にします。
・この区間を未設定化
 この項目とその階層下の全項目の設定内容をクリアします。
・この区間を上へ移動
 この項目を1段上にシフトします。その際、 この階層下の全項目も一緒に移動します。
・この区間を下へ移動
 この項目を1段下にシフトします。その際、 この階層下の全項目も一緒に移動します。

下位ノードの操作
 このツリービュー内の下位ノード、つまり、上位ノード以外の終端ノードを、 右クリックすると、その項目を操作するためのコンテキストメニューが表示されます。 このメニュー内には、次の項目があります。
・名前変更
 この項目の名前を変更する状態にします。
・削除
 この項目を削除します。これによって、その階層内で、 それ以降の各項目が1段上にシフトし、最後に新規項目が追加されます。
・未設定化
 この項目の設定内容をクリアします。
・新規挿入
 この項目の位置に新規項目を挿入します。これによって、 その階層内で、それ以降の各項目が1段下にシフトし、最後の項目が破棄されます。
・設定内容を一時保存
 この項目の設定内容(一致パターン、一致条件、表示属性)を、 一時保存します。この内容は、下記の2つのメニュー項目の実行時に参照されます。
・一時保存内容を設定
 一時保存された内容(上記参照)を、この項目に設定します。
・表示属性のみを設定
 一時保存された内容(上記参照)のうち、表示属性のみを、 この項目に設定します。
・優先度を1つ上げる
 この項目を、同階層内で1段上にシフトします。これによって、 一致パターンの優先順位が1つ上がります。
・優先度を1つ下げる
 この項目を、同階層内で1段下にシフトします。これによって、 一致パターンの優先順位が1つ下がります。
・最高の優先度に
 この項目を、同階層内で最上位にシフトします。これによって、 一致パターンの優先順位が最高になります。
・最低の優先度に
 この項目を、同階層内で最下位にシフトします。これによって、 一致パターンの優先順位が最低になります。

項目の名前変更
 このツリービュー内の項目の名前を変更するには、上記のコンテキストメニューから でなくても、次のようにして行なうこともできます。 まず、その項目をマウスの左クリックで選択してハイライト状態にします。 次に、ダブルクリックにならないように少し時間をあけて、 その項目をもう1度左クリックします。すると、この項目名の表示部分が 文字列入力ボックスに変わって、その中にキャレットが現れます。この状態で、 その項目の名前が入力できます。この名前の入力が終ると、Enter キーを押します。 あるいは、他の項目を選択するなどして、ハイライト状態を他の項目へ移します。 なお、この名前の入力を中断するには、ESC キーを押します。
●「一致パターン」入力ボックス
 ここには、「一致分類」ツリービュー内の現選択項目の パターンを規定する文字列を入力します。このパターンがどのような条件で一致する のかは、「一致条件」の各チェックボックスで指定する必要が あります。また、編集テキスト内で、このパターンに一致する部分を、どのように表示する のかは、「表示属性」の各チェックボックスや色選択ボタンで 指定します。

 このパターンは、正規表現で規定できますが、この正規表現の仕様は、通常の検索等で 使う正規表現の仕様とは異なります。この詳細は、「正規表現の詳細仕様(DFAエンジン)」で説明しています。

 「一致分類」ツリービュー内の現選択項目のパターンは、この入力ボックス内が 空の場合に、未設定と判断され、空でない場合に、設定済みと判断されます。 現選択項目の名前が付けられていない場合、この未設定/設定済みの判断に応じて、 この名前は、それぞれ自動的に「(未設定)」と「(無題)」になります。
●一致条件
 「一致パターン」入力ボックス内のパターン規定文字列の 一致条件を、ここの各チェックボックスで指定します。
・正規表現
 パターン規定文字列が、正規表現なのか、それとも、通常の文字列なのかを、 このチェックボックスの ON/OFF で指定します。
・最小一致
 パターン規定文字列の正規表現が一致する部分が複数ある場合、その長さが 最小になる部分(最小一致部)を選ぶのか、または、最大になる部分 (最大一致部)を選ぶのかを、このチェックボックスの ON/OFF で指定します。
 例えば、AB+ という正規表現を、ABBBBB という文字列と照合する場合、 この最小一致の指定が ON だと、最初の AB の部分に一致しますが、 この指定が OFF、つまり、最大一致だと、その全部分に一致します。
 なお、この関連の注意事項等は、「補足説明(2)」に 書いています。
・英字大小同一視
 パターン照合の際に、英字の大文字と小文字を同一視するのか、それとも、 区別するのかを、このチェックボックスの ON/OFF で指定します。
・単語の先頭
 パターン規定文字列に一致する部分の先頭が、単語の先頭であることが必須か否かを、 このチェックボックスの ON/OFF で指定します。
・単語の末尾
 パターン規定文字列に一致する部分の末尾が、単語の末尾であることが必須か否かを、 このチェックボックスの ON/OFF で指定します。
・行頭
 パターン規定文字列に一致する部分の先頭が、行頭であることが必須か否かを、 このチェックボックスの ON/OFF で指定します。
・行末
 パターン規定文字列に一致する部分の末尾が、行末であることが必須か否かを、 このチェックボックスの ON/OFF で指定します。
●表示属性
 「一致分類」ツリービュー内の現選択項目のパターンが 一致する部分を、画面上でどのように表示するのかを、ここの各チェックボックスと 色選択ボタンで指定します。
・文字色
 その一致部の文字色を、この「色選択ボタン」で指定された色にするか否かを、 このチェックボックスの ON/OFF で指定します。
・背景色
 その一致部の背景色を、この「色選択ボタン」で指定された色にするか否かを、 このチェックボックスの ON/OFF で指定します。
・太字
 その一致部の文字を太字にするか否かを、 このチェックボックスの ON/OFF で指定します。
・下線
 その一致部の文字に下線を付けるか否かを、 このチェックボックスの ON/OFF で指定します。
●「複行」ボタン
 「一致パターン」入力ボックスで入力する文字列が、非常に長い場合、例えば、 多数のキーワードを入力する場合、この入力ボックスでは不便です。そのような 場合には、この「複行」ボタンを押します。すると、「一致パターン」を 複数行で入力できるダイアログボックスが表示されます。ここでは、入力文字列内の 任意の位置で改行できるので、長い文字列の入力には非常に便利です。 しかし、通常、改行コードは、パターン規定文字列内には含めないので、 「一致パターン」入力ボックスとどのようにやり取りするかが問題です。 そのため、このダイアログボックスで編集する文字列内の改行コードの扱い方が、 次の中から選べるようになっています。
・無効文字に変換(空文字に解釈)
 改行コードを NULL コードに変換します。このコードは、パターン規定文字列内 にあっても、読み飛ばされます。一方、このダイアログボックスで編集される 時には、再度改行コードに変換されます。なお、このコードは、「一致パターン」 入力ボックス内では、対象外なので、・ で表示されます。
・正規表現のメタ文字 | に変換
 複数のキーワードを正規表現で規定する場合、各キーワードを、メタ文字の | で 区切りますが、キーワードの数が多いと、その文字列は非常に長くなります。 そのような文字列を編集する場合、改行コードを | に変換するようにしておくと、 このダイアログボックスでは、各キーワードを各1行ごとに書くことができます。 つまり、| の文字を入力する代わりに、改行することになります。 なお、このダイアログボックスで入力した改行コードは、「一致パターン」 入力ボックス内では、| で表示されますが、再度このダイアログボックスで 編集する時には、改行コードに変換されます。
・除去する
 この場合、このダイアログボックスで入力した改行コードは、除去されて、 「一致パターン」入力ボックス内には入りません。その文字列を再度 このダイアログボックスで編集する際には、その改行コードのない文字列が 対象になります。
・そのまま
 この場合、このダイアログボックスで入力した改行コードは、そのまま、 「一致パターン」入力ボックス内には入ります。この入力ボックス内では、 改行コードは、対象外なので、・・ で表示されます。

≪補足説明≫
(1)一致パターンの優先順位について
 コンテキスト外の7パターンと、コンテキスト(1)〜(3)の【開始】パターンのうち、 2つ以上のパターンに一致する場合、「一致分類」ツリービュー内で上段にある方が 優先されます。
 各コンテキスト内で、【開始】と【不特定部】以外の6パターンのうち、2つ以上の パターンに一致する場合、同様に、「一致分類」ツリービュー内で上段にある方が 優先されます。
 なお、本来は、2つ以上に一致しないように、各パターンを規定します。
(2)最大一致と最小一致について

 最大一致にする場合は、注意が必要です。例えば、HTMLのタグのように、 < と > で囲まれた部分と一致するパターンを規定する場合、 最大一致で単に、<.*> とすると、これは、 タグが複数あるテキストでは、1つのタグに一致するのではなく、 最初のタグの < から、最後のタグの > までに一致してしまいます。 最大一致で、1つのタグだけに一致させるには、<[^>]*> とする必要があります。 一方、最小一致では、<.*> は、1つのタグだけに一致します。但し、 これでは、タグ内に改行があるパターンとは一致しないので、厳密には、 <(.|\n)*> とする必要があります。

 最小一致の方が便利な場合があります。例えば、/* ・・・ */ のコメント部に 一致するパターンを規定する場合、最小一致では、/\*(.|\n)*\*/ でできますが、 最大一致では、かなり複雑にしないとできません。

 パターン規定文字列が正規表現でない場合や、正規表現でもメタ文字の + * ? を 使わない場合は、最大一致でも最小一致でも結果は同じになります。