GNU bug report logs - #51711
28.0.60; rgrep fails to pass the search directory to rgrep-default-command

Previous Next

Package: emacs;

Reported by: Phil Sainty <psainty <at> orcon.net.nz>

Date: Tue, 9 Nov 2021 10:03:01 UTC

Severity: normal

Found in version 28.0.60

Full log


View this message in rfc822 format

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Phil Sainty <psainty <at> orcon.net.nz>, 51711 <at> debbugs.gnu.org
Subject: bug#51711: 28.0.60; rgrep fails to pass the search directory to rgrep-default-command
Date: Thu, 11 Nov 2021 03:17:46 +0300
Hi!

On 09.11.2021 13:02, Phil Sainty wrote:
> This was intentionally changed in commit c6ee95ddeef:
> 
> https://git.savannah.gnu.org/cgit/emacs.git/commit?id=c6ee95ddeefc17410e15090539d0cb220ab6947c 
> 
> 
>         (setq dir (file-name-as-directory (expand-file-name dir)))
> -      (let ((command (rgrep-default-command regexp files dir)))
> +      (let ((command (rgrep-default-command regexp files nil)))
> 
> It's not clear to me why this was done, but rgrep-default-command
> cannot produce the correct output if it isn't given the search
> directory.  In particular, rgrep-find-ignored-directories and
> rgrep-find-ignored-files no longer work as expected, if the
> directory is not passed, for grep-find-ignored-directories and
> grep-find-ignored-files values using the cons cell format, as
> the functions specified need to know the search directory.

The effect on the *-ignores function is something we all have missed, alas.

This only matters when grep-find-ignored-directories or 
grep-find-ignored-files have been customized to cons values with 
functions, right?

> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20719#22 may be the
> justification ("it makes the last argument to rgrep-default-command
> look superfluous."), but that's definitely not true.
> 
> I don't have my head around the other changes made for bug#20719
> and so it's not clear to me whether fixing this is as simple as
> reverting that one line, or if doing so will cause some other
> regression.

It would replace "." in the resulting command with the absolute name of 
the directory, which would affect the output, for one thing.

> CCing Dmitry.  Can you recall specifically why that line was changed?

Does the below patch work for you? I suppose the answer depends on 
whether the functions in the customized car values will known what to do 
with ".".


diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index ec2850737c..8cc3e57378 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -1218,7 +1218,7 @@ rgrep
 				   grep-find-command)))
 	    (compilation-start regexp 'grep-mode))
       (setq dir (file-name-as-directory (expand-file-name dir)))
-      (let ((command (rgrep-default-command regexp files nil)))
+      (let ((command (rgrep-default-command regexp files ".")))
 	(when command
 	  (if confirm
 	      (setq command




This bug report was last modified 3 years and 216 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.