jsmodeのスコープのライフサイクルと同じNo.11582
こみやんま さん 24/03/10 15:39
 
弱提案といった感じですが、あった方がいいんでないの、というところで


jsmodeのスコープのライフサイクルと同じような keepdllやkeepobjのモード

jsmodeの完全に厳密なところはあまり把握していないのですが、
概ね、jsmodeの実行スコープ(スクリプト空間というか)は「プロセス」ではなく、
「プロセスかつファイル名」を基準にぶら下げられているかと思うんですが、
これと同じようなスコープライフのモードを keepdll や keepobj にも用意してはど
うかといった提案です。

現在 keepobj や keepdll で プロセス空間に相当するモードで一番プログラムを組
みにくくなりやすい点が、
『秀丸が「タブモードの時」、1つしかファイルを開いている状態から、そのファイ
ルを閉じて無題になったとしても、「同一プロセス」であるため、ライフサイクルが
維持されてしまう』
といった点にあるので、
jsmodeと概ね同一の解放条件のモードを作成してはどうかというものです。

//----------------------------------------------------------------------
例:
#dll = loaddll(...)
keepdll #dll, 4; // 番号は新たなモード (解放されるタイミングはjsmodeと同じよ
うな感じの条件)
setdlldetachfunc(...); // あってもなくても

// ファイルが閉じられたり新たなファイルが同一プロセスで開かれたら、dll解放。
 (jsmodeの解放と概ね条件を合わせる)
// この時、解放直前にsetdlldetachfuncの関数や、DllDetachFunc_After_Hm866 をr
eason引数付で呼ぶ
//----------------------------------------------------------------------


//----------------------------------------------------------------------
例:
#obj = createobject(...)
keepobject #obj, 4; // 番号は新たなモード (解放されるタイミングはjsmodeと同
じような感じの条件)
setcomdetachmethod #obj, "OnReleaseObject";

// ファイルが閉じられたり新たなファイルが同一プロセスで開かれたら、obj解放
(jsmodeの解放と概ね条件を合わせる)
// この時、解放直前にsetcomdetachmethodで指定した関数をreason引数付で呼ぶ
//----------------------------------------------------------------------


といった感じの提案です。

[ ]
RE:11582 jsmodeのスコープのライフサイクNo.11585
秀丸担当 さん 24/03/11 16:41
 
ご提案ありがとうございます。
keepdllやkeepobjectに、jsmodeと同じようなタイミングがあったらいいです。
試しにやってみようとしたらいろいろ内部的に複雑なところもあるのですが、できた
ほうがいいと思います。
今後検討しようと思います。

[ ]