タブグループを切り替えるコマンドの新設No.08333
fleakflap さん 05/06/21 17:12
 
 タブグループが使えるようになって、実に便利になりました!
ところが、以前にも要望があったかと存じますが、タブグループごとの秀丸(のウイ
ンドウ)を切り替えるコマンドが実装されていません。
 現行では、Windowsの切り替え機能を使っていますが、どうも不格好です。
 この度のバージョンアップではタブ機能は目玉のひとつなので、ぜひ、「次のタブ
グループ」「前のタブグループ」等の新設をお願い致します。

 ちなみに、マクロコマンドでも「nexttabgroup,prevtabgroup」(あるいは既存のn
exthidemaruでnexthidemaru tab;などの引数があった場合には「次のタブグループへ
移動」というものありかも…)が新設されると、さらに便利になりそうで、ご検討い
ただければと存じます。

[ ]
RE:08333 タブグループを切り替えるコマンNo.08347
bouz さん 05/06/21 19:41
 
こんなんでどうでしょう?
//次のタブグループ/前のタブグループ
call tabgrouptotal;
if (##return>0) {
 call nexttabgroup (tabgroup + 1) * (tabgroup < ##return); //[*1]
// call nexttabgroup (tabgroup - 1) * (tabgroup>0) + (!tabgroup)*##return; /
/[*2]
}
endmacro;

tabgrouptotal:
 ##t = 0;
 if (tabmode) {
  ##i = 0;
  while (##i<hidemarucount) {
   if (tabgroup[##i] > ##t) ##t = tabgroup[##i];
   ##i = ##i + 1;
  }
 }
 return ##t;

nexttabgroup:
 ##i = 0;
 while (##i<hidemarucount) {
  if (tabgroup[##i] == ##1) {
   setactivehidemaru ##i;
   if (result == true) endmacro;
  }
  ##i = ##i + 1;
 }
 return;

前のタブグループで回すときは[*1][*2]のコメントを入れ替えてください。
実現可能性0ではないと思うので、一応つなぎですが、
大体は出来てしまうので実現されないかもしれません。(^_^;)

[ ]
RE:08347 タブグループを切り替えるコマンNo.08357
秀丸担当 さん 05/06/22 10:13
 

他のスレッドでも買いましたが、タブグループを操作する系のマクロ文を考慮す
ると、秀丸番号で扱っていた文などを、全てタブグループ版を作成しなくてはい
けないことに発展してしまいそうです。
bouzさんの書かれたマクロのように、現状のマクロで対処できるので、マクロは
増やしたくないです。

ただ、キー割り当て可能なコマンドとしての「次のタブグループ」「前のタブグ
ループ」のようなものはあってもいいかもしれないです。現状はWindowsの機能
に頼るしかないので。
ネタとして参考にしたいと思います。

[ ]
RE:08347 タブグループを切り替えるコマンNo.08375
fleakflap さん 05/06/22 14:35
 
>こんなんでどうでしょう?

 すばらしいマクロ、ありがとうございました。
即刻、キー登録して,劇的に便利にm(_ _)m

[ ]
RE:08357 タブグループを切り替えるコマンNo.08377
fleakflap さん 05/06/22 14:38
 
>タブグループを操作する系のマクロ文を考慮す
>ると、秀丸番号で扱っていた文などを、全てタブグループ版を作成しなくてはい
>けないことに発展してしまいそうです。

 タブグループ系のマクロの要望は撤回することで了解致しました。

>bouzさんの書かれたマクロのように、現状のマクロで対処できるので、マクロは
>増やしたくないです。
 お気持ちは重々察知は致します(^^;;;
 bousさんのマクロは、すばらしい動作をしてくれています。ただ、その
マクロの中身を見ると、ちゃんと(^^;、「tabgrouptotal」の値を求める
自作のサブルーチンや「nexttabgroup」があります。これらが文や変数とし
て、実装されていると、さらに多くの人がマクロからラブグループを操作する
ようなマクロが公開されるのでは…と期待したい気持ちがあったわけです。

(秀丸マクロは「純粋な言語」ではないわけで、どちらかというと、
本格的なプログラミング教育を受けてない素人でも、ある程度、秀丸を動か
せるツールとしての魅力が一番だろうと思われます。bousさんのようなマクロは、
そうそう誰もが書けるものじゃないと思います。で、新しい機能が追加されれ
ば、それをできるだけ多くの人に簡単に使って頂く、といったサービス精神と
いうか、まあ、そんな商品としての気配りもあっても良いかなという気は残り
ますが、それによって負の負担が大きくなるようなので、これまた撤回いたします。)


>ただ、キー割り当て可能なコマンドとしての「次のタブグループ」「前のタブグ
>ループ」のようなものはあってもいいかもしれないです。

 これは、可能であれば、実装していただければと、淡い期待を抱きながら。

[ ]
RE:08375 タブグループを切り替えるコマンNo.08400
bouz さん 05/06/22 22:25
 
喜んでいただけたみたいで嬉しいです。
が、間が跳んでるとダメですね。ちと作り替えてみました。

//次のタブグループ/前のタブグループ
call tabgrouptotal;
if (#tabgrouptotal>1) {
 call nexttabgroup (tabgroup + 1) * (tabgroup < ##return);//次のタブグループ
// call nexttabgroup (tabgroup - 1) * (tabgroup>0) + (!tabgroup)*##return;//
 前のタブグループ
}
endmacro;

tabgrouptotal:
 #tabgrouptotal = 0;
 #tabgroupmax = 0;
 if (tabmode) {
  ##i = 0;
  ##tab[0]= -1;
  while (##i<hidemarucount) {
   ##j = 0;
   while (##j<#tabgrouptotal) {
    if (tabgroup[##i]==##tab[##j]) break;
    ##j = ##j + 1;
   }
   if (##j==#tabgrouptotal) {
    if (tabgroup[##i] > #tabgroupmax) #tabgroupmax = tabgroup[##i];
    ##tab[##j] = tabgroup[##i];
    #tabgrouptotal = #tabgrouptotal + 1;
   }
   ##i = ##i + 1;
  }
 }
 return #tabgroupmax;

nexttabgroup:
 ##i = ##1;
 while (##i<=#tabgroupmax) {
  ##j = 0;
  while (##j<hidemarucount) {
   if (tabgroup[##j] == ##i) {
    setactivehidemaru ##j;
    if (result == true) endmacro;
   }
   ##j = ##j + 1;
  }
  ##i = ##i + 1;
 }
 return ;

tabgrouptotal とタブグループの最大値は同じじゃないんですね。
勝手に詰められるものと思っていました。(^_^;)

[ ]
RE:08377 タブグループを切り替えるコマンNo.08401
bouz さん 05/06/22 22:55
 
大ざっぱに言って秀丸のマクロは、C言語から初心者が戸惑いがちな
ポインタと構造体を省いてあるので、わりと覚えやすいと思いますよ。
ヒマを見つけて、キーボードマクロから始めるなり、マクロ言語(入門用)
ヘルプでも見ながら、取り組んでみてはどうでしょうか?
より楽しく頼もしくなると思いますよ。
次のタブグループマクロでも、基礎的なことだけで、とりたてて難しい
ことは何にもしてません。

[ ]
RE:08401 タブグループを切り替えるコマンNo.08405
bouz さん 05/06/23 08:31
 
>ヘルプでも見ながら、取り組んでみてはどうでしょうか?
釈迦に説法でしたね。失礼しました。(^_^;)

メイン部を次のようにすれば、ひとつのマクロをふたつ登録して
+shiftキーで前のタブグループに切り替えられますね。
(これも余計なお世話かもしれないけど。実装されるかもしれないので
やっぱりつなぎモードです。)

#prev = iskeydown(0x10);
call tabgrouptotal;
if (#tabgrouptotal>1) {
 if (#prev)
  call nexttabgroup (tabgroup - 1) * (tabgroup>0) + (!tabgroup)*##return;
 else
  call nexttabgroup (tabgroup + 1) * (tabgroup < ##return);
}
endmacro;

[ ]
RE:08400 タブグループを切り替えるコマンNo.08417
fleakflap さん 05/06/25 16:46
 
>  喜んでいただけたみたいで嬉しいです。
>が、間が跳んでるとダメですね。ちと作り替えてみました。

 素晴らしい!

(ただ、ユーザー側に立ってみれば、」タブグループを切り替えるだけで
こんなすごいマクロを書かないといけないの?」という印象も…。
 ただただ、タブグループ切り替えのコマンド追加を、雨乞いのように…)

[ ]
RE:08417 タブグループを切り替えるコマンNo.08464
bouz さん 05/06/29 14:04
 
ずいぶん簡単に出来るようになりました。
とりあえず作り替えてみました。(^^)

//次のタブグループ
if (tabgrouptotal>1) {
 #n[0] = tabgroup[getcurrenttab(1, 1)];
 #n[1] = #n[0];
 #i = 2;
 while (#i<tabgrouptotal) {
  #t = tabgroup[getcurrenttab(1, #i)];
  if (#t<tabgroup) {
   if (#t<#n[0]) #n[0] = #t;
  } else {
   if (#t<#n[1]||#n[1]<tabgroup) #n[1] = #t;
  }
  #i = #i + 1;
 }
 setactivehidemaru getcurrenttab(0, #n[(#n[1]>tabgroup)]);
}

[ ]