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

Re: [MD:6582] Make friends with cygwin pty by fakecygpty.



ほりぐちです. 2.10 はまだ変更を加えていいのでしょうか.
 callproc.c, process.c, mw32misc.el です.

OKなら, あとで commit しちゃいます.

> 小関さんと日記でやりとりしていた
> http://www.mew.org/~kazu/proj/prog/gpg.el ですが、こいつも gpg
> の passphase でうまくいかないので fakecygpty を試してみました。
> 
> d) gpg.el が動いた :-)

 とりあえず使うアテはあるという感じですかね.

> ただし、調子にのって Mew から使う gpg も f_gpg.exe にしたところ、
> まったくもって Mew が動かなくなってしまったので、

 まぁそうですね. Meadow は pipe でつないでいるつもりでもプロセス
には pty がつながっているので固まってしまうようです.

 まぁ使えそうな雰囲気ということで Meadow に入れてみました.
 一応 fakecygpty がなければ何事もなかったかのように動きます.
 mw32-process-wrapper-alist という変数で制御します.

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

 とやると call-process の時は直接起動. start-process の時は 
fakecygpty(新) を介してプログラムを起動します.

 Windows ではプロセス起動の際に call-process なのか start-process 
なのかの情報が落ちてしまうので, mw32-process-expects-pty という変
数を使って general-process-argument-editing-function に引き渡すこ
とで pty/pipe の切り替えを行っています.

 これで, 各々の設定は以下のように変わります.

・f_xxx.exe は不必要. たとえば c:/meadow2/bin/fakecgypty.exe があ
  ればOK.
・explicit-shell-file-name は普通のコマンド名を指定(元に戻す)
・tramp の設定はさらに簡単に (setq tramp-encoding-shell "bash") でOK
・gpg についても問題なし.

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