|
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.txt1: aaa /home/andrey/3/2.txt 1: aaaAfter saving 3.txt and repeating the search*xref* buffers shows all 3entries 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
[Prev in Thread] | Current Thread | [Next in Thread] |