全文選択しているか見分ける方法?No.29672
styth さん 11/04/08 18:28
 
if ( selecting ) {
    #selecting = selecting;
    #seltopx = seltopx;
    #seltopy = seltopy;
    #selendx = selendx;
    #selendy = selendy;
    rangeeditin;        //部分編集
}
else selectall;




 上記、マクロを実行すると、全文選択して実行した場合、部分編集でエラーに
なります。
 どう回避したら、良いんでしょうか?
 全文選択しているかどうか、見分ける方法がわかりません。
 よろしくお願いします。

[ ]
RE:29672 全文選択しているか見分ける方法No.29674
山紫水明 さん 11/04/08 21:27
 
 stythさん,

> 全文選択しているかどうか、見分ける方法がわかりません。

最後の行が改行されている場合は比較的簡単ですが,そうでない場合も考えると,
いったん選択解除して,再度選択しなおす方法しか今のところ思いつきません。
もしかしたらもっとスマートな方法があるかもしれませんが,とりあえず。

//-----------------------------------------------------------
if( selecting ) {
if( seltopx == 0 && seltopy == 0 && selendy == linecount - 1) {
if( selendx == 0 ) {
#allselect = 1;
} else {
gofileend;
if( selendx == x ) {
#allselect = 1;
}
gofiletop;
beginsel;
gofileend;
endsel;
}
}
if( #allselect == 1 ) message "全部選択";
 else message "一部選択";
}
endmacro;
//-----------------------------------------------------------

     では, (^^)/~
                                    山紫水明(ユーザー)
                                    SANSHISUIMEI

[ ]
RE:29674 全文選択しているか見分ける方法No.29676
K'zawa さん 11/04/08 22:22
 
こんにちは、K'zawaです。

これではどうですか

if ( selecting ) {
  if ( seltopx == 0 &&
       seltopy == 0 &&
       selendy == linecount - 1 &&
       gettext( selendx, selendy, selendx + 1, selendy ) == "" )message
"全選択";
  else message "部分選択";
}

[ ]
RE:29672 全文選択しているか見分ける方法No.29678
たけとり さん 11/04/08 22:45
 
>if ( selecting ) {
>    #selecting = selecting;
>    #seltopx = seltopx;
>    #seltopy = seltopy;
>    #selendx = selendx;
>    #selendy = selendy;
>    rangeeditin;        //部分編集
>}
>else selectall;
>・
>・
>・
>
> 上記、マクロを実行すると、全文選択して実行した場合、部分編集でエラーに
>なります。
> どう回避したら、良いんでしょうか?

> 全文選択しているかどうか、見分ける方法がわかりません。

外しているかも、ですが何かのお役に立てば。

・charcountを使って、秀丸全ての文字数と選択範囲の文字数を比較。

・選択範囲を取得[A]→全部選択[B]→[A]と[B]を比較して範囲が変わったか確認→
[A]の範囲を選択
# ちょっと冗長か?^^;

っていう方法を思いつきました。

[ ]
RE:29676 全文選択しているか見分ける方法No.29687
山紫水明 さん 11/04/09 09:26
 
 K'zawaさん,

 なるほど,gettext を使えば,より簡潔になりますね。

                                    山紫水明
                                    SANSHISUIMEI

[ ]
RE:29678 全文選択しているか見分ける方法No.29688
山紫水明 さん 11/04/09 09:31
 
 たけとりさん,

>・charcountを使って、秀丸全ての文字数と選択範囲の文字数を比較。
>
>・選択範囲を取得[A]→全部選択[B]→[A]と[B]を比較して範囲が変わったか確認→
>[A]の範囲を選択
># ちょっと冗長か?^^;

charcount を使う手がありましたね。

if( selecting ) {
    if( charcount( 0 ) == charcount( 0x80000000 ) ) message "全選択";
    else message "部分選択";
} else message "非選択";
endmacro;

多分これでいける気がします。

     では, (^^)/~
                                    山紫水明
                                    SANSHISUIMEI

[ ]
RE:29688 全文選択しているか見分ける方法No.29689
styth さん 11/04/09 10:13
 
>if( selecting ) {
>    if( charcount( 0 ) == charcount( 0x80000000 ) ) message "全選択";
>    else message "部分選択";
>} else message "非選択";
>endmacro;
 うまくいきました。
 ありがとうございます。

[ ]