|
弱提案といった感じですが、あった方がいいんでないの、というところで
jsmodeのスコープのライフサイクルと同じような keepdllやkeepobjのモード
jsmodeの完全に厳密なところはあまり把握していないのですが、
概ね、jsmodeの実行スコープ(スクリプト空間というか)は「プロセス」ではなく、
「プロセスかつファイル名」を基準にぶら下げられているかと思うんですが、
これと同じようなスコープライフのモードを keepdll や keepobj にも用意してはどうかといった提案です。
現在 keepobj や keepdll で プロセス空間に相当するモードで一番プログラムを組みにくくなりやすい点が、
『秀丸が「タブモードの時」、1つしかファイルを開いている状態から、そのファイルを閉じて無題になったとしても、「同一プロセス」であるため、ライフサイクルが維持されてしまう』
といった点にあるので、
jsmodeと概ね同一の解放条件のモードを作成してはどうかというものです。
//----------------------------------------------------------------------
例:
#dll = loaddll(...)
keepdll #dll, 4; // 番号は新たなモード (解放されるタイミングはjsmodeと同じような感じの条件)
setdlldetachfunc(...); // あってもなくても
// ファイルが閉じられたり新たなファイルが同一プロセスで開かれたら、dll解放。 (jsmodeの解放と概ね条件を合わせる)
// この時、解放直前にsetdlldetachfuncの関数や、DllDetachFunc_After_Hm866 をreason引数付で呼ぶ
//----------------------------------------------------------------------
//----------------------------------------------------------------------
例:
#obj = createobject(...)
keepobject #obj, 4; // 番号は新たなモード (解放されるタイミングはjsmodeと同じような感じの条件)
setcomdetachmethod #obj, "OnReleaseObject";
// ファイルが閉じられたり新たなファイルが同一プロセスで開かれたら、obj解放 (jsmodeの解放と概ね条件を合わせる)
// この時、解放直前にsetcomdetachmethodで指定した関数をreason引数付で呼ぶ
//----------------------------------------------------------------------
といった感じの提案です。
|
|