From: Eshel Yaron Date: Sun, 2 Mar 2025 07:03:04 +0000 (+0100) Subject: ; (completion-preview--try-table): Propagate extra properties. X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1211bde049ff973b5f9dcf7de68b50765117f308;p=emacs.git ; (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. (cherry picked from commit 365a91622e093fe0fb74b7fee3ff7cc4a0025611) --- diff --git a/lisp/completion-preview.el b/lisp/completion-preview.el index dfa6080beb1..815879b26b1 100644 --- a/lisp/completion-preview.el +++ b/lisp/completion-preview.el @@ -526,6 +526,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) (completion-ignore-case completion-preview-ignore-case) (md (completion-metadata string table pred)) (sort-fn (or (completion-metadata-get md 'sort-function) diff --git a/test/lisp/completion-preview-tests.el b/test/lisp/completion-preview-tests.el index e32c53d07c1..ff43c4a85a7 100644 --- a/test/lisp/completion-preview-tests.el +++ b/test/lisp/completion-preview-tests.el @@ -440,4 +440,17 @@ instead." (completion-preview--post-command)) (should (not (completion-preview--cursor-modified-p))))) +(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