2012-07-18 15 views

答えて

5

dired-x.elでdired-clean-up-after-deletionを単に再定義してください。

;; redefine the definition in dired-x.el, so that we are not prompted 
;; to remove buffers that were associated with deleted 
;; files/directories 

(eval-after-load "dired-x" '(defun dired-clean-up-after-deletion (fn) 
    "My. Clean up after a deleted file or directory FN. 
Remove expanded subdir of deleted dir, if any." 
    (save-excursion (and (cdr dired-subdir-alist) 
         (dired-goto-subdir fn) 
         (dired-kill-subdir))) 

    ;; Offer to kill buffer of deleted file FN. 
    (if dired-clean-up-buffers-too 
     (progn 
     (let ((buf (get-file-buffer fn))) 
      (and buf 
       (save-excursion ; you never know where kill-buffer leaves you 
       (kill-buffer buf)))) 
     (let ((buf-list (dired-buffers-for-dir (expand-file-name fn))) 
       (buf nil)) 
      (and buf-list 
       (while buf-list 
       (save-excursion (kill-buffer (car buf-list))) 
       (setq buf-list (cdr buf-list))))))) 
    ;; Anything else? 
)) 
+0

非常に良い、完璧に動作します! –

8

あなたがdired-delete-entry機能を助言することができます。

(defadvice dired-delete-entry (before force-clean-up-buffers (file) activate) 
    (kill-buffer (get-file-buffer file))) 

のelispマニュアルは説明し、「関数全体を再定義するよりもきれい」と助言し、あれば壊れにくくなります機能の定義は将来変更されます。

+0

パーフェクト、ありがとう、マイケル。 –

+0

残念ながら、これは期待どおりに動作していないことに気付きました。バッファを殺すように求められたら、私はyesを選択します。私は残りのファイルを表示するdired(-x)バッファーにいます。しかし、あなたのコードでは、次のようなことが起こります。ファイルを尋ねることなく削除すると、バッファを変更せずにファイルを削除するのではなく、別のバッファに入れてしまいます。 –

関連する問題