]> git.eshelyaron.com Git - emacs.git/commitdiff
Give affixation-function higher priority over annotation-function (bug#45234)
authorJuri Linkov <juri@linkov.net>
Wed, 16 Dec 2020 21:19:46 +0000 (23:19 +0200)
committerJuri Linkov <juri@linkov.net>
Wed, 16 Dec 2020 21:19:46 +0000 (23:19 +0200)
* doc/lispref/minibuf.texi (Completion Variables)
(Programmed Completion): Describe precedence rules
of affixation-function and annotation-function.

* lisp/minibuffer.el (completion-metadata)
(completion-extra-properties): Describe precedence rules
of affixation-function and annotation-function.
(minibuffer-completion-help): First try to apply
affixation-function, if there is no such function,
try annotation-function.

doc/lispref/minibuf.texi
lisp/minibuffer.el

index 56bc0b8ab6797b5a80dfb4f581098fb9be52bf92..48f068ee604e80dfb4e734676afe4c0f61fb200c 100644 (file)
@@ -1803,7 +1803,8 @@ The value should be a function to add prefixes and suffixes to
 completions.  This function must accept one argument, a list of
 completions, and should return such a list of completions where
 each element contains a list of three elements: a completion,
-a prefix string, and a suffix string.
+a prefix string, and a suffix string.  This function takes priority
+over @code{:annotation-function}.
 
 @item :exit-function
 The value should be a function to run after performing completion.
@@ -1911,7 +1912,8 @@ completions.  The function should take one argument,
 return such a list of @var{completions} where each element contains a list
 of three elements: a completion, a prefix which is displayed before
 the completion string in the @file{*Completions*} buffer, and
-a suffix displayed after the completion string.
+a suffix displayed after the completion string.  This function
+takes priority over @code{annotation-function}.
 
 @item display-sort-function
 The value should be a function for sorting completions.  The function
index 456193d52e1141b14de374cc6f93535f8cde5696..7d05f7704e9a28de65dcb9eec941b101d9ed6686 100644 (file)
@@ -123,7 +123,8 @@ This metadata is an alist.  Currently understood keys are:
 - `affixation-function': function to prepend/append a prefix/suffix to
    entries.  Takes one argument (COMPLETIONS) and should return a list
    of completions with a list of three elements: completion, its prefix
-   and suffix.
+   and suffix.  This function takes priority over `annotation-function'
+   when both are provided, so only this function is used.
 - `display-sort-function': function to sort entries in *Completions*.
    Takes one argument (COMPLETIONS) and should return a new list
    of completions.  Can operate destructively.
@@ -1926,6 +1927,8 @@ These include:
    completions.  The function must accept one argument, a list of
    completions, and return a list where each element is a list of
    three elements: a completion, a prefix and a suffix.
+   This function takes priority over `:annotation-function'
+   when both are provided, so only this function is used.
 
 `:exit-function': Function to run after completion is performed.
 
@@ -2056,15 +2059,16 @@ variables.")
                               (if sort-fun
                                   (funcall sort-fun completions)
                                 (sort completions 'string-lessp))))
-                      (when ann-fun
+                      (cond
+                       (aff-fun
+                        (setq completions
+                              (funcall aff-fun completions)))
+                       (ann-fun
                         (setq completions
                               (mapcar (lambda (s)
                                         (let ((ann (funcall ann-fun s)))
                                           (if ann (list s ann) s)))
-                                      completions)))
-                      (when aff-fun
-                        (setq completions
-                              (funcall aff-fun completions)))
+                                      completions))))
 
                       (with-current-buffer standard-output
                         (setq-local completion-base-position