Subject: bug#28373: [PATCH] New variable controls whether dired confirms to kill buffers visiting deleted files

From: Alex Branham <[email-masked]>
Date: Wed, 06 Sep 2017 10:42:37 -0500

Hello,

This is a patch to include a new variable that, when set to nil, makes dired kill buffers visiting deleted files without confirmation.

There are apparently some people interested in this:

https://emacs.stackexchange.com/questions/30676/how-to-always-kill-dired-buffer-when-deleting-a-folder

I read through the CONTRIBUTE file, but please let me know if something is wrong with the commit message and I can redo it.

Alex

>From e8be25d16b6381cafa8b345b0509944e1dc66c68 Mon Sep 17 00:00:00 2001
From: Alex Branham <[email-masked]>
Date: Wed, 6 Sep 2017 10:29:50 -0500
Subject: [PATCH] Add dired-confirm-killing-deleted-buffers

* lisp/dired-x.el (dired-clean-confirm-killing-deleted-buffers):
* lisp/dired.el (dired-clean-up-after-deletion): Just kill buffers
visiting deleted files without confirming if
dired-clean-confirm-killing-deleted-buffers is nil
* etc/NEWS: Document the change

Copyright-paperwork-exempt: yes
---
 etc/NEWS        |  4 ++++
 lisp/dired-x.el |  6 ++++++
 lisp/dired.el   | 28 +++++++++++++++++-----------
 3 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index 2824349a53..4194f307b4 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -594,6 +594,10 @@ this is controlled by the 'wdired-create-parent-directories' variable.
 *** 'W' is now bound to 'browse-url-of-dired-file', and is useful for
 viewing HTML files and the like.
 
++++
+*** New variable 'dired-clean-confirm-killing-deleted-buffers'
+controls whether dired asks to kill buffers visiting deleted files
+
 ---
 ** html2text is now marked obsolete.
 
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 1425278bdc..bfb5574da3 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -243,6 +243,12 @@ dired-clean-up-buffers-too
   :type 'boolean
   :group 'dired-x)
 
+(defcustom dired-clean-confirm-killing-deleted-buffers t
+  "If nil, don't ask whether to kill buffers visiting deleted files."
+  :version "26.1"
+  :type 'boolean
+  :group 'dired-x)
+
 ;;; KEY BINDINGS.
 
 (define-key dired-mode-map "\C-x\M-o" 'dired-omit-mode)
diff --git a/lisp/dired.el b/lisp/dired.el
index ff62183f09..bac3933502 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3164,28 +3164,34 @@ dired-delete-entry
   (dired-clean-up-after-deletion file))
 
 (defvar dired-clean-up-buffers-too)
+(defvar dired-clean-confirm-killing-deleted-buffers)
 
 (defun dired-clean-up-after-deletion (fn)
   "Clean up after a deleted file or directory FN.
-Removes any expanded subdirectory of deleted directory.
-If `dired-x' is loaded and `dired-clean-up-buffers-too' is non-nil,
-also offers to kill buffers visiting deleted files and directories."
+Removes any expanded subdirectory of deleted directory. If
+`dired-x' is loaded and `dired-clean-up-buffers-too' is non-nil,
+also offers to kill buffers visiting deleted files and
+directories. Similarly, if `dired-x' is loaded and
+`dired-clean-confirm-killing-deleted-buffers is nil, kill the
+buffers without asking.'"
   (save-excursion (and (cdr dired-subdir-alist)
-		       (dired-goto-subdir fn)
-		       (dired-kill-subdir)))
+                       (dired-goto-subdir fn)
+                       (dired-kill-subdir)))
   ;; Offer to kill buffer of deleted file FN.
   (when (and (featurep 'dired-x) dired-clean-up-buffers-too)
     (let ((buf (get-file-buffer fn)))
       (and buf
-           (funcall #'y-or-n-p
-                    (format "Kill buffer of %s, too? "
-                            (file-name-nondirectory fn)))
+           (or (not dired-clean-confirm-killing-deleted-buffers)
+               (funcall #'y-or-n-p
+                        (format "Kill buffer of %s, too? "
+                                (file-name-nondirectory fn))))
            (kill-buffer buf)))
     (let ((buf-list (dired-buffers-for-dir (expand-file-name fn))))
       (and buf-list
-           (y-or-n-p (format "Kill Dired buffer%s of %s, too? "
-                             (dired-plural-s (length buf-list))
-                             (file-name-nondirectory fn)))
+           (or (not dired-clean-confirm-killing-deleted-buffers)
+               (y-or-n-p (format "Kill Dired buffer%s of %s, too? "
+                                 (dired-plural-s (length buf-list))
+                                 (file-name-nondirectory fn))))
            (dolist (buf buf-list)
              (kill-buffer buf))))))
 
-- 
2.14.1