1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-02 08:22:22 +00:00

* lisp/progmodes/grep.el: More fixes for 'lgrep' (bug#23590)

* lisp/progmodes/grep.el (grep-expand-template): Add new arg 'more-opts'.
(grep-use-directories-skip): New variable.
(lgrep): Set 'grep-use-directories-skip' to the result of 'grep-probe'.
Use "--directories=skip" when 'grep-use-directories-skip' is t.
This commit is contained in:
Juri Linkov 2020-10-14 11:45:26 +03:00
parent 1ee5a4cb1a
commit b13e0c1501

View File

@ -959,10 +959,10 @@ The substitution is based on variables bound dynamically, and
these include `opts', `dir', `files', `null-device', `excl' and
`regexp'.")
(defun grep-expand-template (template &optional regexp files dir excl)
(defun grep-expand-template (template &optional regexp files dir excl more-opts)
"Expand grep COMMAND string replacing <C>, <D>, <F>, <R>, and <X>."
(let* ((command template)
(env `((opts . ,(let (opts)
(env `((opts . ,(let ((opts more-opts))
(when (and case-fold-search
(isearch-no-upper-case-p regexp t))
(push "-i" opts))
@ -1058,6 +1058,8 @@ REGEXP is used as a string in the prompt."
(or (cdr (assoc files grep-files-aliases))
files))))
(defvar grep-use-directories-skip 'auto-detect)
;;;###autoload
(defun lgrep (regexp &optional files dir confirm)
"Run grep, searching for REGEXP in FILES in directory DIR.
@ -1103,6 +1105,12 @@ command before it's run."
(if (string= command grep-command)
(setq command nil))
(setq dir (file-name-as-directory (expand-file-name dir)))
(unless (or (not grep-use-directories-skip) (eq grep-use-directories-skip t))
(setq grep-use-directories-skip
(grep-probe grep-program
`(nil nil nil "--directories=skip" "foo"
,null-device)
nil 1)))
(setq command (grep-expand-template
grep-template
regexp
@ -1119,13 +1127,10 @@ command before it's run."
(shell-quote-argument
(cdr ignore))))))
grep-find-ignored-files
" --exclude=")))))
" --exclude=")))
(and (eq grep-use-directories-skip t)
'("--directories=skip"))))
(when command
(when (grep-probe grep-program
`(nil nil nil "--directories=skip" "foo"
,null-device)
nil 1)
(setq command (concat command " --directories=skip")))
(if confirm
(setq command
(read-from-minibuffer "Confirm: "