bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#21644: 24.4; completing-read acts differently on functional collecti


From: Ryan
Subject: bug#21644: 24.4; completing-read acts differently on functional collection
Date: Mon, 12 Oct 2015 18:34:40 -0700
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

On 10/12/15 6:23 PM, Dmitry Gutov wrote:
On 10/08/2015 01:13 PM, Oleh Krehel wrote:

I can reproduce this as well, although "TAB RET" works where "RET"
doesn't. I attach a patch with a fix. If someone can check it I can push
it. The patch doesn't solve all the intricacies of
`completion-ignore-case' that were mentioned in that function's
comments, just this specific use case.

Is there really a bug here?

The example code didn't handle `test-completion' (the case when ALL would be `lambda').

With this definition, the behavior is the same in either case:

(defun collection-as-function (collection)
  "Return a function equivalent to COLLECTION.

The returned function will work equivalently to COLLECTION when
passed to `all-completions' and `try-completion'."
  (if (functionp collection)
      collection
    ;; Capture collection in a closure
    (lambda (string pred all)
      (funcall
       (cond
        ((eq all 't)
         #'all-completions)
        ((eq all 'lambda)
         #'test-completion)
        (t
         #'try-completion))
       string collection pred))))


I wasn't aware of `test-completion'. I was going based on the docstring for `completing-read', which only mentions `try-completion' and `all-completions'. Is there any other documentation I should have consulted?






reply via email to

[Prev in Thread] Current Thread [Next in Thread]