Subject: Re: bug#11718: 24.1.50; `all-completions' returns results with wrong case

From: Michael Heerdegen <[email-masked]>
Date: Sat, 23 Jun 2012 21:51:42 +0200

"Drew Adams" <[email-masked]> writes:

> I don't know what the Icicles connection is.

If you type C-x C-f ~ / t r a TAB, this is what we currently do:

  all-completions("~/tra" read-file-name-internal file-exists-p nil)
* icicle-all-completions("~/tra" read-file-name-internal file-exists-p nil)
  icicle-unsorted-file-name-prefix-candidates("~/tra")
  icicle-file-name-prefix-candidates("~/tra")
  icicle-prefix-complete-1()
  icicle-prefix-complete()

where `icicle-unsorted-file-name-prefix-candidates' looks like this:

--8<---------------cut here---------------start------------->8---
(defun icicle-unsorted-file-name-prefix-candidates (input)
  "Unsorted list of prefix completions for the current file-name INPUT.
When `icicle-expand-input-to-common-match' = 3 or 4, which implies
prefix auto-expansion, this also sets `icicle-common-match-string' to
the expanded common match of the input over all candidates."
  (condition-case nil
      (let* ((pred  (if (< emacs-major-version 23) default-directory
                      minibuffer-completion-predicate))
             (candidates
              (if (icicle-not-basic-prefix-completion-p)
                  (icicle-completion-all-completions
                   input minibuffer-completion-table pred
                   (length input)
                   (and (fboundp 'completion--field-metadata) ;Emacs24
                        (completion--field-metadata
                         (field-beginning))))
                (icicle-all-completions input minibuffer-completion-table pred
                                        icicle-ignore-space-prefix-flag)))
             (icicle-extra-candidates
              (icicle-remove-if-not ..4..))
             (icicle-proxy-candidates ..5..)
             (filtered-candidates ..16..))
        (when (and (memq icicle-expand-input-to-common-match '(3 4))
                   (consp filtered-candidates)) ..15..)
        (unless filtered-candidates  (setq icicle-common-match-string  nil))
        filtered-candidates)
    (quit (top-level))))
--8<---------------cut here---------------end--------------->8---

Thus, the minibuffer input is completed to ~/trash, although only
~/Trash exists.

Michael.