|
LSPサーバは起動して最初の接続のハンドシェイク(initialize)で
開発環境 (秀丸エディタの場合は個別ウィンドウ) のプロセスID
hidemaru.getCurrentProcessInfo().processID を送信、登録し
そのプロセスが消失すると、LSPサーバも自己判断で
シャットダウンするという挙動となっています
オンデマンドで起動するデーモンとしては同じ立ち位置なので
こういう仕組み(プロトコル)が必要なのだと思います
自分はLSPサーバと通信する別デーモンを立ち上げて、
秀丸エディタ側は状態管理は何も考えずに WebSocket で
エディタの状態だけJSON-RCPさせるというロジックで
「接続中のWebSocket数」を死活監視としています
通信に使わなくとも WebSocket サーバをついでに立ち上げて、
何もしないコネクションをその用途で繋げるというやり方です
秀丸エディタは自動起動マクロで「閉じる直前」にマクロをフック出来るので
マクロ側で後始末させるなら、そこで Dispose() 判定させるのが
ロジカルなのだと思います
自分は何でもロガー&ビューワの役割も持たせてるので、
その辺は横着してPCの起動終了と連動させていますがw
|
|