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

From: "Drew Adams" <[email-masked]>
Date: Sun, 24 Jun 2012 13:20:31 -0700

> The problem here is that you misunderstand what is the COLLECTION
> argument in the case at hand.  It is *not* a table that completes
> filenames as they exist in the file-system.  If you want 
> that, then use completion-file-name-table.

The case at hand is the one Michael presented.  All that is done in that code is
to pass `minibuffer-completion-table' and `minibuffer-completion-predicate' to
`all-completions'.  The former happens to be `read-file-name-internal' in this
case, but the code does not impose that (it comes from `read-file-name', which
the code uses).

> `read-file-name-internal' is a completion table that does
> other things to handle substitute-in-file-name rewrite (i.e.
> typically env-var expansion, $$-quoting, // and ~/ truncation);

A priori I do not have a problem with any of that.  Au contraire, I think.

> part of that makes it that you should not put too much faith
> in the case of the returned string.

That's the part that I'm not sure follows.  Logically.

But I repeat that I cannot speak to the implementation, and I do not claim that
it is easy to get it right.  I am only saying that file-name completion - even
with env-var expansion etc. - _should_ not change the case of file names for the
return value.  It is a bug if it it does, though not a major bug.

(Again, "should" does not imply that it is easy to fix.)

I'm not sure we disagree.  And I hope you can fix this eventually, even if it is
not a high priority.  And I understand from your posts that this might not be
easy, file names being mixed up with env-var substitution et tout le reste.