From 56c6a28d018e8735b14e9bf170c3867cc48374fc Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 26 Sep 2014 11:32:48 -0700 Subject: [PATCH] * 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. --- lisp/ChangeLog | 10 ++++++++++ lisp/progmodes/grep.el | 15 +++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4c4941d982d..8586d59b3ad 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2014-09-26 Paul Eggert + + * 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 Add cl-parse-integer based on parse-integer (Bug#18557) diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 47d92e70c5f..fd48adc70c6 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -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 -- 2.11.4.GIT