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.
> 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