Subject: Re: bug#75626: 31.0.50; Dired misses or double-processes files when auto-revert-mode is enabled

From: Michael Heerdegen <[email-masked]>
Date: Mon, 20 Jan 2025 02:51:17 +0100

Tassilo Horn <[email-masked]> writes:

> Good idea.  I've tried this simple patch and it fixes the issue for me.
>
> diff --git a/lisp/dired.el b/lisp/dired.el
> index bab5e833a76..1152d85f149 100644
> --- a/lisp/dired.el
> +++ b/lisp/dired.el
> @@ -1289,6 +1289,10 @@ dired-buffer-stale-p
>          ;; Do not auto-revert when the dired buffer can be currently
>          ;; written by the user as in `wdired-mode'.
>          buffer-read-only
> +         ;; When a dired operation using dired-map-over-marks is in
> +         ;; progress, inhibit-read-only is set and we must not

Better say "bound" please.

> +         ;; auto-revert.
> +         (null inhibit-read-only)

And use `not' here, since we are testing a boolean valued flag.

>          (dired-directory-changed-p dirname))))
>
>  (defcustom dired-auto-revert-buffer nil
>
> Probably testing inhibit-read-only is not TRT but the expansion of
> dired-map-over-marks should explicitly let-bind some new
> dired--map-over-marks-in-progress variable to make it more explicit...

Yes.  OTOH it's not bad either.  `inhibit-read-only' bound (together
with buffer-read-only which we already have) is a good indicator for
that some operation is running and we should not auto revert.

Unless I'm missing something I would prefer this solution.

Michael.