[FrontPage] | 更新履歴 - サイトマップ - "XEmacsEditClient" 配下のコンテンツ - 過去を発掘 | [Snap.Shot] |
XEmacsEditClient |
これは何かというと、Windowsのエディタ「秀丸」や「WZ Editor」でいうところの常駐機能を実現するためのコマンド。
通常のxemacsコマンドの代わりに実行すると、常駐するためのxemacsサーバ(という呼び方をすればいいのかな)が起動して、そちらに制御を渡す。2回目以降からは重た〜いxemacsの起動から解放されて、すぐにファイルが開いてくれるという仕掛け。
副作用として、xemacs-editclient自身はプロセスをすぐに解放する。つまり、エディタプロセスの終了をwaitして、終了した時点で編集完了と認識するようなプロダクトでは、思い通りに動いてくれない。(CVSの$CVSEDITORに設定するなど)
いちおう、これを回避するためのセコセコPerlスクリプトを書いた。こんなの。
#!/usr/bin/perluse File::stat;
my $start_stat = stat($ARGV[0]);
exit(0) unless($start_stat);
# start editor my $result = system("xemacs-editclient $ARGV[0]");
while(!$result) { sleep(2); my $now_stat = stat($ARGV[0]);
last unless($now_stat); last if($now_stat->mtime != $start_stat->mtime); };
これは、ファイルが修正されたのを検知して終了してくれる。でもこれにも弊害があって、ファイルを変更しないで終了すると無限ループに陥っちゃう。(今はとりあえずC-cで抜けている)
うまい方法はないものか。