English help on website



秀丸エディタ管理(タブ編)(Ver9.24対応版)
目次− 秀丸エディタ管理(タブ編)
タブモードのときは、下記の文などを使うことができます。

settabmode    タブモード(ウィンドウ一覧のタブ)切り替え(文)

tabmode    タブモードの状態(値)

settabgroup    タブを分離/移動(文)

tabgroup    グループID(値)

tabgrouporder    グループの順番(値)

settaborder    タブの順番変更(文)

taborder    タブの順番(値)

tabtotal    グループ内のタブの個数(値)

tabgrouptotal    グループの個数(値)

gettabhandle    各グループ・各タブのウィンドウハンドルの取得(関数)

getcurrenttab    各グループの選択されているタブの取得(関数)

これらは、tabmodeキーワードで、タブモードであるかどうかを判断してから使ってください。
tabmodeでないときに使うと期待される動作をしません。

参照:秀丸エディタ管理
使い方の例(グループをループするには)
#i = 0;
while( #i < tabgrouptotal ) {
    #handle = getcurrenttab( true, #i );//または #handle = gettabhandle( true, #i, 0 );
        :
    //#handleを使った処理
        :
    #i = #i + 1;
}

使い方の例(グループ内のタブをループするには)
#i = 0;
while( #i < tabtotal ) {
    #handle = gettabhandle( true, 0, #i );
        :
    //#handleを使った処理
        :
    #i = #i + 1;
}

使い方の例(全てループ(グループ順・タブ順に))
settabgroupなどを使うとグループの順番が崩れるのでこのループは使えないので注意してください。
#i = 0;
while( #i < tabgrouptotal ) {
    #grouptop = gettabhandle( true, #i, 0 );
    #j = 0;
    while( #j < tabtotal[#grouptop] ) {
        #handle = gettabhandle( true, #i, #j );
            :
       //#handleを使った処理
           :
       #j = #j + 1;
    }
    #i = #i + 1;
}

使い方の例(次のグループ・前のグループの取得)
//次のグループ
#next = getcurrenttab( true, 1 );
//または #next = gettabhandle( true, 1, 0 );

//前のグループ
#prev = getcurrenttab( true, tabgrouptotal -1 );
//または #prev = gettabhandle( true, tabgrouptotal -1, 0 );

使い方の例(次のタブ・前のタブの取得)
//次のタブ
#nTabOrder = taborder[getcurrenttab( true, 0 )] + 1;
if( #nTabOrder >= tabtotal ) #nTabOrder = 0;
#next = gettabhandle( true, 0, #nTabOrder );

//前のタブ
#nTabOrder = taborder[getcurrenttab( true, 0 )] - 1;
if( #nTabOrder < 0 ) #nTabOrder = tabtotal - 1;
#prev = gettabhandle( true, 0, #nTabOrder );

使い方の例(グループID←→ウィンドウハンドル 変換)
//グループID→ウィンドウハンドル
#handle = getcurrenttab( false, #nGroupID );

//ウィンドウハンドル→グループID
#nGroupID = tabgroup[#handle]

使い方の例(グループ順番←→ウィンドウハンドル 変換)
//グループ順番→ウィンドウハンドル
#handle = getcurrenttab( true, #nGroupOrder );

//ウィンドウハンドル→グループ順番
#nGroupOrder = tabgrouporder[#handle]

使い方の例(グループ順番←→グループID 変換)
//グループ順番→グループID
#handle = getcurrenttab( true, #nGroupOrder );
#nGroupID = tabgroup[#handle]

//グループID→グループ順番
#handle = getcurrenttab( false, #nGroupID );
#nGroupOrder = tabgrouporder[#handle]


以下のコマンドに相当する文は公開されていません。
「このタブ以外を閉じる」
「左のタブを全て閉じる」
「右のタブを全て閉じる」

秀丸エディタのマクロはアクティブを切り替えても実行が継続されるという性質上、closehidemaruでは更新されていると失敗するようになっています。
またはclosehidemaruforcedでは更新を無視して終了するようになっています。
他のタブを閉じるコマンドが使えたとしても、もし更新されたものがあって保存の問い合わせが出たりすると、その最中にもマクロは続行されることになり、都合が悪いことになってしまいます。
各タブをループして処理するようなマクロで、更新されているときはどうするかなどを書く必要があります。

例えば他のタブをすべて閉じるような場合は以下のような感じになります。
(以下の例では更新されている場合はメッセージが出るだけにしています)

#i = tabtotal - 1;
while( #i >= 0 ) {
  #handle = gettabhandle( true, 0, #i );
  if( #handle == hidemaruhandle(0) ) {
    //自分自身
  } else {
    if( updated[#handle] ) {
      message filename2[#handle] + "更新されています。";
    } else {
      closehidemaru #handle;
    }
  }
  #i = #i - 1;
}