getcurrenttabの値No.08714
K'zawa さん 15/09/28 11:19
 
こんにちは、K'zawaです。

マクロ実行中に、マクロとは関係ないところ(関連付け)で秀丸が開かれたとき、
「getcurrenttab(1, 0)」の値が旧タブモードでは変わらず、新タブモードでは
変わります。

下記のマクロを実行した後、ファイラーなどでテキストファイルを開いてみると
確認できます。


insert "getcurrenttab(1, 0)\tgettabhandle(1, 0, taborder)\n";
insert str(getcurrenttab(1, 0)) + "\t" + str(gettabhandle(1, 0,
taborder)) + "\n";
sleep 8000;
insert str(getcurrenttab(1, 0)) + "\t" + str(gettabhandle(1, 0,
taborder)) + "\n";

[ ]
RE:08714 getcurrenttabの値No.08716
秀丸担当 さん 15/09/28 17:25
 

マクロを試してみたところでは、sleepの段階で応答なし状態になり、外部から
起動する秀丸エディタも待つ状態になりました。
こちらで試してみた限りでは、値としてはどちらのタブモードでも同じ値でした
が、マクロ実行中に外部からの起動があると、順番で数える場合は予想が付かな
いことになっても不思議ではないです。
直すとしたらどちらのケースに合わせるべきかわからなくて、順番の場合は、こ
のケースに限らずsetactivehidemaru等他のケースでも、どうしても問題が起こ
り得ると思います。
こういうことを避ける場合は、やはりウィンドウハンドルで指定するしかないと
思います。

[ ]
RE:08716 getcurrenttabの値No.08720
K'zawa さん 15/09/29 11:45
 
秀丸担当さん、こんにちは。
K'zawaです。

t3:08716| RE 08714 getcurrenttabの値
>
>マクロを試してみたところでは、sleepの段階で応答なし状態になり、外部から
>起動する秀丸エディタも待つ状態になりました。
>こちらで試してみた限りでは、値としてはどちらのタブモードでも同じ値でした

次のマクロにかえてみると、タブモードの新旧は関係なかったようです。

insert "getcurrenttab(1, 0)\tgettabhandle(1, 0, taborder)\n";
while ( #i < 15 ) {
    insert str(getcurrenttab(1, 0)) + "\t" + str(gettabhandle(1, 0,
taborder)) + "\n";
    #i = #i + 1;
    sleep 1000;
}

>が、マクロ実行中に外部からの起動があると、順番で数える場合は予想が付かな
>いことになっても不思議ではないです。
>直すとしたらどちらのケースに合わせるべきかわからなくて、順番の場合は、こ
>のケースに限らずsetactivehidemaru等他のケースでも、どうしても問題が起こ
>り得ると思います。
>こういうことを避ける場合は、やはりウィンドウハンドルで指定するしかないと
>思います。

せめてマクロを実行している秀丸の情報だけでも確実に取れるとよいのですが。

ところで、[hidemaruhandle(0)」はマクロが動作している秀丸のハンドルを確実
に返すのでしょうか?(外部起動した秀丸のウインドウ番号は、その時点の末尾
になっているように思えるので、0はマクロが動作している秀丸を指すのかと
…)

もうひとつ、「taborder」ですが、ヘルプには、

>taborder  タブモードのとき、自身のタブを、同じグループにあるタブの0から数
>えた順番を表します。(V5.00以降)

とありますが、この「自身」はマクロが動作している秀丸でしょうか?
「getcurrenttab(1, 0)「と「gettabhandle(1, 0, taborder)」は違う値を返す
かもしれない…そういうものでしょうか?

[ ]
RE:08720 getcurrenttabの値No.08721
秀丸担当 さん 15/09/29 15:43
 

マクロで再現させることができました。
ありがとうございます。

hidemaruhandle(0)は、マクロが動作している秀丸エディタのウィンドウハンド
ルを表していて、ウィンドウの重なりやタブの順番に関わらず、常に確実に取得
することができます。
ヘルプにも注意書きを追記させていただきます。

taborderは、マクロが動作している秀丸エディタそのものの順番を表しています。
getcurrenttabは現在アクティブなタブを表していて、違う可能性があるという
ことになってしまいます。

[ ]
RE:08721 getcurrenttabの値No.08722
K'zawa さん 15/09/29 16:02
 
秀丸担当さん、こんにちは。
K'zawaです。

>hidemaruhandle(0)は、マクロが動作している秀丸エディタのウィンドウハンド
>ルを表していて、ウィンドウの重なりやタブの順番に関わらず、常に確実に取得
>することができます。
>ヘルプにも注意書きを追記させていただきます。
>
>taborderは、マクロが動作している秀丸エディタそのものの順番を表しています。
>getcurrenttabは現在アクティブなタブを表していて、違う可能性があるという
>ことになってしまいます。

すべて了解しました。ありがとうございます。

[ ]