bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Dmitry Gutov
Subject: bug#54025: 27.2; dired-do-find-regexp skips occurences
Date: Mon, 21 Feb 2022 02:35:24 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0

Hi!

On 16.02.2022 13:40, Петров Андрей wrote:
5. Go back to dired buffer and try searching for "aaa" again.

   Now*xref*  does not contain 3.txt file although it has an occurence of
   "aaa".
/home/andrey/3/1.txt
     1: aaa
     /home/andrey/3/2.txt
     1: aaa
After saving 3.txt and repeating the search*xref* buffers shows all 3
   entries as expected.

Please take a look into `xref-revert-buffer' (g) inside*xref*  buffer
also. It seems that it shows only occurences of the first file.

The reason this happens is because xref-matches-in-files uses the contents of open buffers to verify the regexp matches, and to show the (possibly syntax-highlighted) text in matches. The fact that such buffers can be modified and unsaved is obviously a problem.

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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]