NTEmacs スレッド 3

このエントリーをはてなブックマークに追加
618576
Emacs Part 43
http://toro.2ch.net/test/read.cgi/unix/1370754332/29
Windows環境固有の話もありそうなんでこちらでやらせてもらいます。

> ファイルを8個以上ひらくとパイプエラーになってしまうのでそれ以上開けない。
cygwinのemacs?gnupack (mingw32) の emacs だと、clang-complete が30個までは動いてる。
それを超えると確かに開けなくなるね。

> 別バッファにincludeされる対象のファイルを自動的にオープンすることがあり
どうせすぐに閉じられるファイルに対して ac-complete-clang-async (以降 acca) が動いてもむなしいんで、
こういう時には動かさないようにしたいな。(semantic-find-file-noselect()に細工すればいいかな?)
それに、たくさん開いていても、ある時間内に編集するファイルってそう多くないと思うんで、同時起動する数に制限を
かけるという方向も考えてみる。

> これで応答がなくなってしまったことがあり
プロセスに何をさせようとしたときか教えて。
ずっと ac-clang-reparse-buffer() で固まってしまっていたんで、 upしたファイルだと system-type が
windows-nt のときはこれを呼ばないようにしてる。でも、今試したらまともに動くようになっていた。
ファイルをプロセスに送るとき、バイト数を送ってるんでマルチバイト文字の処理をちゃんとしていないと、
実際のサイズが狂ってしまい、その結果プロセスの気が狂っていたんじゃないかと思う。

> ただemacs-lisp自体はシングルスレッドなんですよね?
> 平行性はどういう単位で実現されているのかで、問題の解決方法が変わってくるとおもいます。
イベントループがあってアイドル状態になった時に、キー入力(マウスなんかの操作もこれに変換される)、
外部プロセスからの入力(pipe/socket)、タイマーイベントがあればそれに対応する処理が動くって
構造のなんで、明示的にイベントを受けるか、アイドルに戻さない限り別の処理が動くことはないという認識。

semanticの解析をclangに肩代わりさせることはできないかと妄想中。