diff options
author | Christopher Thorne <c.thorne@reckondigital.com> | 2019-04-11 23:51:13 +0300 |
---|---|---|
committer | Juri Linkov <juri@linkov.net> | 2019-04-11 23:51:13 +0300 |
commit | de238b39e335c6814283faa171b35145f124edf2 (patch) | |
tree | 37d45836bc976f0b79ed69f54b31dd792414394d /lisp/progmodes | |
parent | 382a508ed21e4f12ace9f8871818e25235e8f05e (diff) | |
download | emacs-de238b39e335c6814283faa171b35145f124edf2.tar.gz |
Fix rgrep in dired using directory for search file pattern
* lisp/progmodes/grep.el (grep-read-files): Allow major modes to
define file name to use for default search pattern.
Add non-directory file at point as default search pattern candidate.
* lisp/dired.el (dired-grep-read-files): Use non-directory file at
point for grep file name pattern. (Bug#34621)
Copyright-paperwork-exempt: yes
Diffstat (limited to 'lisp/progmodes')
-rw-r--r-- | lisp/progmodes/grep.el | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index c0f47159c95..8c7a58fd8bd 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -959,8 +959,16 @@ substitution string. Note dynamic scoping of variables.") The pattern can include shell wildcards. As whitespace triggers completion when entering a pattern, including it requires quoting, e.g. `\\[quoted-insert]<space>'." - (let* ((bn (or (buffer-file-name) - (replace-regexp-in-string "<[0-9]+>\\'" "" (buffer-name)))) + (let* ((grep-read-files-function (get major-mode 'grep-read-files)) + (file-name-at-point + (run-hook-with-args-until-success 'file-name-at-point-functions)) + (bn (if grep-read-files-function + (funcall grep-read-files-function) + (or (if (and (stringp file-name-at-point) + (not (file-directory-p file-name-at-point))) + file-name-at-point) + (buffer-file-name) + (replace-regexp-in-string "<[0-9]+>\\'" "" (buffer-name))))) (fn (and bn (stringp bn) (file-name-nondirectory bn))) |