秀丸エディタ管理(タブ編)(Ver9.35対応版)
目次−
秀丸エディタ管理(タブ編)
タブモードのときは、下記の文などを使うことができます。
これらは、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;
}
|