Go to the first, previous, next, last section, table of contents.

D-2: 愛すべき ange-ftp をロードすると M-! (shell-command) が働かないのは

 何故ですか?

ange-ftp をロードすると多くの関数が置き換えられますが、その中に Mule で引数の指定が変更されている write-region と insert-file-contents が 含まれています。

コマンド shell-command は write-region と insert-file-contents を Mule で追加された引数を使って呼び出していますが、ange-ftp が置き換え た write-region はこの引数を解釈できないのでエラーが発生し、 shell-command の実行が失敗しているのです。

解決法を Masayuki Kuwada <kuwada@soliton.ee.uec.ac.jp> さんは次のよ うに書いています:

  ange-ftp.el の ange-ftp-write-region と
  ange-ftp-insert-file-contents の定義部分の引数の最後に
  &rest coding-system を追加し、以下の修正をすれば動作します。
  (Emacs, Nemacs との共有もできます)。

  [注意] 以下の修正は ange-ftp のバージョン
  RCS:          $Header: ange-ftp.el,v 4.20 92/08/14 17:04:34 ange Exp $
  に対するものです。ange-ftp のバージョンによっては引数が異なる場合
  がありますから、以下の修正例を参考に修正してください。

  関数 ange-ftp-write-region の内部で ange-ftp-real-write-region が2
  箇所で使用されていますが、それらをそれぞれ次のように変更します。
  (ange-ftp-real-write-region start end temp nil visit)
      		↓
  (apply 'ange-ftp-real-write-region start end temp nil
         visit coding-system)
  (ange-ftp-real-write-region start end filename append visit)
      		↓
  (apply 'ange-ftp-real-write-region start end filename append
         visit coding-system)
  また、関数 ange-ftp-insert-file-contents の内部で
  ange-ftp-real-insert-file-contents が2箇所で使用されていますが、
  それらをそれぞれ次のように変更します。
  (ange-ftp-real-insert-file-contents temp visit)
      		↓
  (apply 'ange-ftp-real-insert-file-contents
         temp visit
         coding-system)
  (ange-ftp-real-insert-file-contents filename visit)
      		↓
  (apply 'ange-ftp-real-insert-file-contents
         filename visit coding-system)

Go to the first, previous, next, last section, table of contents.