X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/c5d9b0ff37198b175bcf4554533c5239d5fcc570..4f124fb5287c38e0f8e507a2b8a5edd4d0cfb42c:/lisp/progmodes/grep.el diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index e4cd0c59da..4d9e05109a 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -64,8 +64,8 @@ will be parsed and highlighted as soon as you try to move to them." :version "21.4" :group 'grep) -(defcustom grep-highlight-matches t - "*Non-nil to use special markers to highlight grep matches. +(defcustom grep-highlight-matches 'auto-detect + "If t, use special markers to highlight grep matches. Some grep programs are able to surround matches with special markers in grep output. Such markers can be used to highlight @@ -74,8 +74,13 @@ matches in grep mode. This option sets the environment variable GREP_COLOR to specify markers for highlighting and GREP_OPTIONS to add the --color option in front of any explicit grep options before starting -the grep." - :type 'boolean +the grep. + +The default value of this variable is set up by `grep-compute-defaults'; +call that function before using this variable in your program." + :type '(choice (const :tag "Do not highlight matches with grep markers" nil) + (const :tag "Highlight matches with grep markers" t) + (other :tag "Not Set" auto-detect)) :version "21.4" :group 'grep) @@ -110,7 +115,6 @@ necessary if the grep program used supports the `-H' option. The default value of this variable is set up by `grep-compute-defaults'; call that function before using this variable in your program." - :type 'boolean :type '(choice (const :tag "Do Not Append Null Device" nil) (const :tag "Append Null Device" t) (other :tag "Not Set" auto-detect)) @@ -181,7 +185,7 @@ See `compilation-error-screen-columns'" (let ((map (cons 'keymap compilation-minor-mode-map))) (define-key map " " 'scroll-up) (define-key map "\^?" 'scroll-down) - (define-key map "\C-c\C-f" 'next-error-follow-mode) + (define-key map "\C-c\C-f" 'next-error-follow-minor-mode) ;; This is intolerable -- rms ;;; (define-key map [remap next-line] 'compilation-next-error) @@ -333,7 +337,9 @@ This variable's value takes effect when `grep-compute-defaults' is called.") (defun grep-process-setup () "Setup compilation variables and buffer for `grep'. Set up `compilation-exit-message-function' and run `grep-setup-hook'." - (when grep-highlight-matches + (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")) (setenv "GREP_COLOR" "01;41")) @@ -415,7 +421,18 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'." (format "%s -type f -print | xargs %s " find-program gcmd)) (t (format "%s -type f -exec %s {} %s \\;" - find-program gcmd null-device))))))) + find-program gcmd null-device)))))) + (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t)) + (setq grep-highlight-matches + (with-temp-buffer + (and (equal (condition-case nil + (call-process grep-program nil t nil "--help") + (error nil)) + 0) + (progn + (goto-char (point-min)) + (search-forward "--color" nil t)) + t))))) (defun grep-default-command () (let ((tag-default @@ -483,7 +500,6 @@ temporarily highlight in visited source lines." command-args) 'grep-mode nil highlight-regexp))) -;;;###autoload (autoload 'grep-mode "grep" nil t) (define-compilation-mode grep-mode "Grep" "Sets `grep-last-buffer' and `compilation-window-height'." (setq grep-last-buffer (current-buffer)) @@ -599,5 +615,5 @@ those sub directories of DIR." (provide 'grep) -;;; arch-tag: 5a5b9169-a79d-4f38-9c38-f69615f39c4d +;; arch-tag: 5a5b9169-a79d-4f38-9c38-f69615f39c4d ;;; grep.el ends here