検索、置き換えに関するネタNo.08923
白雲斎 さん 05/12/13 16:08
 
今日は、白雲斎です。

これは、「メジャーバージョンアップ」に関するネタ(要望)です。
仕様が固まる前に言ってしまえと、思いつきで書いています。
検討に値しない内容でしたら、無視してもらって結構です。

●1. 検索をしない「検索ダイアログ」

マクロから、検索、置き換えを実行しないダイアログを操作できない
でしょうか?
機能としては、

    1)  キーワード(例えば、find3, replac3)で呼び出す
    2)  設定項目は標準と同じ内容で、OKとキャンセル・ボタンのみがある
        ダイアログを表示
    3)  OKボタンが押された場合のみ、各設定値をセットする
        ・実行はしない
        ・正規表現のコンパイルエラーを検出
        ・result を返す
    4)  マクロ製作者は、searchbuffer や searchoption などから、
        必要な値を取り出す


●2. 後方参照の外部取り出し

ダグ付き正規表現でヒットした後方参照の値を、外部に取り出せないでしょうか?

例:

123-4567

searchdown "([0-9]{3})\\-([0-9]{4})", regular;
if( result )
{
    message $\1;    //=> "123"
    message $\2;    //=> "4567"
    message $\3;    //=> ""
}


[ ]
RE:08923 検索、置き換えに関するネタNo.08924
Iranoan さん 05/12/13 17:50
 
 白雲斎さん今日は、Iranoan です。
> ●1. 検索をしない「検索ダイアログ」
 これは何のために必要なのでしょう? もし
>         ・正規表現のコンパイルエラーを検出
が目的なら、
> ダグ付き正規表現でヒットした後方参照の値を、外部に取り出せないでしょうか?
共々、通常 HmJre.dll の関数の FindRegular(), FindRegularNoCaseSense(),
GetLastMatchLength() を使えばできそうな気がします。
 確認していないので、間違っていたらm(__)m。

[ ]
RE:08924 検索、置き換えに関するネタNo.08926
白雲斎 さん 05/12/13 19:12
 
こんばんは、白雲斎です。
これは、Iranoanさんへの返信です。
秀まるお殿、秀丸担当殿に求めたり、訴えているものではないことを理解して
ください。


>> ●1. 検索をしない「検索ダイアログ」
> これは何のために必要なのでしょう? もし
>>         ・正規表現のコンパイルエラーを検出
>が目的なら、

「検索ダイアログで得られる設定情報を、検索することなく、すべて得たい」
が目的。
「正規表現のコンパイルエラーを検出」は、「resultの戻り値」にエラーを反
映して欲しい意味。

私は、情報を抽出するのに、自作マクロからGrepも含めた検索を良く利用しま
す。これらは、検索実行とは別のところで所得して、処理の方向性に則った編
集を加えた後に、実際の検索をしています。この関係から、検索オプションの
組み合わせを、menu文で問い合わせています。
検索しない検索ダイアログがあれば、数多い検索オプションも一行のマクロ文
から所得できます。


>> ダグ付き正規表現でヒットした後方参照の値を、外部に取り出せないでしょうか?
>共々、通常 HmJre.dll の関数の FindRegular(), FindRegularNoCaseSense(),
>GetLastMatchLength() を使えばできそうな気がします。
> 確認していないので、間違っていたらm(__)m。

後方参照の値を取り出せますか?

もし、この機能が実装されれば、RubyやPerlなどにある「検索のブロック拡
張」もどきのことが出来ます。(個人的には便利だと思う)

searchdown "([0-9]+).+([0-9]+)", regular;
while( result )
{
    delete;
    call FooBar val($\1), val($\2);
    insert $$return;
    finddown;
}


[ ]
RE:08926 検索、置き換えに関するネタNo.08928
アルビレオ さん 05/12/13 19:50
 
アルビレオです。

>「検索ダイアログで得られる設定情報を、検索することなく、すべて得たい」

余計なお世話とは思いますが、これではたぶん意味が伝わらないかと。

「検索ダイアログを使って、検索文字列などの"設定"だけを行いたい。ダイアロ
グから戻ったところで searchbuffer や searchoption を使ってその内容を取り
出す」
といったところでしょうか。

メニューなどから実行できると意味がわからず混乱しそうなので、マクロ専用の
ダイアログとして用意した方がよさそうですね。

