selectrum: improve wgrep

- add `:demand t` to `embark-consult` so it works on first call
- add `C-c C-e` to `consult-grep`
This commit is contained in:
Itai Y. Efrat 2021-05-07 21:27:14 +03:00
parent 341343308a
commit 8957f02ab2
3 changed files with 29 additions and 1 deletions

View file

@ -32,6 +32,7 @@ https://github.com/oantolin/orderless/issues/41
https://github.com/minad/marginalia/issues/59
** TODO =SPC s B=
** TODO =C-C C-e= wgrep fun
check if we can add this to ~consult-line~ too
** TODO bibtex-actions improvements?
currently =SPC n b= is bound to a function, but =bibtex-actions= doesn't have a
main dispatch function like =ivy-bibtex=, rather it has a bunch of different

View file

@ -74,3 +74,27 @@ If ARG (universal argument), include all files, even hidden or compressed ones."
(defun +selectrum/search-symbol-at-point ()
(interactive)
(consult-line (thing-at-point 'symbol)))
;;;###autoload
(defun +selectrum/embark-wgrep ()
"Invoke a wgrep buffer on the current selectrum results, if supported."
(interactive)
(require 'wgrep)
(pcase-let ((`(,type . ,candidates)
(run-hook-with-args-until-success 'embark-candidate-collectors)))
(if (null candidates)
(user-error "No candidates for export")
(if (eq type 'consult-grep)
(embark--quit-and-run
(lambda ()
(let ((buf (generate-new-buffer "*Embark Export Wgrep*")))
(with-current-buffer buf
(insert (propertize "Exported grep results:\n\n" 'wgrep-header t))
(dolist (line candidates) (insert line "\n"))
(goto-char (point-min))
(grep-mode)
(setq-local wgrep-header/footer-parser #'ignore)
(wgrep-setup))
(pop-to-buffer buf)
(wgrep-change-to-wgrep-mode))))
(user-error "embark category %S doesn't support wgrep" type)))))

View file

@ -31,6 +31,7 @@
(map! :map selectrum-minibuffer-map
"C-o" #'embark-act
"C-c C-o" #'embark-export
"C-c C-e" #'+selectrum/embark-wgrep
[backspace] #'+selectrum/backward-updir))
(use-package! selectrum-prescient
@ -123,7 +124,8 @@
:desc "Open target with sudo" "s" #'sudo-edit
:desc "Open target with vlf" "l" #'vlf
:map embark-file-map
:desc "Cycle marginalia views" "A" #'marginalia-cycle))
:desc "Cycle marginalia views" "A" #'marginalia-cycle)
(set-popup-rule! "^\\*Embark Export" :size 0.35 :ttl 0 :quit nil))
(use-package! marginalia
:hook (doom-first-input . marginalia-mode)
@ -134,6 +136,7 @@
(use-package! embark-consult
:after (embark consult)
:demand t
:hook
(embark-collect-mode . embark-consult-preview-minor-mode))