LoginSignup
1
1

More than 5 years have passed since last update.

Mac版EmacsのTRAMP (ange-ftp) とExtended Passive Mode

Posted at

困ってること

Mac OS XのEmacsでTRAMP (ange-ftp) を使っているとたまにEntering Extended Passive Modeなどと言われて操作がブロックされることがある (接続先のサーバによるようです)。

Extended Passive Modeを切ってやる、具体的にはftpプロセスに対してepsv4 offを送りつけてやるとこれが解決する。が、ange-ftpにそのような機能はない。

解決策らしきものを見つけたのだがどうもhookを実行してくれていない。何故なのか深く追いかけていないので謎。ange-ftpのコードを読む限りでは呼んでるっぽいんですがね…。しょうがないのでadviceを使ってやることにした。

解決

~/.emacs.d/init.el
;;;                                                                                                                                    
;;; TRAMP関連の設定                                                                                                                    
;;;                                                                                                                                    
(setq ange-ftp-try-passive-mode t)      ; 必ずpassive modeに                                                                           
(when (equal system-type 'darwin)       ; Macのftpはextended passivemodeで酷いことになるのでそれをoffにする                            
  (defadvice ange-ftp-passive-mode (before ange-ftp-epsv4-off)
    (ange-ftp-raw-send-cmd proc "epsv4 off"))
  (ad-activate 'ange-ftp-passive-mode))

見ればわかるが、passive modeにするための関数 (ange-ftp-passive-mode) に引っかけている。なのでange-ftp-try-passive-modeange-ftp-passive-host-alistなどを使ってpasive modeでやりとりするように設定しなければなりません。

バージョン

これはGnu Emacs 24.2.1とMac OS X 10.7.5 (Lion) での話です。でも多分他のバージョンでも起こると思います。

参考文献

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1