2012-07-18 40 views

回答

5

只需在dired-x.el中重新定義刪除後的dired-clean-up-delete即可。

;; 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

非常好,完美的作品! – 2012-07-19 19:43:05

8

,使任何文件緩衝區刪除前關閉您可以告知dired-delete-entry功能:

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

的elisp的手冊描述爲「比重新定義全功能清潔工」提供諮詢,這是不太可能打破,如果功能的定義在未來發生變化。

+0

完美,謝謝邁克爾。 – 2012-07-18 17:54:09

+0

我剛剛意識到,不幸的是,這不符合預期。當我被要求殺死緩衝區時,我選擇yes,我仍然在dired(-x)緩衝區中顯示剩餘的文件。但是,使用您的代碼時,會發生以下情況:當我刪除文件時(未被詢問),它會將我引入不同的緩衝區,而不是在不更改緩衝區的情況下刪除文件。 – 2012-07-19 18:32:21

相關問題