<<< Date Index >>>     <<< Thread Index >>>

Re: SOLVED (long) Re: colorization difference between 1.4.x and 1.5.x



On Fri, Jun 04, 2004 at 14:25:36 +0200, Udo Schweigert wrote:
> (Unfortunately that doesn't work for slang and I haven't figured out why)

Now I've written a patch which also works for slang, thus solving
Michaels's problem (patch is for mutt-1.5.6):

--- mutt.h.orig Fri Jun  4 13:35:59 2004
+++ mutt.h      Fri Jun  4 13:49:26 2004
@@ -350,6 +350,7 @@
   OPTBEEPNEW,
   OPTBOUNCEDELIVERED,
   OPTCHECKNEW,
+  OPTCOLORAFTEREOL,
   OPTCOLLAPSEUNREAD,
   OPTCONFIRMAPPEND,
   OPTCONFIRMCREATE,
--- init.h.orig Fri Jun  4 13:35:56 2004
+++ init.h      Fri Jun  4 13:45:43 2004
@@ -315,6 +315,12 @@
   ** \fIcheck_new\fP is \fIunset\fP, no check for new mail is performed
   ** while the mailbox is open.
   */
+  { "color_after_eol", DT_BOOL, R_NONE, OPTCOLORAFTEREOL, 1 },
+  /*
+  ** .pp
+  ** When \fIset\fP, Mutt will color a line after the last character extending
+  ** to the end of the window.
+  */
   { "collapse_unread", DT_BOOL, R_NONE, OPTCOLLAPSEUNREAD, 1 },
   /*
   ** .pp
--- pager.c.orig        Sat Jun  5 09:13:33 2004
+++ pager.c     Sat Jun  5 09:12:31 2004
@@ -1392,7 +1392,7 @@
    * ncurses does an implicit clrtoeol() when you do addch('\n') so we have
    * to make sure to reset the color *after* that
    */
-  if (flags & M_SHOWCOLOR)
+  if (option (OPTCOLORAFTEREOL) && (flags & M_SHOWCOLOR))
   {
     m = ((*lineInfo)[n].continuation) ? ((*lineInfo)[n].syntax)[0].first : n;
     if ((*lineInfo)[m].type == MT_COLOR_HEADER)
@@ -1406,6 +1406,16 @@
 #endif
   }
 
+  /*
+   * reset the color back to normal.  This *must* come before the
+   * addch('\n') for the color not to be filled to the right margin.
+   */
+  if (!option (OPTCOLORAFTEREOL) && (flags & M_SHOWCOLOR))
+  {
+    SETCOLOR(MT_COLOR_NORMAL);
+    BKGDSET(MT_COLOR_NORMAL);
+  }
+
   /* ncurses always wraps lines when you get to the right side of the
    * screen, but S-Lang seems to only wrap if the next character is *not*
    * a newline (grr!).
@@ -1420,7 +1430,7 @@
    * addch('\n'), otherwise the color for this line will not be
    * filled to the right margin.
    */
-  if (flags & M_SHOWCOLOR)
+  if (option (OPTCOLORAFTEREOL) && (flags & M_SHOWCOLOR))
   {
     SETCOLOR(MT_COLOR_NORMAL);
     BKGDSET(MT_COLOR_NORMAL);

Best regards

--
Udo Schweigert, Siemens AG   | Voice      : +49 89 636 42170
CT IC CERT, Siemens CERT     | Fax        : +49 89 636 41166
D-81730 Muenchen / Germany   | email      : udo.schweigert@xxxxxxxxxxx