Why does "widening" need a separate set of limits?
Because in multi-modes most of critical operations such as syntax parsing,
syntax-propertize, font-locking and indentations inside submodes occurs in
narrowed regions. That is, sub-mode is placed in a bubble. The problem is
that that buble is easy to escape with widening. These extra limits are
intended to make that escape impossible (at least till the sub-mode start
using those hard limits itself).
Thanks for the explanation. I think I see what you are trying to do.
I don't see why changing `widen' would be the only, or necessarily
the best, way to meet that need (which is essentially to make a
sub-mode treat given bounds as if they were the buffer limits).
But you answered my question. Thank you.