]> code.delx.au - gnu-emacs/commitdiff
* lisp/minibuffer.el (completion-metadata): Prepend the alist with `metadata'.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 20 Jun 2011 20:16:20 +0000 (16:16 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 20 Jun 2011 20:16:20 +0000 (16:16 -0400)
(completion-try-completion, completion-all-completions): Compute the
metadata argument if it's missing; make it optional.

Fixes: debbugs:8795
lisp/ChangeLog
lisp/minibuffer.el

index 957c751750b86f0a0023a419ac6ba51583ac8602..ceab0a14fcfb2a3e8038d868da83aabf4acca8fb 100644 (file)
@@ -1,5 +1,9 @@
 2011-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * minibuffer.el (completion-metadata): Prepend the alist with `metadata'.
+       (completion-try-completion, completion-all-completions): Compute the
+       metadata argument if it's missing; make it optional (bug#8795).
+
        * wid-edit.el: Use lexical scoping and move towards completion-at-point.
        (widget-complete): Use new :completion-function property.
        (widget-completions-at-point): New function.
index 03e8225f0c5f55e412e7976e478dd1452c961c5b..a7ffc8d061a2f7871494b1ddfdf11ac654e995bd 100644 (file)
@@ -135,7 +135,8 @@ The metadata of a completion table should be constant between two boundaries."
   (let ((metadata (if (functionp table)
                       (funcall table string pred 'metadata))))
     (if (eq (car-safe metadata) 'metadata)
-        (cdr metadata))))
+        metadata
+      '(metadata))))
 
 (defun completion--field-metadata (field-start)
   (completion-metadata (buffer-substring-no-properties field-start (point))
@@ -513,7 +514,7 @@ an association list that can specify properties such as:
         (delete-dups (append (cdr over) (copy-sequence completion-styles)))
        completion-styles)))
 
-(defun completion-try-completion (string table pred point metadata)
+(defun completion-try-completion (string table pred point &optional metadata)
   "Try to complete STRING using completion table TABLE.
 Only the elements of table that satisfy predicate PRED are considered.
 POINT is the position of point within STRING.
@@ -524,9 +525,12 @@ a new position for point."
   (completion--some (lambda (style)
                       (funcall (nth 1 (assq style completion-styles-alist))
                                string table pred point))
-                    (completion--styles metadata)))
+                    (completion--styles (or metadata
+                                            (completion-metadata
+                                             (substring string 0 point)
+                                             table pred)))))
 
-(defun completion-all-completions (string table pred point metadata)
+(defun completion-all-completions (string table pred point &optional metadata)
   "List the possible completions of STRING in completion table TABLE.
 Only the elements of table that satisfy predicate PRED are considered.
 POINT is the position of point within STRING.
@@ -537,7 +541,10 @@ in the last `cdr'."
   (completion--some (lambda (style)
                       (funcall (nth 2 (assq style completion-styles-alist))
                                string table pred point))
-                    (completion--styles metadata)))
+                    (completion--styles (or metadata
+                                            (completion-metadata
+                                             (substring string 0 point)
+                                             table pred)))))
 
 (defun minibuffer--bitset (modified completions exact)
   (logior (if modified    4 0)