branch: externals/minuet commit ab3dd8d06da724cc72b582197c39729ef72e7d88 Author: milanglacier <d...@milanglacier.com> Commit: GitHub <nore...@github.com>
feat: add consult support for `minuet-complete-with-minibuffer`. (#20) Add support for consult's completion preview feature when available. Falls back to standard completing-read when consult is not loaded. This enhances the completion experience by showing live previews of selected completions. --- minuet.el | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/minuet.el b/minuet.el index 78f0c616d0..111392c8d1 100644 --- a/minuet.el +++ b/minuet.el @@ -51,6 +51,8 @@ (declare-function evil-emacs-state-p "evil-states") (declare-function evil-insert-state-p "evil-states") +(declare-function consult--read "consult") +(declare-function consult--insertion-preview "consult") (defcustom minuet-auto-suggestion-debounce-delay 0.4 "Debounce delay in seconds for auto-suggestions." @@ -720,7 +722,14 @@ many lines. Without a prefix argument, accept only the first line." (let ((current-buffer (current-buffer)) (available-p-fn (intern (format "minuet--%s-available-p" minuet-provider))) (complete-fn (intern (format "minuet--%s-complete" minuet-provider))) - (context (minuet--get-context))) + (context (minuet--get-context)) + (completing-read (lambda (items) (completing-read "Complete: " items nil t))) + (consult--read (lambda (items) + (consult--read + items + :prompt "Complete: " + :require-match t + :state (consult--insertion-preview (point) (point)))))) (unless (funcall available-p-fn) (minuet--log (format "Minuet provider %s is not available" minuet-provider)) (error "Minuet provider %s is not available" minuet-provider)) @@ -735,10 +744,12 @@ many lines. Without a prefix argument, accept only the first line." ;; close current minibuffer session, if any (when (active-minibuffer-window) (abort-recursive-edit)) - (when items - (when-let* ((selected (completing-read "Complete: " items nil t))) - (unless (string-empty-p selected) - (insert selected))))))))) + (when-let* ((items) + (selected (funcall + (if (require 'consult nil t) consult--read completing-read) + items))) + (unless (string-empty-p selected) + (insert selected)))))))) (defun minuet--get-api-key (api-key) "Get the api-key from API-KEY.