Simplify file pattern query for grep
The original version of `grep-read-files` includes file names in its default values, giving an irritating completion candidate list when used with ivy. Changed this to just let `completing-read` do the completion itself.
This commit is contained in:
parent
7c9f795a38
commit
461f212529
11
init.el
11
init.el
@ -476,7 +476,13 @@
|
|||||||
:commands (rgrep zrgrep)
|
:commands (rgrep zrgrep)
|
||||||
:bind (:map grep-mode-map
|
:bind (:map grep-mode-map
|
||||||
("C-x C-q" . wgrep-change-to-wgrep-mode)
|
("C-x C-q" . wgrep-change-to-wgrep-mode)
|
||||||
("C-c C-c" . wgrep-finish-edit)))
|
("C-c C-c" . wgrep-finish-edit))
|
||||||
|
:config (progn
|
||||||
|
|
||||||
|
;; I am not quite sure why `grep-read-files' is prompting for file
|
||||||
|
;; names when asking for a file pattern, so let's just hook it up
|
||||||
|
;; and replace it with something more straightforward.
|
||||||
|
(advice-add 'grep-read-files :around #'db/grep-read-files)))
|
||||||
|
|
||||||
(use-package winner
|
(use-package winner
|
||||||
:commands (winner-mode winner-undo winner-redo))
|
:commands (winner-mode winner-undo winner-redo))
|
||||||
@ -638,7 +644,8 @@
|
|||||||
db/convert-crlf-to-lf-in-buffer
|
db/convert-crlf-to-lf-in-buffer
|
||||||
db/sync-magit-repos-from-projectile
|
db/sync-magit-repos-from-projectile
|
||||||
db/replace-variables-in-string
|
db/replace-variables-in-string
|
||||||
db/dired-ediff-files))
|
db/dired-ediff-files
|
||||||
|
db/grep-read-files))
|
||||||
|
|
||||||
(use-package db-hydras
|
(use-package db-hydras
|
||||||
:commands (hydra-toggle/body
|
:commands (hydra-toggle/body
|
||||||
|
|||||||
@ -500,6 +500,61 @@ From: https://oremacs.com/2017/03/18/dired-ediff/."
|
|||||||
(set-window-configuration wnd))))
|
(set-window-configuration wnd))))
|
||||||
(error "No more than 2 files should be marked"))))
|
(error "No more than 2 files should be marked"))))
|
||||||
|
|
||||||
|
(defun db/grep-read-files (_ regexp)
|
||||||
|
"As for file pattern similar to `grep-read-files' but more direct.
|
||||||
|
|
||||||
|
This function is meant as a replacement for `grep-read-files',
|
||||||
|
replacing it by not calling calling `read-file-name-internal'.
|
||||||
|
|
||||||
|
REGEXP is only used for display at the completion prompt, the
|
||||||
|
same way `grep-read-files' does.
|
||||||
|
|
||||||
|
Also add the default as initial input instead of as default
|
||||||
|
proper. The latter does not play well with my current completion
|
||||||
|
framework, as it always tries to match my input with default
|
||||||
|
entries, even if I want to use the input directly."
|
||||||
|
(let* ((bn (funcall grep-read-files-function))
|
||||||
|
(fn (and bn
|
||||||
|
(stringp bn)
|
||||||
|
(file-name-nondirectory bn)))
|
||||||
|
(default-alias
|
||||||
|
(and fn
|
||||||
|
(let ((aliases (remove (assoc "all" grep-files-aliases)
|
||||||
|
grep-files-aliases))
|
||||||
|
alias)
|
||||||
|
(while aliases
|
||||||
|
(setq alias (car aliases)
|
||||||
|
aliases (cdr aliases))
|
||||||
|
(if (string-match (mapconcat
|
||||||
|
#'wildcard-to-regexp
|
||||||
|
(split-string (cdr alias) nil t)
|
||||||
|
"\\|")
|
||||||
|
fn)
|
||||||
|
(setq aliases nil)
|
||||||
|
(setq alias nil)))
|
||||||
|
(cdr alias))))
|
||||||
|
(default-extension
|
||||||
|
(and fn
|
||||||
|
(let ((ext (file-name-extension fn)))
|
||||||
|
(and ext (concat "*." ext)))))
|
||||||
|
(default
|
||||||
|
(or default-alias
|
||||||
|
default-extension
|
||||||
|
(car grep-files-history)
|
||||||
|
(car (car grep-files-aliases))))
|
||||||
|
(files (completing-read
|
||||||
|
(format "Search for \"%s\" in files matching wildcard: "
|
||||||
|
regexp)
|
||||||
|
nil nil nil
|
||||||
|
(delete-dups
|
||||||
|
(delq nil
|
||||||
|
(append (list default default-alias default-extension)
|
||||||
|
(mapcar #'car grep-files-aliases))))
|
||||||
|
'grep-files-history)))
|
||||||
|
(and files
|
||||||
|
(or (cdr (assoc files grep-files-aliases))
|
||||||
|
files))))
|
||||||
|
|
||||||
|
|
||||||
;;; Base45 Decoding
|
;;; Base45 Decoding
|
||||||
|
|
||||||
@ -511,7 +566,7 @@ From: https://oremacs.com/2017/03/18/dired-ediff/."
|
|||||||
|
|
||||||
(-each-indexed (string-to-list base45-alphabet)
|
(-each-indexed (string-to-list base45-alphabet)
|
||||||
(-lambda (index char)
|
(-lambda (index char)
|
||||||
(puthash char index decode-hash-table)
|
(puthash char index decode-hash-table)
|
||||||
;; Add an encode-hash-table here in case base45-encode-string will ever be
|
;; Add an encode-hash-table here in case base45-encode-string will ever be
|
||||||
;; written, like so: (puthash index char encode-hash-table)
|
;; written, like so: (puthash index char encode-hash-table)
|
||||||
))
|
))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user