searchdown 時の、検索バッファの挙動につNo.07844
yamashita さん 15/11/17 19:41
 
お世話になっております。

「秀丸が画面からはみ出る」の件ではお世話になりました。

今回はマクロ関連の検索の仕様で質問があります。

windows 7 SP1、秀丸は 8.54 です。

searchdown "hoge";
endmacro;

みたいなマクロを作って実行します。

その後、[検索] メニューの [検索] で、検索ダイアログを出し、
一番上の検索文字列の入力欄のドロップダウンリストを見ると、
先ほどの検索文字列 hoge が入っていないようです。

こういう仕様でしたっけ?

マクロヘルプ setsearch 付近を読むと、デフォルトでは
hoge がドロップダウンリストに入るようにも読めます。

setcompatiblemode 0x20000;
付近も読みました。

ある状況で、マクロ中で searchdown/searchup した文字列を
後で検索ダイアログで選びたいのです。

[ ]
RE:07844 searchdown 時の、検索バッファNo.07852
秀丸担当 さん 15/11/18 17:06
 

searchdownやsetsearchで設定された検索文字列は、検索ダイアログの検索文字
列のヒストリに入るようにはなっていないです。

検索文字列のヒストリを明示的に操作するには、getsearchhistとsetsearchhist
があります。
一番上に挿入するとしたら1つずつずらしていくのが面倒かもしれないですが、
これによって自由にヒストリが操作できます。


または、ヒストリではなく参考までの情報としてですが、検索ダイアログの検索
文字列のヒストリの一番下には、「検索文字列の強調」されている文字列が入る
ようになっています。

searchdown "hoge",hilight;

とすると、hogeが強調され、その状態で検索ダイアログを開くとヒストリの一番
下にhogeが入ります。

[ ]
RE:07852 searchdown 時の、検索バッファNo.07853
yamashita さん 15/11/18 19:08
 
> (略)ヒストリに入るようにはなっていないです。

そうなんですね。了解です。

getsearchhist, setsearchhist で行けそうです。

今回は、
setsearchhist 0, $keyword;
で誤魔化しました。ヒストリ一番上に上書きですが、たいていはこれで足ります。
必要を感じたら「1つずつずらす」版に変えます。

「hilight」は、一番下なので、便利にならないのでした。


ちなみに、なぜヒストリに入れたいかというのをご参考までにご説明しますと、

 カレント行から取得した文字列 $ss を元にして、
  "("
 + "hoge ?" + $ss + "[^0-9\.]"
 + "|hoge-" + $ss
 + "|^" + $ss
 + ")"
 みたいな、長めの正規表現の検索文字列を作り、これを検索し、
 カーソル位置を変更するなど別の作業をした後で
 「さっきの文字列でもう一回検索したい」
 と思った時には、ヒストリから探すのが一番速そう

という事情です。

お世話様でした。

[ ]