I don't understand this. flex is deterministic. Which part exactly
cannot be trusted?
Precisely, I thought you wouldn't. Flex is designed to let you
smash some keys that vaguely fit into your intended completion,
or at least enter the spectrum where you kinda remember the
completion to be. Some Flex implementations even allow you
to reverse keys so that when my lazy hand types "lyaz" it still
maches "the-lazy-fox". When scoring, flex makes some mistakes
(depending on how good/sophisticated the scoring algorithm is).
So it's important to understand why the suggestion is at that
place.
I'm not sure I can agree with that. Company highlights the common part,
not simply whatever part completion style chooses to highlight.
If it's somehow so important for company to highlight always the
common part, we can put a 'this-is-part-of-the-common-part' prop
there, too, for company's benetif. Sniffing for faces, the way I
implemented it, was really a low-hanging-hack anyway. The patch
to sniff for a property is trivial.
So I wouldn't worry about that.
By the way, doesn't this requirement for company clash with your
view of the other Emacs frontends? Why is it important for company
to always highlight the common part, but not for Emacs's icomplete,
or *Completions*?