タグジャンプについてNo.08440
たまねぎ さん 05/06/27 20:20
 
grepの検索結果からタグジャンプしたときに、開いたファイルの
検索文字列の位置にカーソルを移動する(できれば、環境設定の
検索での表示にあわせて、点滅表示する・範囲選択する)ように
していただけないでしょうか?

上記の動作をするマクロを組んでみたのですが、grep後に別の
検索文字列でgrepしたり、他の立ち上げている秀丸で検索したり
すると、検索バッファが書き換わって、それでダメになるのです。

[ ]
RE:08440 タグジャンプについてNo.08442
たまねぎ さん 05/06/27 23:01
 
>grepの検索結果からタグジャンプしたときに、開いたファイルの
>検索文字列の位置にカーソルを移動する(できれば、環境設定の
>検索での表示にあわせて、点滅表示する・範囲選択する)ように
>していただけないでしょうか?

マクロの互換性を考えると、タグジャンプの動作を変えるのは
難しい話ですね。

マクロの内部的な値を表現するキーワードに、grepを実行した時の
状態を表す、searchbuffer,searchoptionに対応するキーワード
を追加していただけないでしょうか?
それらがあると、マクロで何とかなるのですが。
ちなみに、今使っているマクロは以下です。

tagjump;
finddown;

[ ]
RE:08442 タグジャンプについてNo.08444
アルビレオ さん 05/06/27 23:27
 
秀丸ユーザーのアルビレオです。

>マクロの内部的な値を表現するキーワードに、grepを実行した時の
>状態を表す、searchbuffer,searchoptionに対応するキーワード
>を追加していただけないでしょうか?

ちょっぴり手間は増えますが、今の秀丸での対応策としてgrepを実行した直後に
searchbufferとsearchoptionの内容をgrep出力ウィンドウの先頭行か最後の行に
挿入するマクロを実行しておき、

別のマクロで
1.現在の行位置を記憶
2.先頭行(または最後の行)に移動してsearchbufferとsearchoptionをセット
3.元の行に戻ってタグジャンプ
という動きをするというのはどうでしょうか?

試してみたところ、\nなども改行文字に展開されず\nという形のまま取り出せる
ので、うまくいきそうな気がします。

[ ]
RE:08442 タグジャンプについてNo.08445
h-tom さん 05/06/28 01:22
 

h-tom です。

>マクロの内部的な値を表現するキーワードに、grepを実行した時の
>状態を表す、searchbuffer,searchoptionに対応するキーワード
>を追加していただけないでしょうか?
ウィンドウ毎に保持している「検索文字列の強調」を利用してみた。
grepの結果が出力されている秀丸で、検索や置換を実行すると、ダメにな
るけど・・・。

//ここから
$BAK_SEARCHBUFFER  = searchbuffer;
#BAK_SEARCHOPTION  = searchoption;
#BAK_HILIGHTING    = foundhilighting;

disabledraw
if(#BAK_HILIGHTING == 0) hilightfound;
$search = "";
golinetop;
while((colorcode & 0x00010000) == 0) right;
while((colorcode & 0x00010000) == 0x00010000){
    $search = $search + char(code);
    right;
}
if(#BAK_HILIGHTING == 0) hilightfound;
enabledraw;

tagjump;
//golinetop;
searchdown2 $search;

setsearch $BAK_SEARCHBUFFER, #BAK_SEARCHOPTION;
endmacro;
//ここまで

[ ]
RE:08442 タグジャンプについてNo.08447
Iranoan さん 05/06/28 01:56
 
 たまねぎさん今日は、Iranoan です。
> マクロの内部的な値を表現するキーワードに、grepを実行した時の
> 状態を表す、searchbuffer,searchoptionに対応するキーワード
> を追加していただけないでしょうか?
 grep は検索と共有しています。現在のウィンドウにおける検索による強調
文字列とオプションを取得可能にする
http://www.maruo.co.jp/turukame/3/x07863_.html#250
に賛成ということでで如何でしょう(^^)。

[ ]
RE:08447 タグジャンプについてNo.08449
秀丸担当 さん 05/06/28 14:01
 

> マクロの内部的な値を表現するキーワードに、grepを実行した時の
> 状態を表す、searchbuffer,searchoptionに対応するキーワード
> を追加していただけないでしょうか?

現状ではできず、やるとしたらアルビレオさんの言われるようにどこかに覚えて
おく必要があるようです。
Iranoanさんの言われているように検索文字列の強調がされている検索文字列と
オプションを取得できるキーワードがあれば、できると思います。
もしそれがあれば検索文字列がウィンドウごとに独立したように見せるマクロも
作成可能だと思います。
V5.00を安定させたいと言っている間近ではありますが、検討したいと思います。

[ ]
RE:08449 タグジャンプについてNo.08454
たまねぎ さん 05/06/28 20:43
 
>Iranoanさんの言われているように検索文字列の強調がされている検索文字列と
>オプションを取得できるキーワードがあれば、できると思います。
>もしそれがあれば検索文字列がウィンドウごとに独立したように見せるマクロも
>作成可能だと思います。

V5.00β31で上記のfoundbuffer,foundoptionが追加されていたので、
結局、下記のマクロで期待していた動作となりました。
ありがとうございました。


// タグジャンプ後、検索文字列までカーソル移動

if (!foundhilighting) {
 tagjump;
 endmacro;
}

#hilight = false;
disabledraw
#bkx = x;
#bky = y;
golinetop2;
while (code != 13 && code != eof) {
 if ((colorcode & 0x00010000) == 0x00010000) {
  #hilight = true;
  break;
 }
    right;
}
moveto #bkx, #bky;
enabledraw;

$fbuffer = foundbuffer;
#foption = foundoption;

tagjump;
if (result && #hilight) {
 $sbuffer = searchbuffer;
 #soption = searchoption;
 setsearch $fbuffer, #foption;
 finddown;
 setsearch $sbuffer, #soption;
}

endmacro;

[ ]