* progmodes/grep.el (grep-regexp-alist): Use more-accurate regexp.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 26 Sep 2014 18:32:48 +0000 (11:32 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 26 Sep 2014 18:32:48 +0000 (11:32 -0700)
Do not match file names that end in '/', as they cannot be 'grep'
hits nowadays.  This prevents confusion when 'grep -r' reports a
match in a file whose basename is ':12345:'.  Conversely, do not
require exactly the same sequence of spaces and tabs after both
colons, and allow spaces or tabs before the second colon, as per
the POSIX spec for 'grep' output.

lisp/ChangeLog
lisp/progmodes/grep.el

index 4c4941d982d748cb995adb3da3de9800c6fc92e5..8586d59b3ad4f85381c8cb43a11499fabba2ba58 100644 (file)
@@ -1,3 +1,13 @@
+2014-09-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * progmodes/grep.el (grep-regexp-alist): Use more-accurate regexp.
+       Do not match file names that end in '/', as they cannot be 'grep'
+       hits nowadays.  This prevents confusion when 'grep -r' reports a
+       match in a file whose basename is ':12345:'.  Conversely, do not
+       require exactly the same sequence of spaces and tabs after both
+       colons, and allow spaces or tabs before the second colon, as per
+       the POSIX spec for 'grep' output.
+
 2014-09-26  Leo Liu  <sdl.web@gmail.com>
 
        Add cl-parse-integer based on parse-integer (Bug#18557)
index 47d92e70c5f634d19d6effab08616c7ffd731320..fd48adc70c654477737059997c402fd5d9d7e569 100644 (file)
@@ -343,16 +343,11 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
 ;;;###autoload
 (defconst grep-regexp-alist
   '(
-    ;; Rule to match column numbers is commented out since no known grep
-    ;; produces them
-    ;; ("^\\(.+?\\)\\(:[ \t]*\\)\\([1-9][0-9]*\\)\\2\\(?:\\([1-9][0-9]*\\)\\(?:-\\([1-9][0-9]*\\)\\)?\\2\\)?"
-    ;;  1 3 (4 . 5))
-    ;; Note that we want to use as tight a regexp as we can to try and
-    ;; handle weird file names (with colons in them) as well as possible.
-    ;; E.g. we use [1-9][0-9]* rather than [0-9]+ so as to accept ":034:"
-    ;; in file names.
-    ("^\\(.+?\\)\\(:[ \t]*\\)\\([1-9][0-9]*\\)\\2"
-     1 3
+    ;; Use a tight regexp to handle weird file names (with colons
+    ;; in them) as well as possible.  E.g., use [1-9][0-9]* rather
+    ;; than [0-9]+ so as to accept ":034:" in file names.
+    ("^\\(.*?[^/\n]\\):[ \t]*\\([1-9][0-9]*\\)[ \t]*:"
+     1 2
      ;; Calculate column positions (col . end-col) of first grep match on a line
      ((lambda ()
        (when grep-highlight-matches