]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/minibuffer.el (completion-table-with-quoting): Fix compatibility
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 1 May 2012 00:21:23 +0000 (20:21 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 1 May 2012 00:21:23 +0000 (20:21 -0400)
all-completions code to not return a number in the last cdr.

lisp/ChangeLog
lisp/minibuffer.el

index 8e826aa69faa7239f952dbcab8cb9d2bc5e32372..7919a9607c91bfe779c8982ee71e7f5de4eac539 100644 (file)
@@ -1,3 +1,8 @@
+2012-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuffer.el (completion-table-with-quoting): Fix compatibility
+       all-completions code to not return a number in the last cdr.
+
 2012-04-30  Leo Liu  <sdl.web@gmail.com>
 
        * ibuf-ext.el (ibuffer-diff-buffer-with-file-1): Avoid buffer
index 59bd0d231dc27dd957621732c561440843bda162..1d459b0db62f556ef3a653eb4c5db720397010d8 100644 (file)
@@ -420,6 +420,13 @@ for use at QPOS."
                                 (length string))))))
         (list* 'boundaries qlboundary qrboundary)))
 
+     ;; In "normal" use a c-t-with-quoting completion table should never be
+     ;; called with action in (t nil) because `completion--unquote' should have
+     ;; been called before and would have returned a different completion table
+     ;; to apply to the unquoted text.  But there's still a lot of code around
+     ;; that likes to use all/try-completions directly, so we do our best to
+     ;; handle those calls as well as we can.
+
      ((eq action nil) ;;try-completion
       (let* ((ustring (funcall unquote string))
              (completion (try-completion ustring table pred)))
@@ -447,10 +454,14 @@ for use at QPOS."
       (pcase-let*
           ((ustring (funcall unquote string))
            (completions (all-completions ustring table pred))
-           (boundary (car (completion-boundaries ustring table pred ""))))
-        (completion--twq-all
-         string ustring completions boundary unquote requote)))
-
+           (boundary (car (completion-boundaries ustring table pred "")))
+           (completions
+            (completion--twq-all
+             string ustring completions boundary unquote requote))
+           (last (last completions)))
+        (when (consp last) (setcdr last nil))
+        completions))
+        
      ((eq action 'completion--unquote)
       (let ((ustring (funcall unquote string))
             (uprefix (funcall unquote (substring string 0 pred))))