|
一応あってると思いますが、認識が違っていたら記述修正が必要なので
確認となります。
以下のスクリプトがわかりやすいかと思うのですが、
postExecMacroMemory は、
「実行した瞬間の秀丸のプロセスのjsmode空間」ではなく、
「そのpostExecMacroMemory自体が帰属する」実行空間を採用して、
引数の文字列を実行する、
という認識であっているかどうかの確認となります。
(今まで、この前提で組んでいたのですが、違ってたらヤバいので...)
言葉で伝達するのは非常に困難ですので、下のスクリプトを実行してもらうのが一番かと思います。
jsmode "WebView2\\" + currentmacrofilename + "ONE";
js {
// hidemaru.postExecMacroMemoryの実行を確かなものとする関数
function pushPostExecMacroMemory(command) {
let isScheduled = 0;
var retryPushPostExecMacroMemory;
function attemptExecution() {
console.log(hidemaru.getJsMode()); // getJsModeはあくまでも「ここの実行の帰属空間」ではなく「その瞬間、この秀丸プロセスが支配されているjsmode空間」なので、「_TWO」の方を指す
if (!isScheduled) {
isScheduled = hidemaru.postExecMacroMemory(command); // だがしかし、こちらは、問題なく「func_ONE」が表示される。
// この行を実行した瞬間としては、「_TWO」の支配下だが、このスクリプトの帰属空間は「_ONE」なので、「ONE」の実行空間を採用した js { } を実行するようにしている。
}
if (!isScheduled) {
retryPushPostExecMacroMemory = hidemaru.setTimeout(attemptExecution, 200);
}
}
retryPushPostExecMacroMemory = hidemaru.setTimeout(attemptExecution, 200);
}
function func() {
debuginfo(2);
console.log("func_ONE");
}
pushPostExecMacroMemory("js { func(); }");
}
jsmode "WebView2\\" + currentmacrofilename + "_TWO";
js {
function func() {
debuginfo(2);
console.log("func_TWO");
}
}
|
|