■ 検索での各種動作


●検索成功時の動作

 検索を実行して成功すると、その検索文字列が見つかった位置に、カーソルが移動します。 その時のカーソルの画面内の相対位置は、環境設定の「検索/ジャンプ」→「検索条件」内の「検索位置へジャンプした時のカーソルの画面内の位置」で指定できるようになっています。 ちなみに、初期環境では、カーソルが現画面外に出た時のみ、「中央行」になります。

●検索失敗時の対応

 検索に失敗した時には、それを示すメッセージと、再検索を行なうためのダイアログボックスが 表示されます。但し、上記の環境設定で、「検索失敗時、メッセージを表示しない」を ON に 設定しておくと、表示されません。なお、検索失敗時にビープ音が鳴ることはありません。 また、鳴らすように環境設定することもできません。

 このダイアログボックスからは、次のボタンを使って、再検索が即時に行なえるように なっています。

1. 検索条件を変更

 このボタンを押すと、検索ダイアログボックスが 表示されます。ここで、検索範囲や条件を変更して、再度検索を行なうことができます。

2. 逆方向に検索

 このボタンを押すと、前とは逆の方向へ検索を行ないます。方向以外の 検索条件は前と同じです。

3. 現テキストの先頭/末尾に戻って検索

 このボタンを押すと、順方向にテキストの末尾まで検索して見つから なかった場合に、テキストの先頭に戻って再度検索します。また、逆方向にテキストの 先頭まで検索して見つからなかった場合には、テキストの末尾に戻って再度検索します。 いずれの場合も、検索条件は前と同じです。

4. 編集中の次/前のテキストを検索

 現テキスト以外の他の編集テキストに対して、同条件で再度検索を 行なう時に、このボタンを押します。その際、順行検索では、次のテキストから、 逆行検索では、前のテキストからになります。

5. プロジェクト内の次/前のテキストを検索

 今回の検索失敗が、プロジェクト内のノードテキストだった場合、 他のノードテキストに対して、同条件で再度検索を行なう時に、このボタンを押します。 その際、順行検索では、次のノードテキストから、逆行検索では、前のノードテキスト からになります。


●正規表現の文法エラー表示

 検索/置換/Grep の各ダイアログボックスから検索を開始した時、その検索文字列の 正規表現に文法エラーがあると、その具体的な内容を示すダイアログボックスが表示されます。 ここで、
 「修正」ボタンを押すと、「検索文字列」を修正する状態に戻ります。
 「無視」ボタンを押すと、文法エラーを無視して、検索を開始します。


●検索進行度表示

 正規表現を使って検索する時、その検索パターンによっては、 膨大な時間がかかる場合があります。とりあえず、実用上、そのような場合は稀ですが、 本エディタでは、検索に所定の時間(現状、0.5 秒)以上かかる時には、 検索の進行度を示すダイアログボックスが表示されるようになっています。 そこには、「中断」ボタンがあるので、それを押せば、いつでも、検索は即時中断できます。


●正規表現の検索エンジンについて

 一般に、正規表現の検索エンジンには、次の2種類の方式があります。

 NFA方式では、便利な機能をいろいろ盛り込めますが、検索速度が遅いのが欠点です。 前述のように膨大な時間がかかる場合もたまにあります。一方、DFA方式では、 機能的に限定されますが、検索速度は、NFA方式よりも遥に高速です。 例えば、A|B|C のような分岐パターンでも、後戻りなしに同時進行的に検索されます。

 本エディタでは、機能性を重視して、ほとんどの検索では、NFA方式を採用しています。 但し、「構文カラー強調表示」では、 速度が非常に重要なので、その検索だけは、DFA方式を採用しています。 なお、いずれの場合も、その検索エンジンは、借用品ではなく、独自に開発したものです。


●検索での着色とその解除

 本エディタでは、編集テキスト内で、検索文字列に一致する全箇所を、着色することが できます。この操作は、「検索ダイアログボックス」から 行ないます。

 その際、着色形態(文字色、背景色、太字/下線の状態)を任意に選べます。 また、以前の着色を残すか、または、一掃するかも選べます。

 検索文字列に、正規表現を使えば、 改行コードを含む複数行の着色も可能です。 また、正規表現の「一致パターン識別値」で、 着色形態を選ぶこともできます。例えば、
  ABC#1|XYZ#2
という正規表現では、ABC に一致した部分は、着色番号1の着色形態で着色され、 XYZ に一致した部分は、着色番号2の着色形態で着色されます。

 着色形態は、予め設定されている 24 種類の中から任意に選べます。 この着色形態は、「着色指定」で任意に 変更できます。

 検索での着色は、選択範囲の着色化 と、 結果的には、同様になります。そのため、例えば、着色部分を編集して、 それが検索文字列と不一致になっても、その着色が解除されるわけではありません。 また、検索文字列に一致する文字列を挿入しても、その部分が即時に着色される わけではありません。

 検索での着色を解除を実行すると、検索での着色を 解除することができます。この機能は、初期環境では、メインメニューの「検索」内に あります。この着色解除では、現編集テキスト内で行なった検索での着色は全て、 解除されますが、選択範囲の着色や、見出し部の着色などは、解除されません。 但し、検索での着色と同じ着色番号で着色されている箇所は、解除されます。
 ちなみに、一般の「着色解除」でも、勿論、 検索での着色を解除することができます。

 現状、編集テキストの着色状態は、保存されません。 また、「元に戻す( Undo )」の対象にはなっていません。