From 365a91622e093fe0fb74b7fee3ff7cc4a0025611 Mon Sep 17 00:00:00 2001 From: Eshel Yaron Date: Sun, 2 Mar 2025 08:03:04 +0100 Subject: [PATCH] ; (completion-preview--try-table): Propagate extra properties. * lisp/completion-preview.el (completion-preview--try-table): Let-bind 'completion-extra-properties' to completion properties that the completion backend (capf) provides, so that these properties take effect when querying the completion table. * test/lisp/completion-preview-tests.el (completion-preview-propagates-properties): Add test. --- lisp/completion-preview.el | 1 + test/lisp/completion-preview-tests.el | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/lisp/completion-preview.el b/lisp/completion-preview.el index 505cf45f48d..1c524985f05 100644 --- a/lisp/completion-preview.el +++ b/lisp/completion-preview.el @@ -293,6 +293,7 @@ candidates or if there are multiple matching completions and ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (let* ((pred (plist-get props :predicate)) (string (buffer-substring beg end)) + (completion-extra-properties props) (md (completion-metadata string table pred)) (sort-fn (or (completion-metadata-get md 'cycle-sort-function) (completion-metadata-get md 'display-sort-function) diff --git a/test/lisp/completion-preview-tests.el b/test/lisp/completion-preview-tests.el index d7694492056..b8a45f00cb5 100644 --- a/test/lisp/completion-preview-tests.el +++ b/test/lisp/completion-preview-tests.el @@ -306,4 +306,17 @@ instead." (should exit-fn-called) (should (equal exit-fn-args '("foobar" finished)))))) +(ert-deftest completion-preview-propagates-properties () + "Test the completion metadata handling of Completion Preview mode." + (with-temp-buffer + (setq-local + completion-preview-sort-function #'minibuffer-sort-alphabetically + completion-at-point-functions + (list (completion-preview-tests--capf '("foobaz" "foobar") + :display-sort-function #'identity))) + (insert "foo") + (let ((this-command 'self-insert-command)) + (completion-preview--post-command)) + (completion-preview-tests--check-preview "baz" 'completion-preview-common))) + ;;; completion-preview-tests.el ends here