Is there a solution for inserting a filename to a buffer (either to a normal buffer, or to the minibuffer) using a recursive fuzzy search, using the vertico + consult + corfu + cape ecosystem? Something like what consult-file
does, but instead of opening the selected file, insert the path of it to a buffer.
We have cape-file
, but it doesn’t fuzzy search in a recursive way.
I feel like if I understood embark it would do that.
It does do that. If you have
embark-act
bound toC-.
, thenC-. i
inserts the current minibuffer completion candidate into the buffer from which you ran the command that opened the minibuffer.
For minibuffer completion, I created this, kind of works, but if there is an already developed, fully working solution, I’d rather use that. And I’m still interested in for a solution to use in a normal buffer that
corfu
could use.(defun my-consult-fd-string (&optional dir initial) (interactive "P") (setq this-command 'consult-fd) (pcase-let* ((`(,prompt ,paths ,dir) (consult--directory-prompt "Fd" dir)) (default-directory dir) (builder (consult--fd-make-builder paths))) (concat dir (consult--find prompt builder initial)))) (defun my-consult-insert-fd-string () (interactive) (insert (abbreviate-file-name (let ((f (bounds-of-thing-at-point 'filename))) (if f (let ((r (my-consult-fd-string (buffer-substring-no-properties (car f) (cdr f)) nil))) (delete-region (car f) (cdr f)) r) (my-consult-fd-string t nil)))))) (define-key minibuffer-local-map (kbd "M-f") 'my-consult-insert-fd-string)