|
秀丸担当さん、こんにちは。 IKKI です。
検索文字列の強調について、そろそろ再考の時期がきましたでしょうか。
あれからユーザー有志で議論を重ね、ひとつの仕様案をまとめました。ここに提案さ
せていただきます。
参加した人は Iranoan さん、あべのりさん、カモノハシさん、 IKKI です。
他の皆さんの意見も伺いつつ v5.00 正式版公開前にもう一度時間をかけてご検討い
ただければと思います。
本文には結論だけ書きました。どうしてこの結論が導かれたかなど、わかりにくい点
がありましたらお尋ねください。
議論の過程は下記 URL で公開されています。
http://hpcgi2.nifty.com/masema/bbs2/wforum.cgi
場所を提供してくださったませまさんに感謝します。
■用語の定義
・「強調」という語はすべて「検索文字列の強調」によるものを指す。一般の強調表
示には触れない。
・画面上で(一時的に)強調表示されているかどうかを「強調状態」と呼ぶ
・強調状態を ON にしたとき強調表示される文字列を「強調文字列」と呼ぶ
・強調文字列、強調文字列の検索オプション、強調状態を合わせて「強調バッファ」
と呼ぶ
・検索ダイアログのチェック状態と秀丸内部の検索オプションは常に一致しているも
のとする。これを「検索オプション」と呼ぶ
・検索文字列、検索オプションを合わせて「検索バッファ」と呼ぶ
・検索オプションのビット 11, 12 を「強調フラグ」と呼ぶ
・強調文字列を「更新する」とは、強調文字列を検索文字列に一致させることを言う。
・コマンド [上検索] [下検索] [上置換] [下置換] を代表して [下検索] と呼ぶ
・コマンド [上候補] [下候補] を代表して [下候補] と呼ぶ
・マクロ文 searchup(2), searchdown(2), replaceup, replacedown を代表して sea
rchdown と呼ぶ
・マクロ文 findup(2), finddown(2) を代表して finddown と呼ぶ
■前提条件
・一元化はしない
・検索バッファと強調バッファは別物
・強調バッファはウィンドウごとに保持
■要件
・既存のマクロを実行たとき、強調バッファは変化しないでほしい
・既存のマクロ文は強調文字列に影響を与えない
・既存のマクロ文は強調状態に影響を与えない
・[下候補] を実行したら強調バッファは更新されてほしい
■提案する動作
強調文字列 強調状態 再描画
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ダイアログ 下検索 検索文字列を強調=ON ● ▲ ●
マクロ searchdown "〜", hilight; ● ▲ ●
───────────────────────────────────
ダイアログ 下検索 検索文字列を強調=OFF ● ▼ ●
マクロ searchdown "〜", nohilight; ● ▼ ●
───────────────────────────────────
マクロ searchdown "〜"; ― ― ―
───────────────────────────────────
コマンド 下候補 ● ◆ ●
マクロ finddown; ※ ※ ※
───────────────────────────────────
マクロ setsearch "〜", 0xnnn; ― ― ―
───────────────────────────────────
コマンド 検索文字列の取得 ― ― ―
マクロ getsearch; ― ― ―
───────────────────────────────────
コマンド 検索文字列の強調 ON ● ▲ ●
マクロ hilightfound 1; ● ▲ ●
───────────────────────────────────
コマンド 検索文字列の強調 OFF ● ▼ ●
マクロ hilightfound 0; ● ▼ ●
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
凡例
●:更新する
―:更新しない
▲:ON にする
▼:OFF にする
◆:強調フラグが立ってれば ON、立ってなければ OFF
※:後述
■提案のポイント
・検索オプションのビット13は廃止(別途説明します)
・searchdown は hilight, nohilight オプションを付けたときだけ強調バッファを
更新する
・[下検索], [下候補] は強調バッファを更新する
・強調フラグが ON ならば強調状態を ON にする
・強調フラグが OFF ならば強調状態を OFF にする
・いずれにせよ強調文字列を検索文字列と一致させる
・finddown については後述
・setsearch, getsearch, [検索文字列の取得] は強調バッファを更新しない
・hilightfound, [検索文字列の強調] は強調バッファを更新する
■finddown について
既存のマクロで finddown が実行された場合、強調バッファは変化しないでほしいで
す。一方、今後作られるマクロでは強調バッファを更新するかどうか選べるとよいで
しょう。そのためには、強調を「ON にする」「OFF にする」「そのまま」という3つ
の状態を指定できなければなりません。
searchdown は hilight, nohilight, オプションなし、で3つの状態を指定できます
が、 finddown はオプションを持たないため、このままでは情報量が不足します。不
足する情報を与える方法を4つ考えました。
なお、いずれにしても [下候補] と finddown の動作は異なるものになります。
▼方法1 検索オプションにビットを追加
ビット13の意味を変えて、「強調バッファを更新するかどうか」を表す。
setsearch "〜", 0x0000; finddown; // そのまま
setsearch "〜", 0x3800; finddown; // ON にする
setsearch "〜", 0x3000; finddown; // OFF にする
▼方法2 [下候補] に対応する文を新設
[下候補] と同じ動作をする新しい文(たとえば finddown3)を作る。
[キー操作の記録] では finddown3 を記録する。
finddown; // そのまま
finddown3; // 更新する
▼方法3 finddown にオプションを新設
強調バッファを更新したいときは searchdown と同様のオプションを使う。
finddown; // そのまま
finddown hilight; // ON にする
finddown nohilight; // OFF にする
▼方法4 hilightfound 文を併用
強調バッファを更新したいときは finddown の後に hilightfound を使う。
[キー操作の記録] では [下候補] は次のように記録する。
finddown;
hilightfound (searchoption & 0x1800 > 0);
■β23との違い
提案した動作とβ23の動作との違いについては別途説明します。
|
|