all messages for Emacs-related lists mirrored at yhetil.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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.