[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:6754] grep-mode and fakecygpty



ほりぐちです. 解決方法のメモ. あとで commit します.

>  trunk/3828 で M-x grep が動かなくなりました. fakecygpty 上の
> bash が速攻で終了してしまいます.

 grep.el には問題はなく, linux 上ではちゃんと動きます. 問題は
NTEmacs では process-send-eof で パイプをクローズしてしまうことで
した. pty のつもりで動いているときにこれはいやです.

 process->pty_flag をプロセスの初期化処理のあとで TRUE にしてやる
ことで問題は(見た限りでは^^;)副作用なく解決するので, これを実現す
る枠を拡張します.

・mw32-process-wrapper-alist で従来 VAL となっているところを拡張し
 て (cons PROG LISPFUN) とも設定できるようにして, LISPFUN を
 general-argument-editing-function から呼び出すようにする.

・LISPFUN の中で, 現在初期化中の lisp-process を取得するための変数
  (mw32-process-under-setup)と process->pty_flag をセットする関数
  (mw32-set-pty-flag), そしてmw32-set-pty-flagを使って pty_flag を
  TRUE にする関数(set-process-connection-type-pty) を追加.

 これで, .emacs などで以下のように書くことで正しい動作を行うように
なります.

| (setq mw32-process-wrapper-alist
|       '(("/\\(svn\\|ssh\\|bash\\|tcsh\\|gpg[esvk]?\\)\\.exe" .
| 	 (nil . ("fakecygpty.exe" . set-process-connection-type-pty)))))


-- 
ほりぐちきょうたろう