+/*************************************************************************/
+/* display lines */
+/*************************************************************************/
+
+/* Modeline commentary: IMO the modeline is handled very badly, we
+ special case virtually *everything* in the redisplay routines for
+ the modeline. The fact that dl->bufpos can be either a buffer
+ position or a char count highlights this. There is no abstraction at
+ all that I can find and it means that the code is made very ugly as
+ a result. Either we should treat the modeline *entirely* separately,
+ or we should abstract to something that applies equally well to the
+ modeline and to buffer text, the things are not enormously different
+ after all and handling them identically at some level would
+ eliminate some bugs that still exist (mainly to do with modeline
+ handling). This problem doesn't help trying to implement gutters
+ which are somewhere in between buffer text and modeline text.
+
+ Redisplay commentary: Everything in redisplay is tied very tightly
+ to the things that are being displayed, and the context,
+ e.g. buffers and windows. According to Chuck this is so that we can
+ get speed, which seems fine to me, however this usage is extended
+ too far down the redispay routines IMO. At some level there should
+ be functions that know how to display strings with extents and
+ faces, regardless of buffer etc. After all the window system does
+ not care. <andy@xemacs.org> */
+