changeset 86354:29047758dd89

(grep-process-setup): Set envvar "TERM" to "emacs-grep". Set envvar "GREP_OPTIONS" to "--color=auto" instead of "--color=always".
author Juri Linkov <juri@jurta.org>
date Fri, 23 Nov 2007 00:32:05 +0000
parents 480a058ecb2f
children a5e1b70f3ddf
files lisp/progmodes/grep.el
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/grep.el	Thu Nov 22 22:12:22 2007 +0000
+++ b/lisp/progmodes/grep.el	Fri Nov 23 00:32:05 2007 +0000
@@ -371,11 +371,16 @@
   (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t))
     (grep-compute-defaults))
   (when (eq grep-highlight-matches t)
-    ;; Modify `process-environment' locally bound in `compilation-start'
-    (setenv "GREP_OPTIONS" (concat (getenv "GREP_OPTIONS") " --color=always"))
-    ;; for GNU grep 2.5.1
+    ;; `setenv' modifies `process-environment' let-bound in `compilation-start'
+    ;; Any TERM except "dumb" allows GNU grep to use `--color=auto'
+    (setenv "TERM" "emacs-grep")
+    ;; `--color=auto' emits escape sequences on a tty rather than on a pipe,
+    ;; thus allowing to use multiple grep filters on the command line
+    ;; and to output escape sequences only on the final grep output
+    (setenv "GREP_OPTIONS" (concat (getenv "GREP_OPTIONS") " --color=auto"))
+    ;; GREP_COLOR is used in GNU grep 2.5.1, but deprecated in later versions
     (setenv "GREP_COLOR" "01;31")
-    ;; for GNU grep 2.5.1-cvs
+    ;; 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"))
   (set (make-local-variable 'compilation-exit-message-function)
        (lambda (status code msg)