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))))