]> code.delx.au - gnu-emacs/commitdiff
(complete-with-action): Backport from trunk (for vc-arch.el).
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 23 Aug 2007 18:42:38 +0000 (18:42 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 23 Aug 2007 18:42:38 +0000 (18:42 +0000)
(dynamic-completion-table): Use it it.

lisp/ChangeLog
lisp/subr.el

index 3e3e133bbe0991af113666876f28c3f04f024f16..24639e84d7980f63310f5befa34d13de5b886a1a 100644 (file)
@@ -1,5 +1,26 @@
 2007-08-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * subr.el (complete-with-action): Backport from trunk (for vc-arch.el).
+       (dynamic-completion-table): Use it it.
+
+       * net/browse-url.el: Remove spurious * in custom docstrings.
+       (browse-url-filename-alist): Use new-style backquote.
+
+       * emacs-lisp/backquote.el (backquote-unquote-symbol)
+       (backquote-splice-symbol): Clarify they're not new-style unquotes.
+
+       * emacs-lisp/edebug.el (edebug-list-form, edebug-match-symbol, \,)
+       (\,@): Backslash the , and ,@ which are not new-style unquotes.
+
+       * textmodes/texinfmt.el (\,): Clarify it's not a new-style unquote.
+
+       * net/socks.el (socks-username/password-auth-filter):
+       Remove unused vars `state' and `desired-len'.
+       (socks-parse-services, socks-nslookup-host): Use with-current-buffer.
+       (socks-wait-for-state-change): Use new-style backquotes.
+
+       * pcvs.el (cvs-mode-status): Fix long-standing typo.
+
        * emacs-lisp/bytecomp.el (byte-compile-from-buffer): Check old-style
        backquotes after each `read' rather than once per buffer.
 
index 8de09b032f585d4a1c18a048b359524955ee511b..63bbc1107749dcea24207ce18d758bf2d1516217 100644 (file)
@@ -2509,6 +2509,20 @@ The value returned is the value of the last form in BODY."
 \f
 ;;;; Constructing completion tables.
 
+(defun complete-with-action (action table string pred)
+  "Perform completion ACTION.
+STRING is the string to complete.
+TABLE is the completion table, which should not be a function.
+PRED is a completion predicate.
+ACTION can be one of nil, t or `lambda'."
+  ;; (assert (not (functionp table)))
+  (funcall
+   (cond
+    ((null action) 'try-completion)
+    ((eq action t) 'all-completions)
+    (t 'test-completion))
+   string table pred))
+
 (defmacro dynamic-completion-table (fun)
   "Use function FUN as a dynamic completion table.
 FUN is called with one argument, the string for which completion is required,
@@ -2530,10 +2544,7 @@ that can be used as the ALIST argument to `try-completion' and
        (with-current-buffer (let ((,win (minibuffer-selected-window)))
                               (if (window-live-p ,win) (window-buffer ,win)
                                 (current-buffer)))
-         (cond
-          ((eq ,mode t) (all-completions ,string (,fun ,string) ,predicate))
-          ((not ,mode) (try-completion ,string (,fun ,string) ,predicate))
-          (t (test-completion ,string (,fun ,string) ,predicate)))))))
+         (complete-with-action ,mode (,fun ,string) ,string ,predicate)))))
 
 (defmacro lazy-completion-table (var fun)
   ;; We used to have `&rest args' where `args' were evaluated late (at the