]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a new grep-match-regexp variable
authorSimon Lang <Simon.lang@outlook.com>
Sun, 27 Sep 2020 12:55:22 +0000 (14:55 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 27 Sep 2020 12:55:29 +0000 (14:55 +0200)
* doc/emacs/building.texi (Grep Searching): Document it.

* lisp/progmodes/grep.el (grep-match-regexp): New variable (bug#41766).
(grep-filter): Use it.

doc/emacs/building.texi
etc/NEWS
lisp/progmodes/grep.el

index 7074bd45d71c65090ba858580df3d6f6dc5b8a72..5199724e69d5e2fef3e4ce4675c152fb8552acd3 100644 (file)
@@ -427,11 +427,16 @@ M-n}}, @key{RET}, and so forth, just like compilation errors.
 @xref{Compilation Mode}, for detailed description of commands and key
 bindings available in the @file{*grep*} buffer.
 
+@vindex grep-match-regexp}
   Some grep programs accept a @samp{--color} option to output special
 markers around matches for the purpose of highlighting.  You can make
 use of this feature by setting @code{grep-highlight-matches} to
 @code{t}.  When displaying a match in the source buffer, the exact
 match will be highlighted, instead of the entire source line.
+Highlighting is provided via matching the @acronym{ANSI} escape
+sequences emitted by @command{grep}.  The matching of the sequences is
+controlled by @code{grep-match-regexp}, which can be customized to
+accommodate different @command{grep} programs.
 
   As with compilation commands (@pxref{Compilation}), while the grep
 command runs, the mode line shows the running number of matches found
index 202cd689d335e1fb6874010074e9dc27ddf9ea22..61618af780adcf62284c2174c4db9c79f14c8f80 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -518,6 +518,15 @@ take the actual screenshot, and defaults to "ImageMagick import".
 A server entry retrieved by auth-source can request a desired smtp
 authentication mechanism by setting a value for the key 'smtp-auth'.
 
+** Grep
+
++++
+*** New variable 'grep-match-regexp' matches grep markers to highlight.
+grep emits SGR ANSI escape sequences to color its output.  The new variable
+'grep-match-regexp' holds the regular expression to match the appropriate
+markers in order to provide highlighting in the source buffer.  The variable
+can be customized to accommodate other grep-like tools.
+
 ** Help
 
 +++
index c71a90344ff0cbb014d532a6b4cbb0c3df1e1b6a..279eb4d54b16d5f1d75167aad95c0054265cd61f 100644 (file)
@@ -100,6 +100,13 @@ To change the default value, use \\[customize] or call the function
   :set #'grep-apply-setting
   :version "22.1")
 
+(defcustom grep-match-regexp "\033\\[0?1;31m\\(.*?\\)\033\\[[0-9]*m"
+  "Regular expression matching grep markers to highlight.
+It matches SGR ANSI escape sequences which are emitted by grep to
+color its output.  This variable is used in `grep-filter'."
+  :type 'regexp
+  :version "28.1")
+
 (defcustom grep-scroll-output nil
   "Non-nil to scroll the *grep* buffer window as output appears.
 
@@ -590,7 +597,7 @@ This function is called from `compilation-filter-hook'."
       (when (< (point) end)
         (setq end (copy-marker end))
         ;; Highlight grep matches and delete marking sequences.
-        (while (re-search-forward "\033\\[0?1;31m\\(.*?\\)\033\\[[0-9]*m" end 1)
+        (while (re-search-forward grep-match-regexp end 1)
           (replace-match (propertize (match-string 1)
                                      'face nil 'font-lock-face grep-match-face)
                          t t)