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:
parent
1ee5a4cb1a
commit
b13e0c1501
@ -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: "
|
||||
|
Loading…
Reference in New Issue
Block a user