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

From: Eli Zaretskii <[email-masked]>
Date: Wed, 06 Sep 2017 19:36:48 +0300

> From: Alex Branham <[email-masked]>
> Date: Wed, 06 Sep 2017 10:42:37 -0500
> 
> 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.

Thanks.  A few comments:

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

This log entry makes it sound as if similar changes were made in both
dired.el and dired-x.el, which is not what your changes do.  The entry
for dired-x.el should only say this:

  * lisp/dired-x.el (dired-clean-confirm-killing-deleted-buffers): New variable.

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

Why did you need this defvar?

>  (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.'"

We use the US English convention of leaving 2 spaces between
sentences.  Also, I'd simplify the last sentence to avoid repeating
what the previous one says, and perhaps even make one sentence out of
the two.

>    (save-excursion (and (cdr dired-subdir-alist)
> -		       (dired-goto-subdir fn)
> -		       (dired-kill-subdir)))
> +                       (dired-goto-subdir fn)
> +                       (dired-kill-subdir)))

Please don't change whitespace where you aren't changing code.

> +           (or (not dired-clean-confirm-killing-deleted-buffers)
> +               (funcall #'y-or-n-p
> +                        (format "Kill buffer of %s, too? "
> +                                (file-name-nondirectory fn))))

Isn't it better to use this instead:

      (and dired-clean-confirm-killing-deleted-buffers
           (funcall ...

?  What you wrote is akin to double negation, IMO.

Thanks again for working on this.