Subject: Re: bug#16334: 24.3.50; company-capf eats the first char in IELM filename completions

From: Stefan Monnier <[email-masked]>
Date: Sat, 04 Jan 2014 00:00:43 -0500

> 1. Open an IELM buffer and (on Unix) type `"/' there.
> 2. Leave the point after `/'.
> 3. Type `M-x company-capf', see that all candidates have the first
> character missing.

That's normal.  Try C-x C-f / TAB TAB and you'll see that the leading /
is also "missing" in the *Completions* buffer.

> Not sure how `completion-at-point' ignores that problem.

It doesn't ignore the problem.  It knows that (all-completions STR
TABLE) doesn't always return strings that have STR as a prefix and
spends a fair bit of effort handling it right.

> 5. Type `/usr/', then `M-x company-capf', see an error caused by some
> candidates being shorter than the prefix.

Indeed, Company can't handle all completion-at-point-functions so far
because it assumes all completion tables are "simple", unlike
for example filename completion.

You can know how many chars are "missing" by calling
`completion-boundaries'.  Ideally, Company should be extended to handle
this feature, but for now that can be handled in company-capf.

        Stefan