[ 新規に投稿する ]

grep文のパラメータ指定が動作しない場合があるNo.09886
Suezo さん 19/03/12 17:32 [ コメントを投稿する ]
  いつも便利に使用させてもらっています。

マクロでgrep文を使用しているのですが、パラメーターを指定しても
動作しない場合があります。

通常のパラメータを指定した場合とsearchoptionを指定した場合の
両方で発生します。

// 現在のフォルダ/単語/サブフォルダ/単一
grep $str1, "*.cpp", ".", word, subdir, outputsingle; 
grep $str1, "*.cpp", ".", 0x10000101;     

ちなみにテスト用のマクロ全文は下記となります。

selectword2;  // カーソル位置の単語を選択
if(selecting){  // 選択されていたら
 $str1 = gettext(seltopx, seltopy, selendx, selendy, 0); // 選択範囲の文字列を取得(範囲選択は解除)
// grep $str1, "*.cpp", ".", word, subdir, outputsingle; // 現在のフォルダ/単語/サブフォルダ/単一
 grep $str1, "*.cpp", ".", 0x10000101;     // 現在のフォルダ/単語/サブフォルダ/単一
}
endmacro;

上記3つのパラメーターが全て正常に動作する場合もありますが、
単語指定が動作しない場合もあります。
マクロで成功した場合、次に通常のGrepを実行すると、
Grepダイアログのチェックボックスにチェックが入っています。(単語/サブフォルダ)
マクロで失敗(Grep自体は成功)した場合はチェックが入っていません。(単語)

失敗した場合でも、サブフォルダ/単一の指定は動作しましたので
Grepダイアログの上部のチェックボックスがうまく動作しない場合が
あるようです。

Ver8.88/Win7 64bit
秀丸は以前のバージョンから同様の動作です。

以上、確認お願いします。
[ ]
RE:09886 grep文のパラメータ指定が動作しない場合があるNo.09887
秀丸担当 さん 19/03/13 09:03 [ コメントを投稿する ]
 
バグ情報ありがとうございます。
手順通りにして再現させることができました。
outputsingleで既に出力があるところにオプションを変えて出力した場合にだめでした。
次のバージョンで修正させていただきます。
[ ]
RE:09887 grep文のパラメータ指定が動作しない場合があるNo.09893
Suezo さん 19/03/25 14:57 [ コメントを投稿する ]
  >次のバージョンで修正させていただきます。

Ver8.89β1で動作するのを確認しました。

関連して、「検索文字列の強調」(検索,grep用/V5.00以降)も
反映されていないようです。

下記のsearchoptionで動作しませんでした。
grep $str1, "*.cpp", ".", 0x10000901;

確認よろしくお願いします。
[ ]
RE:09893 grep文のパラメータ指定が動作しない場合があるNo.09894
秀丸担当 さん 19/03/25 16:38 [ コメントを投稿する ]
 
「検索文字列の強調」のフラグを変更する場合は、0x00000800(ビット11)と、さらに0x00002000(ビット13)も同時に指定する必要があります。
grep $str1, "*.cpp", ".", 0x10002901;
とするとできると思いますが、どうでしょうか。
outputsingleのときでも0x00002000をORしておくと一応できました。勘違いでしたらすみません。

setsearch等で、単語/大文字小文字/正規表現といった主要なオプションだけを指定しようとすると、検索文字列の強調がOFFとして記憶されるのを防ぐためにこのビットがあります。
searchoptionのヘルプにもわかりやすく追記しておこうと思います。
[ ]
RE:09894 grep文のパラメータ指定が動作しない場合があるNo.09895
Suezo さん 19/03/25 17:18 [ コメントを投稿する ]
  >「検索文字列の強調」のフラグを変更する場合は、0x00000800(ビット11)と、さらに0x00002000(ビット13)も同時に指定する必要があります。

これで動作しました。

>searchoptionのヘルプにもわかりやすく追記しておこうと思います。

よろしくお願いします。
[ ]

[ 新規に投稿する ]