trampがたまに固まる問題が解決した。

NTEmacs 23.2.1 と付属の tramp 2.1.18-23.2にて)

Meadowのときからtrampがたまに固まることがあって、そもそもそれがきっかけでNTEmacsに乗り換えたんだけど、NTEmacsでもやっぱり固まった。


どうもファイルが存在する階層が深い場合に起きるっぽいので、

(setq tramp-debug-buffer t tramp-verbose 10)

として色々調べてたら、階層が深くなるほどvcの処理が増えていって、それが重過ぎて固まってるように見えるっぽい。



そこでtrampとvcのソース読んで、vc-handled-backendsを試しに空にしてみたら、階層が深いファイルもすんなり開けるようになった。なので

(defadvice tramp-handle-vc-registered (around tramp-handle-vc-registered-around activate)
  (let ((vc-handled-backends '(SVN Git))) ad-do-it))
;; デフォルトは '(RCS CVS SVN SCCS Bzr Git Hg Mtn Arch)

として、trampがvc周りの処理をするときだけvc-handled-backendsを減らすようにしてみた。今のところバッチリ。
やべー超快適っす!



あと、tramp-methodが"ssh"でCygwinのopensshを使う場合はfakecygptyを通さないといけないんだけど、
Meadowのmw32-process-wrapper-alistみたいな仕組みがないので、
gcc -o f_ssh fakecygpty.cしてf_ssh.exeにパスを通して

(setcar (cdr (assq 'tramp-login-program (assoc "ssh" tramp-methods))) "f_ssh")

としておけば良い。
ただ自分的には"ssh"のメリットがあんまり無いので(むしろfakecygpty分の余計なプロセスが増えるので)"sshx"使ってる。