Ok, here's how I can see this being done:
1. define a new field for the buffer object which is a char-table.
2. Populate this table in lisp code.
3. Use it instead of the case folding table as the translation table for searches, if some given variable is non-nil.

Would that be desirable?

We could also use the equivalence class folding table in addition to the case folding table. But that would (in the very least) involve changing the c search functions to take an additional argument.

On 28 Jan 2015 20:23, "Stefan Monnier" <monnier@iro.umontreal.ca> wrote:
> Ok, I'll be getting on a 10 hour flight now, so I'll be looking into
> the case-fold machinery.
> I did have a brief look already and it doesn't seem horribly absurd.

> Any other pointers that might be useful before I jump into no-internet
>  land? :-)

Just a warning: the case-tables are threatened.  They should be replaced by
Unicode-aware (locale-dependent?) case folding for the 99.99% of the
cases, the only remaining case is the "ASCII upcase/downcase" operation
used in sendmail.el (IIRC), which we can hopefully solve some other way.


        Stefan