summaryrefslogtreecommitdiff
path: root/lisp/progmodes/grep.el
diff options
context:
space:
mode:
authorJuri Linkov <juri@jurta.org>2011-09-05 11:20:02 +0300
committerJuri Linkov <juri@jurta.org>2011-09-05 11:20:02 +0300
commitf62bd846552a090f3ba5e136d6d9cdb4c07ed7be (patch)
treeb199c66feaaaa79217d7fbcd5c5f11f16875f68e /lisp/progmodes/grep.el
parent045820ecd3b3f4396474fae297945d58d9187e6a (diff)
downloademacs-f62bd846552a090f3ba5e136d6d9cdb4c07ed7be.tar.gz
Grep related fixes.
* etc/grep.txt: Add `eval' to the Local Variables section that emulates `grep-filter'. * lisp/progmodes/grep.el (grep-filter): Avoid incomplete processing by keeping point where processing of grep matches begins, and continue to delete remaining escape sequences from the same point. (grep-filter): Make leading zero optional in "0?1;31m" because git-grep emits "\033[1;31m" escape sequences unlike expected "\033[01;31m" as GNU Grep does. (grep-process-setup): Replace obsolete "ml=" with newer "sl=". Fixes: debbugs:9408
Diffstat (limited to 'lisp/progmodes/grep.el')
-rw-r--r--lisp/progmodes/grep.el9
1 files changed, 5 insertions, 4 deletions
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index 709f01444bf..eeebcc6648f 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -459,7 +459,7 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
;; GREP_COLOR is used in GNU grep 2.5.1, but deprecated in later versions
(setenv "GREP_COLOR" "01;31")
;; GREP_COLORS is used in GNU grep 2.5.2 and later versions
- (setenv "GREP_COLORS" "mt=01;31:fn=:ln=:bn=:se=:ml=:cx=:ne"))
+ (setenv "GREP_COLORS" "mt=01;31:fn=:ln=:bn=:se=:sl=:cx=:ne"))
(set (make-local-variable 'compilation-exit-message-function)
(lambda (status code msg)
(if (eq status 'exit)
@@ -480,20 +480,21 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
This function is called from `compilation-filter-hook'."
(save-excursion
(forward-line 0)
- (let ((end (point)))
+ (let ((end (point)) beg)
(goto-char compilation-filter-start)
(forward-line 0)
+ (setq beg (point))
;; Only operate on whole lines so we don't get caught with part of an
;; escape sequence in one chunk and the rest in another.
(when (< (point) end)
(setq end (copy-marker end))
;; Highlight grep matches and delete marking sequences.
- (while (re-search-forward "\033\\[01;31m\\(.*?\\)\033\\[[0-9]*m" end 1)
+ (while (re-search-forward "\033\\[0?1;31m\\(.*?\\)\033\\[[0-9]*m" end 1)
(replace-match (propertize (match-string 1)
'face nil 'font-lock-face grep-match-face)
t t))
;; Delete all remaining escape sequences
- (goto-char compilation-filter-start)
+ (goto-char beg)
(while (re-search-forward "\033\\[[0-9;]*[mK]" end 1)
(replace-match "" t t))))))