[ ]
RE:08926 検索、置き換えに関するネタNo.08930
Iranoan さん 05/12/13 20:07
 
 白雲斎さん今日は、Iranoan です。
> 私は、情報を抽出するのに、自作マクロからGrepも含めた検索を良く利用しま
> す。これらは、検索実行とは別のところで所得して、処理の方向性に則った編
> 集を加えた後に、実際の検索をしています。この関係から、検索オプションの
> 組み合わせを、menu文で問い合わせています。
> 検索しない検索ダイアログがあれば、数多い検索オプションも一行のマクロ文
> から所得できます。
 find 文で出来そうな気もしますが、今一つ白雲採算の仰るイメージが解ら
ないので、これ以上のコメントは控えます。
> 後方参照の値を取り出せますか?
 出来そうです。
> searchdown "([0-9]+).+([0-9]+)", regular;
> while( result )
> {
>     delete;
>     call FooBar val($\1), val($\2);
>     insert $$return;
>     finddown;
> }
の例なら、次の要領です。
loaddll "HmJre.dll";
if( result ){
  gofiletop;
  searchdown "([0-9]+).+([0-9]+)", regular;
  while( result ){
    $s = gettext( foundtopx, foundtopy, foundendx, foundendy );
    #i = dllfunc( "FindRegular", "([0-9]+).+([0-9]+)(?\\1)", $s, 0 );
    #j = dllfunc( "GetLastMatchLength" );
    $1 = midstr( $s, #i, #j );
    #i = dllfunc( "FindRegular", "([0-9]+).+([0-9]+)(?\\2)", $s, 0 );
    #j = dllfunc( "GetLastMatchLength" );
    $2 = midstr( $s, #i, #j );
    message $1 + "\n" + $2;
    moveto foundendx, foundendy;
    finddown;
  }
}

[ ]
RE:08928 検索、置き換えに関するネタNo.08933
白雲斎 さん 05/12/13 22:15
 
こんばんは、白雲斎です。

>余計なお世話とは思いますが、これではたぶん意味が伝わらないかと。
>
>「検索ダイアログを使って、検索文字列などの"設定"だけを行いたい。ダイア

>グから戻ったところで searchbuffer や searchoption を使ってその内容を取

>出す」
>といったところでしょうか。
>
>メニューなどから実行できると意味がわからず混乱しそうなので、マクロ専用

>ダイアログとして用意した方がよさそうですね。

補足ありがとうございます。
#08923の発言で

>●1. 検索をしない「検索ダイアログ」
>
>マクロから、検索、置き換えを実行しないダイアログを操作できない
>でしょうか?

と書いたのですが、アルビレオさんの説明の方が分かりやすいですね。


[ ]
RE:08930 検索、置き換えに関するネタNo.08934
白雲斎 さん 05/12/13 22:17
 
こんばんは、白雲斎です。

> find 文で出来そうな気もしますが、今一つ白雲採算の仰るイメージが解ら
>ないので、これ以上のコメントは控えます。


#08926の発言で私の意図が理解してもらえないのなら、仕方がないです。
事細かに説明する根気がないので、私もこれ以上の発言を控えます。


>> 後方参照の値を取り出せますか?
> 出来そうです。


私の書き方が悪かったようです。
書きたいことはありますが、細かい話はすっ飛ばします。
で、私の言うところの「後方参照の外部取り出し」が実装されたら、便利だとは
思いませんか。
否定的な意見を仰るのは、便利とは思わないと言うことですかね。

----
秀まるお殿や秀丸担当殿からのアクションがないのに、ここまで話が弾むと
は・・・。一応、スレッド頭で書いた

>仕様が固まる前に言ってしまえと、思いつきで書いています。
>検討に値しない内容でしたら、無視してもらって結構です。

の発言を心に留めて欲しいです。

[ ]
RE:08934 検索、置き換えに関するネタNo.08937
秀丸担当 さん 05/12/14 11:10
 

検索しない検索ダイアログの文については、find文でも代用できるかもしれない
ので必要かどうかわかりません。あったらあったで使い道はあるとは思います。

検索後の後方参照はできたら便利になってくると思います。
Iranoanさんの書かれているように(?\1)などでできると言えばできます。
ネタとして参考にしたいと思います。

[ ]