強制的に「右のタブを全て閉じる」No.10002
styth さん 22/11/15 08:33
 
 マクロのヘルプによりますと、

> 目次−秀丸エディタ管理(タブ編)
>
> 以下のコマンドに相当する文は公開されていません。
>「このタブ以外を閉じる」
>「左のタブを全て閉じる」
>「右のタブを全て閉じる」

 とのことなんですが、
 問い合わせ無しで、強制的に「右のタブを全て閉じる」をやりたいのですが、マク
ロでできますか?
 よろしくお願いいたします。

[ ]
RE:10002 強制的に「右のタブを全て閉じるNo.10003
秀丸担当 さん 22/11/15 12:12
 
マクロの文になっていないコマンドは、サポート対象外ではありますが、最近あった
例のようにsendmessageを使う方法があります。
ツールバー詳細から定義ファイルのサンプルを出すと番号を知ることができます。
#a=sendmessage(hidemaruhandle(0),0x111,363,0);
ですが右のタブを全て閉じるコマンドは、問い合わせはあります。

問い合わせなしで閉じるとしたら、自分自身はquit、他の秀丸エディタはclosehidem
aruforcedになります。
タブのウィンドウハンドルを1つずつ調べて、closehidemaruforcedをするとできます。
例:

#c=tabtotal;
while(#i<#c){
  if(#i>taborder){
    closehidemaruforced gettabhandle(1,0,#i);
    #c=#c-1;
    if(tabtotal!=#c){
        //減っていない
        break;
    }
    continue;
  }
  #i=#i+1;
}
endmacro;

[ ]
RE:10003 強制的に「右のタブを全て閉じるNo.10004
styth さん 22/11/16 08:47
 
 ありがとうございます。出来ました。

 ところで、今回の件でgettabhandleの使い方を知ることが出来ました。
 ヘルプでは、
>gettabhandle関数は、タブモードの各タブのウィンドウハンドルを取得します。(V
>5.00以降)
>パラメータ3(数値型)
>グループ内のタブの順番を指定します
 とのことなんですが、この辺に

 グループ内のタブの順番は、一番左が0で、順に右へ1,2,3…

 等の説明を追記して頂けると幸いです。よろしくお願いいたします。

(追伸)
https://www.maruo.co.jp/hidesoft/4/x09975_.html#9985
 へ、お時間がある時にコメントを頂けると幸いです。

[ ]
RE:10004 強制的に「右のタブを全て閉じるNo.10008
秀丸担当 さん 22/11/16 13:05
 
グループ内のタブの順番は、一番左を0として数えた番号でした。
ヘルプに書いておきます。

[ ]
RE:10003 gettitle(3,#handle)についてNo.10010
styth さん 22/11/18 09:53
 
 閉じられるタブのタブ名を確認しようと思い、以下のようにmessage文を追加しま
した。
 str(gettabhandle(1,0,#i))は変っているんですが、
 gettitle(3,gettabhandle(1,0,#i))が同じ事があります。

 御確認お願い致します。
 gettitle(3,gettabhandle(1,0,#i))の使い方が違っていたら、ご指摘下さい。

>#c=tabtotal;
>while(#i<#c){
    message "i=" + str(#i) + " " + gettitle(3,gettabhandle(1,0,#i)) + " han=
" + str(gettabhandle(1,0,#i)); //3=タブモードのタブ名
>  if(#i>taborder){
>    closehidemaruforced gettabhandle(1,0,#i);
>    #c=#c-1;
>    if(tabtotal!=#c){
>        //減っていない
>        break;
>    }
>    continue;
>  }
>  #i=#i+1;
>}
>endmacro;

 以下のマクロを実行します。やはり、同じ現象になることがあります。
 (タブの並びを入れ替えたりすると、そうなることがあります。)
//タブの並び確認
#c=tabtotal;
while(#i<#c){
    message "i=" + str(#i) + " " + gettitle(3,gettabhandle(1,0,#i)) + " han=
" + str(gettabhandle(1,0,#i)); //3=タブモードのタブ名
    #i = #i + 1;
}

[ ]
RE:10010 gettitle(3,#handle)についてNo.10011
秀丸担当 さん 22/11/18 10:49
 
ご指摘ありがとうございます。
調べてみたところ、確かにgettitle(3,...)でタブ名がうまく取得できない場合があ
り、おかしかったです。
できるように修正させていただきます。

[ ]