タブグループの移動についてNo.09362
Suezo さん 17/03/09 13:49
 
いつも便利に使用させてもらっています。

タブグループの移動(ループ)がしたくてマクロを作ったのですが、
うまく動作しませんでした。

Ctrl+Tab で設定により、別のタブグループも含めてタブ移動はできましたが、期待
する動作ではありませんでした。
Atl+Tab だと別のアプリも含まれるますし。

探したけど見つからなかったのですがコマンドはないですよね?

if(tabgroup < tabgrouptotal - 1 ){
 #handle = getcurrenttab( true, tabgroup + 1 );
// #handle = gettabhandle( true, tabgroup + 1, 0 );
}
else{
 #handle = getcurrenttab( true, 0);
// #handle = gettabhandle( true, 0, 0 );
}
setactivehidemaru #handle; // アクティブにする

3つのタブグループ
秀丸1、秀丸2、秀丸3
で秀丸1から順にアクティブになった秀丸で上記マクロを実行すると

秀丸1→秀丸2→秀丸1→秀丸3

となり 秀丸3 で実行したら次に行きませんでした。
期待する動作は下記です。

秀丸1→秀丸2→秀丸3→秀丸1

以上、どうかご教授よろしくお願いします。

環境:Win7 64Bit/秀丸Ver8.71 Beta4 64Bit



[ ]
RE:09362 タブグループの移動についてNo.09363
Suezo さん 17/03/09 14:20
 
タブグループが2つなら下記で動作したので前述のマクロが
おかしいのわかりますが、変更方法がわかりません。

#handle = getcurrenttab( true, 1 );
setactivehidemaru #handle;

以上、よろしくお願いします。

[ ]
RE:09363 タブグループの移動についてNo.09364
秀丸担当 さん 17/03/09 14:47
 

以下のような感じにするといいと思います。

//次の秀丸エディタ風
#handle = getcurrenttab( true, tabgrouptotal - 1 );
setactivehidemaru #handle;
endmacro;

//前の秀丸エディタ風
#handle = getcurrenttab( true, 1 );
#hBottom = getcurrenttab( true, tabgrouptotal - 1 );
setactivehidemaru #handle, #hBottom;
endmacro;


非タブモードの「次の秀丸エディタ」「前の秀丸エディタ」は、複数のウィンド
ウの重なり順(Zオーダー)全体が一周するようになっています。

次の秀丸エディタでは、重なり順で一番下にあったものを一番上にもってきます。
秀丸A 秀丸B 秀丸C
という順番で重なっていたら、
秀丸C 秀丸A 秀丸B
というようにします。

前の秀丸エディタでは、自分自身を一番下にして、2番目にあったものが一番上
になります。
秀丸A 秀丸B 秀丸C
という順番で重なっていたら、
秀丸B 秀丸C 秀丸A
というようにします。

それと同じような振る舞いにするのが上記マクロで、setactivehidemaruの第2
パラメータは、自分自身のZオーダーをどこにするかも同時に決めています。
ちなみに-1で一番下という指定もありますが、タブモードの場合は非タブモード
互換の仮想的な順番もあるので使えなくて、明示的に指定しています。

[ ]
RE:09364 タブグループの移動についてNo.09366
Suezo さん 17/03/09 16:08
 
期待通りの動作です。
素早い回答ありがとうございました。

[ ]