unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#6114: 23.1; grep-read-files does incorrect wildcard match
@ 2010-05-05 19:22 S Boucher
  2010-05-06 20:50 ` Juri Linkov
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: S Boucher @ 2010-05-05 19:22 UTC (permalink / raw)
  To: 6114


This bug is for (defun grep-read-files (regexp) in file grep.el.

In grep-read-files, there's a call to (wildcard-to-regexp (cdr alias))
with the assumption that (cdr alias) is a single pattern.  However,
the variable grep-files-aliases actually can have multiple patterns
for each alias.  So, the multi-pattern aliases, such as for "cc",
cannot correctly match:

(defcustom grep-files-aliases
  '(("asm" .    "*.[sS]")
    ("c" .     "*.c")
    ("cc" .    "*.cc *.cxx *.cpp *.C *.CC *.c++")
    ... etc...


In GNU Emacs 23.1.1 (i686-pc-linux-gnu, GTK+ Version 2.16.1)
 of 2009-11-24 on stephbuntu
Windowing system distributor `The X.Org Foundation', version 11.0.10600000
configured using `configure  '--prefix=/ws/EMACS/soft''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_CA.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  shell-dirtrack-mode: t
  dynamic-completion-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-p

Recent messages:
Quit
Back to top level.
Mark set
Searched 1 buffer; 6 matches for `grep-files-aliases' [2 times]
uncompressing custom.el.gz...done [2 times]
Composing main Info directory...done
Found `bugs' in Index.  (2 total; use `,' for next)
Making completion list... [2 times]
Quit
Making completion list...










^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#6114: 23.1; grep-read-files does incorrect wildcard match
  2010-05-05 19:22 bug#6114: 23.1; grep-read-files does incorrect wildcard match S Boucher
@ 2010-05-06 20:50 ` Juri Linkov
  2010-05-21  0:28 ` Juri Linkov
  2011-12-05  3:05 ` bug#6114: this bug is still present in Emacs version 23.3.1! Mark Lillibridge
  2 siblings, 0 replies; 8+ messages in thread
From: Juri Linkov @ 2010-05-06 20:50 UTC (permalink / raw)
  To: S Boucher; +Cc: 6114

> This bug is for (defun grep-read-files (regexp) in file grep.el.
>
> In grep-read-files, there's a call to (wildcard-to-regexp (cdr alias))
> with the assumption that (cdr alias) is a single pattern.  However,
> the variable grep-files-aliases actually can have multiple patterns
> for each alias.  So, the multi-pattern aliases, such as for "cc",
> cannot correctly match:
>
> (defcustom grep-files-aliases
>   '(("asm" .    "*.[sS]")
>     ("c" .     "*.c")
>     ("cc" .    "*.cc *.cxx *.cpp *.C *.CC *.c++")
>     ... etc...

Evaluating

  (wildcard-to-regexp "*.cc *.cxx *.cpp *.C *.CC *.c++")

returns

  "\\`[^^@]*\\.cc [^^@]*\\.cxx [^^@]*\\.cpp [^^@]*\\.C [^^@]*\\.CC [^^@]*\\.c\\+\\+\\'"

Do you think it should be

  "\\`[^^@]*\\.cc\\|[^^@]*\\.cxx\\|[^^@]*\\.cpp\\|[^^@]*\\.C\\|[^^@]*\\.CC\\|[^^@]*\\.c\\+\\+\\'"

?

-- 
Juri Linkov
http://www.jurta.org/emacs/






^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#6114: 23.1; grep-read-files does incorrect wildcard match
  2010-05-05 19:22 bug#6114: 23.1; grep-read-files does incorrect wildcard match S Boucher
  2010-05-06 20:50 ` Juri Linkov
@ 2010-05-21  0:28 ` Juri Linkov
  2010-05-21 16:20   ` S Boucher
  2011-12-05  3:05 ` bug#6114: this bug is still present in Emacs version 23.3.1! Mark Lillibridge
  2 siblings, 1 reply; 8+ messages in thread
From: Juri Linkov @ 2010-05-21  0:28 UTC (permalink / raw)
  To: S Boucher; +Cc: 6114

