diff --git a/lisp/completion-preview.el b/lisp/completion-preview.el index 8e198123183..0e32beef5d0 100644 --- a/lisp/completion-preview.el +++ b/lisp/completion-preview.el @@ -491,7 +491,7 @@ point, otherwise hide it." (str (concat pre com (nth ind all)))) (completion-preview-active-mode -1) (goto-char end) - (insert (substring-no-properties aft)) + (insert-and-inherit (substring-no-properties aft)) (when (functionp efn) (funcall efn str 'finished)))) (defun completion-preview-partial-insert (fun &rest args) @@ -516,7 +516,7 @@ Beyond moving point, FUN should not modify the current buffer." (save-excursion (goto-char end) ;; Temporarily insert the full completion candidate. - (insert (substring-no-properties aft))) + (insert-and-inherit (substring-no-properties aft))) ;; Set point to the end of the prefix that we want to keep. (apply fun args) (unless (< end (point)) @@ -616,7 +616,7 @@ completions list." (completion-preview--inhibit-update) (completion-at-point)) ;; Otherwise, insert the common prefix and update the preview. - (insert ins) + (insert-and-inherit ins) (let ((suf (nth cur all)) (pos (point))) (if (or (string-empty-p suf) (null suf)) diff --git a/test/lisp/completion-preview-tests.el b/test/lisp/completion-preview-tests.el index 95985470479..b190ecb7020 100644 --- a/test/lisp/completion-preview-tests.el +++ b/test/lisp/completion-preview-tests.el @@ -432,4 +432,17 @@ instead." (should-not exit-fn-called) (should-not exit-fn-args)))) +(ert-deftest completion-preview-insert-inherits-text-properties () + "Test that `completion-preview-insert' inherits text properties." + (with-temp-buffer + (setq-local completion-at-point-functions + (list (completion-preview-tests--capf '("foobar" "foobaz")))) + (insert (propertize "foo" 'prop 'val)) + (let ((this-command 'self-insert-command)) + (completion-preview--post-command)) + (completion-preview-tests--check-preview "bar" 'completion-preview-common) + (completion-preview-insert) + (should (string= (buffer-string) "foobar")) + (should (eq (get-text-property 6 'prop) 'val)))) + ;;; completion-preview-tests.el ends here