2012-07-18 2 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) 버퍼에있다. 그러나 코드에서 다음과 같은 일이 발생합니다. 파일을 묻지 않고 파일을 삭제하면 버퍼를 변경하지 않고 파일을 삭제하는 대신 다른 버퍼에 저장됩니다. –