> This bug is for (defun grep-read-files (regexp) in file grep.el.
>
> In grep-read-files, there's a call to (wildcard-to-regexp (cdr alias))
> with the assumption that (cdr alias) is a single pattern.  However,
> the variable grep-files-aliases actually can have multiple patterns
> for each alias.  So, the multi-pattern aliases, such as for "cc",
> cannot correctly match:
>
> (defcustom grep-files-aliases
>   '(("asm" .    "*.[sS]")
>     ("c" .     "*.c")
>     ("cc" .    "*.cc *.cxx *.cpp *.C *.CC *.c++")
>     ... etc...

Does this patch do what you want?  (Please note that we have to remove
"*" ("all") because it matches everything.)

=== modified file 'lisp/progmodes/grep.el'
--- lisp/progmodes/grep.el	2010-04-20 00:49:46 +0000
+++ lisp/progmodes/grep.el	2010-05-21 00:27:18 +0000
@@ -781,12 +781,17 @@ (defun grep-read-files (regexp)
 		  (file-name-nondirectory bn)))
 	 (default-alias
 	   (and fn
-		(let ((aliases grep-files-aliases)
+		(let ((aliases (remove (assoc "all" grep-files-aliases)
+				       grep-files-aliases))
 		      alias)
 		  (while aliases
 		    (setq alias (car aliases)
 			  aliases (cdr aliases))
-		    (if (string-match (wildcard-to-regexp (cdr alias)) fn)
+		    (if (string-match (mapconcat
+				       'wildcard-to-regexp
+				       (split-string (cdr alias) nil t)
+				       "\\|")
+				      fn)
 			(setq aliases nil)
 		      (setq alias nil)))
 		  (cdr alias))))

-- 
Juri Linkov
http://www.jurta.org/emacs/





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#6114: 23.1; grep-read-files does incorrect wildcard match
  2010-05-21  0:28 ` Juri Linkov
@ 2010-05-21 16:20   ` S Boucher
  2010-05-21 20:46     ` Juri Linkov
  0 siblings, 1 reply; 8+ messages in thread
From: S Boucher @ 2010-05-21 16:20 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 6114

Tried it.  Seems to work.

Thanks,

--- On Thu, 5/20/10, Juri Linkov <juri@jurta.org> wrote:

> From: Juri Linkov <juri@jurta.org>
> Subject: Re: 23.1; grep-read-files does incorrect wildcard match
> To: "S Boucher" <stbya@yahoo.com>
> Cc: 6114@debbugs.gnu.org
> Received: Thursday, May 20, 2010, 8:28 PM
> > This bug is for (defun
> grep-read-files (regexp) in file grep.el.
> >
> > In grep-read-files, there's a call to
> (wildcard-to-regexp (cdr alias))
> > with the assumption that (cdr alias) is a single
> pattern.  However,
> > the variable grep-files-aliases actually can have
> multiple patterns
> > for each alias.  So, the multi-pattern aliases,
> such as for "cc",
> > cannot correctly match:
> >
> > (defcustom grep-files-aliases
> >   '(("asm" .    "*.[sS]")
> >     ("c" . 
>    "*.c")
> >     ("cc" .    "*.cc
> *.cxx *.cpp *.C *.CC *.c++")
> >     ... etc...
> 
> Does this patch do what you want?  (Please note that
> we have to remove
> "*" ("all") because it matches everything.)
> 
> === modified file 'lisp/progmodes/grep.el'
> --- lisp/progmodes/grep.el    2010-04-20
> 00:49:46 +0000
> +++ lisp/progmodes/grep.el    2010-05-21
> 00:27:18 +0000
> @@ -781,12 +781,17 @@ (defun grep-read-files (regexp)
>           
> (file-name-nondirectory bn)))
>       (default-alias
>         (and fn
> -        (let ((aliases
> grep-files-aliases)
> +        (let ((aliases
> (remove (assoc "all" grep-files-aliases)
> +           
>        
>    grep-files-aliases))
>               
> alias)
>            (while
> aliases
>              (setq
> alias (car aliases)
>             
>   aliases (cdr aliases))
> -            (if
> (string-match (wildcard-to-regexp (cdr alias)) fn)
> +            (if
> (string-match (mapconcat
> +           
>        
>    'wildcard-to-regexp
> +           
>        
>    (split-string (cdr alias) nil t)
> +           
>            "\\|")
> +           
>           fn)
>             
> (setq aliases nil)
>               
> (setq alias nil)))
>            (cdr
> alias))))
> 
> -- 
> Juri Linkov
> http://www.jurta.org/emacs/
> 







^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#6114: 23.1; grep-read-files does incorrect wildcard match
  2010-05-21 16:20   ` S Boucher
@ 2010-05-21 20:46     ` Juri Linkov
  0 siblings, 0 replies; 8+ messages in thread
From: Juri Linkov @ 2010-05-21 20:46 UTC (permalink / raw)
  To: S Boucher; +Cc: 6114-done

> Tried it.  Seems to work.

Thanks, committed.

-- 
Juri Linkov
http://www.jurta.org/emacs/





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#6114: this bug is still present in Emacs version 23.3.1!
  2010-05-05 19:22 bug#6114: 23.1; grep-read-files does incorrect wildcard match S Boucher
  2010-05-06 20:50 ` Juri Linkov
  2010-05-21  0:28 ` Juri Linkov
@ 2011-12-05  3:05 ` Mark Lillibridge
  2011-12-05  5:57   ` Glenn Morris
  2 siblings, 1 reply; 8+ messages in thread
From: Mark Lillibridge @ 2011-12-05  3:05 UTC (permalink / raw)
  To: 6114


Looking at the code I see:

grep.el:778:
(defun grep-read-files (regexp)
  "Read files arg for interactive grep."
  (let* ((bn (or (buffer-file-name)
		 (replace-regexp-in-string "<[0-9]+>\\'" "" (buffer-name))))
	 (fn (and bn
		  (stringp bn)
		  (file-name-nondirectory bn)))
	 (default-alias
	   (and fn
		(let ((aliases grep-files-aliases)
		      alias)
		  (while aliases
		    (setq alias (car aliases)
			  aliases (cdr aliases))
		    (if (string-match (wildcard-to-regexp (cdr alias)) fn)
			(setq aliases nil)
		      (setq alias nil)))
		  (cdr alias))))

    You'll note that the patch mentioned previously in this thread has
not been applied or has been lost at some point!

Please fix.

- Thanks,
  Mark





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#6114: this bug is still present in Emacs version 23.3.1!
  2011-12-05  3:05 ` bug#6114: this bug is still present in Emacs version 23.3.1! Mark Lillibridge
@ 2011-12-05  5:57   ` Glenn Morris
  2011-12-08  4:07     ` Mark Lillibridge
  0 siblings, 1 reply; 8+ messages in thread
From: Glenn Morris @ 2011-12-05  5:57 UTC (permalink / raw)
  To: mark.lillibridge; +Cc: 6114

Mark Lillibridge wrote:

>     You'll note that the patch mentioned previously in this thread has
> not been applied or has been lost at some point!

It was applied to the Emacs trunk 2010-05-21 and will be in Emacs 24.1.
You might like to try a pretest from alpha.gnu.org/gnu/emacs/pretest.

It was never applied to the emacs-23 branch, but there won't be any more
releases from that branch, so it is academic.

(I do encourage people to indicate the fixed version when they close a
bug.)





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#6114: this bug is still present in Emacs version 23.3.1!
  2011-12-05  5:57   ` Glenn Morris
@ 2011-12-08  4:07     ` Mark Lillibridge
  0 siblings, 0 replies; 8+ messages in thread
From: Mark Lillibridge @ 2011-12-08  4:07 UTC (permalink / raw)
  To: Glenn Morris; +Cc: 6114


Glenn Morris <rgm@gnu.org> writes:

>  Mark Lillibridge wrote:
>  
>  >     You'll note that the patch mentioned previously in this thread has
>  > not been applied or has been lost at some point!
>  
>  It was applied to the Emacs trunk 2010-05-21 and will be in Emacs 24.1.
>  You might like to try a pretest from alpha.gnu.org/gnu/emacs/pretest.
>  
>  It was never applied to the emacs-23 branch, but there won't be any more
>  releases from that branch, so it is academic.
>  
>  (I do encourage people to indicate the fixed version when they close a
>  bug.)

    Ah, that explains it.  Emacs 23.3 was released in March 2011 so I
naturally assumed it had this patch.

- Mark





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-12-08  4:07 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-05 19:22 bug#6114: 23.1; grep-read-files does incorrect wildcard match S Boucher
2010-05-06 20:50 ` Juri Linkov
2010-05-21  0:28 ` Juri Linkov
2010-05-21 16:20   ` S Boucher
2010-05-21 20:46     ` Juri Linkov
2011-12-05  3:05 ` bug#6114: this bug is still present in Emacs version 23.3.1! Mark Lillibridge
2011-12-05  5:57   ` Glenn Morris
2011-12-08  4:07     ` Mark Lillibridge

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).