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)