0

dired-do-copyまたはdired-do-renameの間にその場で新しいディレクトリを作成できるemacslispハックを持っている人はいますか?これらの2つのコマンドのいずれかを実行する前に作成できることを理解しています。ある種の「Areyousure...」プロンプトの追加ポイント。

4

1 に答える 1

5

アドバイスを適用する場合のように見えます。問題は、何をアドバイスするかです。dired コードを見ると、正しいターゲットは dired-mark-read-file-name、宛先ファイル名の読み取りに使用されているようです。これはうまくいきます:

(defadvice dired-mark-read-file-name (after rv:dired-create-dir-when-needed (prompt dir op-symbol arg files &optional default) activate)
  (when (member op-symbol '(copy move))
    (let ((directory-name (if (< 1 (length files))
                              ad-return-value
                              (file-name-directory ad-return-value))))
      (when (and (not (file-directory-p directory-name))
                 (y-or-n-p (format "directory %s doesn't exist, create it?" directory-name)))
        (make-directory directory-name t)))))

これを dired でのファイル作成のより多くのケースに適用するために、最初のwhen( ) を削除できることに注意してください。when (member op-symbol '(copy move))しかし、dired-mark-read-file-name がいつ呼び出されるかはわかりません。そのため、望ましくない副作用の可能性を減らすために、このテストをそこで行います。

于 2012-10-21T11:40:53.370 に答える