* lisp/progmodes/grep.el (grep-process-setup): Allow moving
point to a specific place after finishing the grep command.
(grep-mode): Use it to restore point after traversing the history.
(grep--history-point): New internal variable.
(grep--save-history, grep-forward-history): Use it to restore
the point.
* doc/emacs/building.texi (Grep Searching): Mention the
`r'/`l' commands.
* lisp/progmodes/grep.el (grep-forward-history): New command.
(grep-backward-history): Ditto.
(grep--save-buffers): New function.
(grep): Use it to record the history.
(grep--command-history, grep--history-inhibit)
(grep--history-place): New internal variables for the grep
history (bug#22627).
* lisp/progmodes/grep.el (grep-ask-about-save): New variable (bug#96).
(grep, lgrep, rgrep): Use it (bug#96).
* doc/emacs/building.texi (Grep Searching): Document
`grep-save-buffers'.
* lisp/progmodes/grep.el (grep-save-buffers): Rename from
`grep-ask-about-save'.
(grep--save-buffers): New function.
(grep, lgrep, rgrep): Use it.
* lisp/progmodes/grep.el (rgrep-default-command): Remove nil from
the list produced according to grep-find-ignored-directories,
before passing it to Find/Grep invocation. (Bug#21548)
* lisp/progmodes/grep.el (grep-template, grep-find-template):
Update the description for <C>. (Bug#20728)
(grep-compute-defaults): Don't add the --color option to
grep-options. Only add it to grep-command.
(grep-expand-keywords): Expand the env value opts into <C>.
(grep-expand-template): Replace cf in the env with the opts list,
that can include -i and --color.
* lisp/progmodes/xref.el (xref-collect-matches): Do not remove
"--color=always" from the template, because we don't have to.
* lisp/cedet/semantic/symref/grep.el
(semantic-symref-grep-use-template): Update a comment.
* lisp/progmodes/grep.el (grep-compute-defaults): Restore <D>
instead of '.' in grep-find-template (bug#20719).
(rgrep): Pass nil as the directory to rgrep-default-command.
* lisp/progmodes/grep.el (grep-expand-keywords): Use '.' as the
default value for DIR.
* lisp/progmodes/xref.el (xref-collect-matches): Drop the
workaround.
* lisp/progmodes/grep.el (rgrep-default-command):
Extract from `rgrep'.
* lisp/progmodes/xref.el (xref-collect-references): Split from
`xref-collect-matches'. Only handle the case of symbol search.
(xref-collect-matches): Instead of Semantic Symref, use
`rgrep-default-command', to take advantage of its directory and
file ignore settings.
(xref--collect-match): Remove the last argument, leaving the
regexp construction up to the caller.
* lisp/progmodes/elisp-mode.el (elisp--xref-find-matches):
Change to take the xref-collect- function to use as an argument.
(elisp-xref-find): Update accordingly.
* lisp/progmodes/etags.el (etags--xref-find-matches)
(etags-xref-find): Same.
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.
The GREP_OPTIONS environment variable is planned to be marked
obsolescent in GNU grep, due to problems in its use, so stop
relying on it.
* progmodes/grep.el (grep-highlight-matches): Document this.
(grep-process-setup): Do not set GREP_OPTIONS.
(grep-compute-defaults): Use an explicit --color option if supported.
(read-regexp-suggestions): New function.
(read-regexp): Use `read-regexp-defaults-function' to get default values.
Use `read-regexp-suggestions'. Add non-empty default to history
for empty input.
(occur-read-regexp-defaults-function): Remove function.
(occur-read-primary-args): Use `regexp-history-last' instead of
`occur-read-regexp-defaults-function'.
* lisp/hi-lock.el (hi-lock-read-regexp-defaults-function): Remove function.
(hi-lock-line-face-buffer, hi-lock-face-buffer)
(hi-lock-face-phrase-buffer): Use `regexp-history-last' instead of
`hi-lock-read-regexp-defaults-function'. Doc fix.
(hi-lock-face-symbol-at-point): Replace `find-tag-default-as-regexp'
with `find-tag-default-as-symbol-regexp'. Doc fix.
(hi-lock-read-regexp-defaults): Remove function.
(hi-lock-regexp-okay): Add check for null.
* lisp/progmodes/grep.el (grep-read-regexp): Use `grep-tag-default' for
the arg DEFAULTS. Move formatting of the prompt to `read-regexp'.
* lisp/subr.el (find-tag-default-as-symbol-regexp): New function.
(find-tag-default-as-regexp): Move symbol regexp formatting to
`find-tag-default-as-symbol-regexp'.
Fixes: debbugs:14405
of `read-from-minibuffer' when `regexp-flag' is non-nil.
(occur-read-primary-args): Use `read-regexp' instead of
`read-string'.
(multi-occur-in-matching-buffers): Use `read-regexp' instead of
`read-from-minibuffer'.
* lisp/isearch.el (isearch-occur): Use `read-regexp' instead of
`read-string'.
* lisp/dired.el (dired-read-regexp): Use `read-regexp' instead of
`read-from-minibuffer'.
* lisp/progmodes/grep.el (grep-read-regexp): Use `read-regexp' instead
of `read-string'.
Fixes: debbugs:7567
* lisp/progmodes/grep.el (rgrep): Tweak the find command line so
that directories matching `grep-find-ignored-files' won't be
pruned.
Fixes: debbugs:10351
* lisp/progmodes/compile.el (compilation-next-error-function):
Respect compilation-first-column in the "*compilation*" buffer.
* lisp/progmodes/grep.el (grep-first-column): New variable.