Subject: Re: bug#54025: 27.2; dired-do-find-regexp skips occurences

From: Eli Zaretskii <[email-masked]>
Date: Mon, 21 Feb 2022 05:33:21 +0200

> Date: Mon, 21 Feb 2022 02:35:24 +0200
> From: Dmitry Gutov <[email-masked]>
> 
> I suggest we simply add a check before doing a search, which will remind 
> you to save any such buffers. It will need to be added to 
> project-find-regexp as well, naturally. Something like the patch below.
> 
> What do you think?
> 
> diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
> index 41c45b4e51..c3b1b620bb 100644
> --- a/lisp/dired-aux.el
> +++ b/lisp/dired-aux.el
> @@ -3266,6 +3266,12 @@ dired-do-find-regexp
>     (require 'xref)
>     (defvar grep-find-ignored-files)
>     (declare-function rgrep-find-ignored-directories "grep" (dir))
> +  (save-some-buffers)
> +  (or (not (memq t (mapcar (lambda (buf)
> +                             (and (buffer-file-name buf)
> +                                  (buffer-modified-p buf)))
> +                           (buffer-list))))
> +      (user-error "Modified buffers exist; aborting"))
>     (let* ((marks (dired-get-marked-files nil nil nil nil t))
>            (ignores (nconc (mapcar
>                             #'file-name-as-directory

I'd rather we gave the user the choice to either abort or proceed.  It
is not clear that the fact we search buffers cannot be a useful
feature in some situations.