missed patch
# vim:ft=diff:
This is the indexcolor patch by Christian Aichinger <[EMAIL PROTECTED]>.

This patch enables different colorings for different parts of the index
display. For example you can choose one color for the subject, another one for
the author, and a third one for the flags.

* Patch last synced with upstream:
  - Date: 2007-02-15
  - File: http://greek0.net/mutt.html
          http://greek0.net/patches/mutt-1.5.12-indexcolor-3+cb.diff

* Changes made:
  - Repatch for 1.5.13.
  - Remove trailing whitespace.

== END PATCH
Index: mutt/color.c
===================================================================
--- mutt.orig/color.c   2008-07-09 11:00:30.387739063 +0200
+++ mutt/color.c        2008-07-09 10:48:02.195979000 +0200
@@ -35,6 +35,8 @@ int ColorDefs[MT_COLOR_MAX];
 COLOR_LINE *ColorHdrList = NULL;
 COLOR_LINE *ColorBodyList = NULL;
 COLOR_LINE *ColorIndexList = NULL;
+COLOR_LINE *ColorIndexSubjectList = NULL;
+COLOR_LINE *ColorIndexAuthorList = NULL;
 
 /* local to this file */
 static int ColorQuoteSize;
@@ -93,6 +95,14 @@ static struct mapping_t Fields[] =
   { "bold",            MT_COLOR_BOLD },
   { "underline",       MT_COLOR_UNDERLINE },
   { "index",           MT_COLOR_INDEX },
+  { "index_subject",   MT_COLOR_INDEX_SUBJECT },
+  { "index_author",    MT_COLOR_INDEX_AUTHOR },
+  { "index_collapsed", MT_COLOR_INDEX_COLLAPSED },
+  { "index_date",      MT_COLOR_INDEX_DATE },
+  { "index_flags",     MT_COLOR_INDEX_FLAGS },
+  { "index_label",     MT_COLOR_INDEX_LABEL },
+  { "index_number",    MT_COLOR_INDEX_NUMBER },
+  { "index_size",      MT_COLOR_INDEX_SIZE },
   { "sidebar_new",     MT_COLOR_NEW },
   { "sidebar_flagged", MT_COLOR_FLAGGED },
   { NULL,              0 }
@@ -366,12 +376,55 @@ int mutt_parse_unmono (BUFFER *buf, BUFF
   return _mutt_parse_uncolor(buf, s, data, err, 0);
 }
 
+static void
+mutt_do_uncolor (BUFFER *buf, BUFFER *s, COLOR_LINE **ColorList,
+                       int *do_cache, int parse_uncolor)
+{
+  COLOR_LINE *tmp, *last = NULL;
+
+  do
+  {
+    mutt_extract_token (buf, s, 0);
+    if (!mutt_strcmp ("*", buf->data))
+    {
+      for (tmp = *ColorList; tmp; )
+      {
+        if (!*do_cache)
+         *do_cache = 1;
+       last = tmp;
+       tmp = tmp->next;
+       mutt_free_color_line(&last, parse_uncolor);
+      }
+      *ColorList = NULL;
+    }
+    else
+    {
+      for (last = NULL, tmp = *ColorList; tmp; last = tmp, tmp = tmp->next)
+      {
+       if (!mutt_strcmp (buf->data, tmp->pattern))
+       {
+          if (!*do_cache)
+           *do_cache = 1;
+         dprint(1,(debugfile,"Freeing pattern \"%s\" from ColorList\n",
+                              tmp->pattern));
+         if (last)
+           last->next = tmp->next;
+         else
+           *ColorList = tmp->next;
+         mutt_free_color_line(&tmp, parse_uncolor);
+         break;
+       }
+      }
+    }
+  }
+  while (MoreArgs (s));
+}
+
 static int 
 _mutt_parse_uncolor (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err, 
                         short parse_uncolor)
 {
   int object = 0, do_cache = 0;
-  COLOR_LINE *tmp, *last = NULL;
 
   mutt_extract_token (buf, s, 0);
 
@@ -381,6 +434,13 @@ _mutt_parse_uncolor (BUFFER *buf, BUFFER
     return (-1);
   }
 
+  if (object > MT_COLOR_INDEX_AUTHOR) /* uncolor index column */
+  {
+    ColorDefs[object] = 0;
+    set_option (OPTFORCEREDRAWINDEX);
+    return (0);
+  }
+
   if (mutt_strncmp (buf->data, "index", 5) != 0)
   {
     snprintf (err->data, err->dsize,
@@ -418,44 +478,12 @@ _mutt_parse_uncolor (BUFFER *buf, BUFFER
     return 0;
   }
      
-  
-  do
-  {
-    mutt_extract_token (buf, s, 0);
-    if (!mutt_strcmp ("*", buf->data))
-    {
-      for (tmp = ColorIndexList; tmp; )
-      {
-        if (!do_cache)
-         do_cache = 1;
-       last = tmp;
-       tmp = tmp->next;
-       mutt_free_color_line(&last, parse_uncolor);
-      }
-      ColorIndexList = NULL;
-    }
-    else
-    {
-      for (last = NULL, tmp = ColorIndexList; tmp; last = tmp, tmp = tmp->next)
-      {
-       if (!mutt_strcmp (buf->data, tmp->pattern))
-       {
-          if (!do_cache)
-           do_cache = 1;
-         dprint(1,(debugfile,"Freeing pattern \"%s\" from ColorIndexList\n",
-                              tmp->pattern));
-         if (last)
-           last->next = tmp->next;
-         else
-           ColorIndexList = tmp->next;
-         mutt_free_color_line(&tmp, parse_uncolor);
-         break;
-       }
-      }
-    }
-  }
-  while (MoreArgs (s));
-
+  if (object == MT_COLOR_INDEX)
+    mutt_do_uncolor(buf, s, &ColorIndexList, &do_cache, parse_uncolor);
+  if (object == MT_COLOR_INDEX_SUBJECT)
+    mutt_do_uncolor(buf, s, &ColorIndexSubjectList, &do_cache, parse_uncolor);
+  if (object == MT_COLOR_INDEX_AUTHOR)
+    mutt_do_uncolor(buf, s, &ColorIndexAuthorList, &do_cache, parse_uncolor);
 
   if (do_cache && !option (OPTNOCURSES))
   {
@@ -695,7 +723,7 @@ _mutt_parse_color (BUFFER *buf, BUFFER *
 
   /* extract a regular expression if needed */
   
-  if (object == MT_COLOR_HEADER || object == MT_COLOR_BODY || object == 
MT_COLOR_INDEX)
+  if (object == MT_COLOR_HEADER || object == MT_COLOR_BODY || object == 
MT_COLOR_INDEX || object == MT_COLOR_INDEX_SUBJECT || object == 
MT_COLOR_INDEX_AUTHOR)
   {
     if (!MoreArgs (s))
     {
@@ -739,6 +767,18 @@ _mutt_parse_color (BUFFER *buf, BUFFER *
     r = add_pattern (&ColorIndexList, buf->data, 1, fg, bg, attr, err, 1);
     set_option (OPTFORCEREDRAWINDEX);
   }
+  else if (object == MT_COLOR_INDEX_SUBJECT)
+  {
+    r = add_pattern (&ColorIndexSubjectList, buf->data,
+                    1, fg, bg, attr, err, 1);
+    set_option (OPTFORCEREDRAWINDEX);
+  }
+  else if (object == MT_COLOR_INDEX_AUTHOR)
+  {
+    r = add_pattern (&ColorIndexAuthorList, buf->data,
+                    1, fg, bg, attr, err, 1);
+    set_option (OPTFORCEREDRAWINDEX);
+  }
   else if (object == MT_COLOR_QUOTED)
   {
     if (q_level >= ColorQuoteSize)
@@ -764,7 +804,11 @@ _mutt_parse_color (BUFFER *buf, BUFFER *
       ColorQuote[q_level] = fgbgattr_to_color(fg, bg, attr);
   }
   else
+  {
     ColorDefs[object] = fgbgattr_to_color(fg, bg, attr);
+    if (object > MT_COLOR_INDEX_AUTHOR)
+      set_option (OPTFORCEREDRAWINDEX);
+  }
 
 #ifdef HAVE_COLOR
 # ifdef HAVE_BKGDSET
Index: mutt/curs_lib.c
===================================================================
--- mutt.orig/curs_lib.c        2008-03-03 06:41:51.000000000 +0100
+++ mutt/curs_lib.c     2008-07-09 10:47:00.453703000 +0200
@@ -700,6 +700,7 @@ void mutt_format_string (char *dest, siz
   size_t k, k2;
   char scratch[MB_LEN_MAX];
   mbstate_t mbstate1, mbstate2;
+  int escaped = 0;
 
   memset(&mbstate1, 0, sizeof (mbstate1));
   memset(&mbstate2, 0, sizeof (mbstate2));
@@ -715,7 +716,15 @@ void mutt_format_string (char *dest, siz
       k = (k == (size_t)(-1)) ? 1 : n;
       wc = replacement_char ();
     }
-    if (arboreal && wc < M_TREE_MAX)
+    if (escaped) {
+      escaped = 0;
+      w = 0;
+    }
+    else if (arboreal && wc == M_SPECIAL_INDEX) {
+      escaped = 1;
+      w = 0;
+    }
+    else if (arboreal && wc < M_TREE_MAX)
       w = 1; /* hack */
     else
     {
Index: mutt/hdrline.c
===================================================================
--- mutt.orig/hdrline.c 2008-01-30 05:26:50.000000000 +0100
+++ mutt/hdrline.c      2008-07-09 10:47:00.457695000 +0200
@@ -103,6 +103,34 @@ static int first_mailing_list (char *buf
   return 0;
 }
 
+/* Takes the color to embed, the buffer to manipulate and the buffer length as
+ * arguments.
+ * Returns the number of chars written. */
+static size_t add_index_color(char *buf, size_t buflen,
+                          format_flag flags, char color)
+{
+  int len;
+
+  /* only add color markers if we are operating on main index entries. */
+  if (!(flags & M_FORMAT_INDEX))
+    return 0;
+
+  if (color == MT_COLOR_INDEX) { /* buf might be uninitialized other cases */
+    len = mutt_strlen(buf);
+    buf += len;
+    buflen -= len;
+  }
+
+  if (buflen < 2)
+    return 0;
+
+  buf[0] = M_SPECIAL_INDEX;
+  buf[1] = color;
+  buf[2] = '\0';
+
+  return 2;
+}
+
 static void make_from (ENVELOPE *hdr, char *buf, size_t len, int do_lists)
 {
   int me;
@@ -251,6 +279,7 @@ hdr_format_str (char *dest,
 #define THREAD_NEW (threads && hdr->collapsed && hdr->num_hidden > 1 && 
mutt_thread_contains_unread (ctx, hdr) == 1)
 #define THREAD_OLD (threads && hdr->collapsed && hdr->num_hidden > 1 && 
mutt_thread_contains_unread (ctx, hdr) == 2)
   size_t len;
+  size_t colorlen;
 
   hdr = hfi->hdr;
   ctx = hfi->ctx;
@@ -302,12 +331,17 @@ hdr_format_str (char *dest,
       break;
     
     case 'c':
+      colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_SIZE);
       mutt_pretty_size (buf2, sizeof (buf2), (long) hdr->content->length);
-      mutt_format_s (dest, destlen, prefix, buf2);
+      mutt_format_s (dest+colorlen, destlen-colorlen, prefix, buf2);
+      add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);
       break;
 
     case 'C':
-      snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
+      colorlen = add_index_color(fmt, sizeof(fmt), flags, 
MT_COLOR_INDEX_NUMBER);
+      snprintf (fmt+colorlen, sizeof(fmt)-colorlen, "%%%sd", prefix);
+      add_index_color(fmt+colorlen, sizeof(fmt)-colorlen, flags, 
MT_COLOR_INDEX);
+
       snprintf (dest, destlen, fmt, hdr->msgno + 1);
       break;
 
@@ -406,7 +440,10 @@ hdr_format_str (char *dest,
        if (do_locales)
          setlocale (LC_TIME, "C");
 
-       mutt_format_s (dest, destlen, prefix, buf2);
+       colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_DATE);
+       mutt_format_s (dest+colorlen, destlen-colorlen, prefix, buf2);
+       add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);
+
        if (len > 0 && op != 'd' && op != 'D') /* Skip ending op */
          src = cp + 1;
       }
@@ -436,8 +473,10 @@ hdr_format_str (char *dest,
     case 'F':
       if (!optional)
       {
+       colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_AUTHOR);
         make_from (hdr->env, buf2, sizeof (buf2), 0);
-       mutt_format_s (dest, destlen, prefix, buf2);
+       mutt_format_s (dest+colorlen, destlen-colorlen, prefix, buf2);
+       add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);
       }
       else if (mutt_addr_is_user (hdr->env->from))
         optional = 0;
@@ -463,7 +502,9 @@ hdr_format_str (char *dest,
       if (!optional)
       {
        snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
-       snprintf (dest, destlen, fmt, (int) hdr->lines);
+       colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_SIZE);
+       snprintf (dest+colorlen, destlen-colorlen, fmt, (int) hdr->lines);
+       add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);
       }
       else if (hdr->lines <= 0)
         optional = 0;
@@ -472,8 +513,10 @@ hdr_format_str (char *dest,
     case 'L':
       if (!optional)
       {
+       colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_AUTHOR);
        make_from (hdr->env, buf2, sizeof (buf2), 1);
-       mutt_format_s (dest, destlen, prefix, buf2);
+       mutt_format_s (dest+colorlen, destlen-colorlen, prefix, buf2);
+       add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);
       }
       else if (!check_for_mailing_list (hdr->env->to, NULL, NULL, 0) &&
               !check_for_mailing_list (hdr->env->cc, NULL, NULL, 0))
@@ -528,10 +571,16 @@ hdr_format_str (char *dest,
       snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
       if (!optional)
       {
-       if (threads && is_index && hdr->collapsed && hdr->num_hidden > 1)
-         snprintf (dest, destlen, fmt, hdr->num_hidden);
-       else if (is_index && threads)
-         mutt_format_s (dest, destlen, prefix, " ");
+       colorlen = add_index_color(dest, destlen, flags,
+                                  MT_COLOR_INDEX_COLLAPSED);
+       if (threads && is_index && hdr->collapsed && hdr->num_hidden > 1) {
+         snprintf (dest+colorlen, destlen-colorlen, fmt, hdr->num_hidden);
+         add_index_color(dest, destlen-colorlen, flags, MT_COLOR_INDEX);
+       }
+       else if (is_index && threads) {
+         mutt_format_s (dest+colorlen, destlen-colorlen, prefix, " ");
+         add_index_color(dest, destlen-colorlen, flags, MT_COLOR_INDEX);
+       }
        else
          *dest = '\0';
       }
@@ -552,15 +601,23 @@ hdr_format_str (char *dest,
       {
        if (flags & M_FORMAT_FORCESUBJ)
        {
-         mutt_format_s (dest, destlen, "", NONULL (hdr->env->subject));
+         colorlen = add_index_color(dest, destlen, flags, 
MT_COLOR_INDEX_SUBJECT);
+         mutt_format_s (dest+colorlen, destlen-colorlen, "",
+             NONULL (hdr->env->subject));
+         add_index_color(dest+colorlen, destlen-colorlen, flags, 
MT_COLOR_INDEX);
+
          snprintf (buf2, sizeof (buf2), "%s%s", hdr->tree, dest);
          mutt_format_s_tree (dest, destlen, prefix, buf2);
        }
        else
          mutt_format_s_tree (dest, destlen, prefix, hdr->tree);
       }
-      else
-       mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->subject));
+      else {
+       colorlen = add_index_color(dest, destlen, flags, 
MT_COLOR_INDEX_SUBJECT);
+       mutt_format_s (dest+colorlen, destlen-colorlen, prefix,
+           NONULL (hdr->env->subject));
+       add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);
+      }
       break;
 
     case 'S':
@@ -656,7 +713,9 @@ hdr_format_str (char *dest,
                hdr->tagged ? '*' :
                (hdr->flagged ? '!' :
                 (Tochars && ((i = mutt_user_is_recipient (hdr)) < mutt_strlen 
(Tochars)) ? Tochars[i] : ' ')));
-      mutt_format_s (dest, destlen, prefix, buf2);
+      colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_FLAGS);
+      mutt_format_s (dest+colorlen, destlen-colorlen, prefix, buf2);
+      add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);
       break;
 
     case 'X':
@@ -676,7 +735,9 @@ hdr_format_str (char *dest,
        if (optional)
         optional = hdr->env->x_label ? 1 : 0;
 
-       mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->x_label));
+       colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_LABEL);
+       mutt_format_s (dest+colorlen, destlen-colorlen, prefix, NONULL 
(hdr->env->x_label));
+       add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);
        break;
  
     case 'Y':
@@ -702,10 +763,12 @@ hdr_format_str (char *dest,
       if (optional)
        optional = i;
 
+      colorlen = add_index_color(dest, destlen, flags, MT_COLOR_INDEX_LABEL);
       if (i)
-        mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->x_label));
+        mutt_format_s (dest+colorlen, destlen-colorlen, prefix, NONULL 
(hdr->env->x_label));
       else
-        mutt_format_s (dest, destlen, prefix, "");
+        mutt_format_s (dest+colorlen, destlen-colorlen, prefix, "");
+      add_index_color(dest+colorlen, destlen-colorlen, flags, MT_COLOR_INDEX);
 
       break;
 
Index: mutt/menu.c
===================================================================
--- mutt.orig/menu.c    2008-07-09 11:00:30.395737142 +0200
+++ mutt/menu.c 2008-07-09 10:58:08.896071000 +0200
@@ -37,7 +37,30 @@ extern int Charset_is_utf8; /* FIXME: ba
 
 extern size_t UngetCount;
 
-static void print_enriched_string (int attr, unsigned char *s, int do_color)
+static int get_color(int index, int type) {
+  COLOR_LINE *color;
+  HEADER *hdr = Context->hdrs[index];
+
+  switch (type) {
+    case MT_COLOR_INDEX_SUBJECT:
+      color = ColorIndexSubjectList;
+      break;
+    case MT_COLOR_INDEX_AUTHOR:
+      color = ColorIndexAuthorList;
+      break;
+    default:
+      return ColorDefs[type];
+  }
+
+  for (; color; color = color->next)
+    if (mutt_pattern_exec (color->color_pattern, M_MATCH_FULL_ADDRESS,
+       Context, hdr))
+      return color->pair;
+
+  return 0;
+}
+
+static void print_enriched_string (int index, int attr, unsigned char *s, int 
do_color)
 {
   wchar_t wc;
   size_t k;
@@ -134,6 +157,18 @@ static void print_enriched_string (int a
       }
       if (do_color) attrset(attr);
     }
+    else if(*s == M_SPECIAL_INDEX)
+    {
+      s++;
+      if (do_color) {
+       if (*s == MT_COLOR_INDEX)
+         attrset(attr);
+       else
+         attron(get_color(index, *s));
+      }
+      s++;
+      n -= 2;
+    }
     else if ((k = mbrtowc (&wc, (char *)s, n, &mbstate)) > 0)
     {
       addnstr ((char *)s, k);
@@ -237,7 +272,7 @@ void menu_redraw_index (MUTTMENU *menu)
          addstr ("   ");
        }
 
-        print_enriched_string (menu->color(i), (unsigned char *) buf, 1);
+        print_enriched_string (i, menu->color(i), (unsigned char *) buf, 1);
         SETCOLOR (MT_COLOR_NORMAL);          
       }
       else
@@ -251,7 +286,7 @@ void menu_redraw_index (MUTTMENU *menu)
        }
 
        CLEARLINE_WIN (i - menu->top + menu->offset);
-       print_enriched_string (menu->color(i), (unsigned char *) buf, i != 
menu->current);
+       print_enriched_string (i, menu->color(i), (unsigned char *) buf, i != 
menu->current);
         SETCOLOR (MT_COLOR_NORMAL);
         BKGDSET (MT_COLOR_NORMAL);
       }
@@ -288,7 +323,7 @@ void menu_redraw_motion (MUTTMENU *menu)
       menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent);
       menu_pad_string (buf, sizeof (buf));
       move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth + 3);
-      print_enriched_string (menu->color(menu->oldcurrent), (unsigned char *) 
buf, 1);
+      print_enriched_string (menu->oldcurrent, menu->color(menu->oldcurrent), 
(unsigned char *) buf, 1);
       SETCOLOR (MT_COLOR_NORMAL);
     }
 
@@ -306,7 +341,7 @@ void menu_redraw_motion (MUTTMENU *menu)
     clrtoeol ();
     menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent);
     menu_pad_string (buf, sizeof (buf));
-    print_enriched_string (menu->color(menu->oldcurrent), (unsigned char *) 
buf, 1);
+    print_enriched_string (menu->oldcurrent, menu->color(menu->oldcurrent), 
(unsigned char *) buf, 1);
 
     /* now draw the new one to reflect the change */
     menu_make_entry (buf, sizeof (buf), menu, menu->current);
@@ -315,7 +350,7 @@ void menu_redraw_motion (MUTTMENU *menu)
     ADDCOLOR (MT_COLOR_INDICATOR);
     BKGDSET (MT_COLOR_INDICATOR);
     CLEARLINE_WIN (menu->current - menu->top + menu->offset);
-    print_enriched_string (menu->color(menu->current), (unsigned char *) buf, 
0);
+    print_enriched_string (menu->current, menu->color(menu->current), 
(unsigned char *) buf, 0);
     SETCOLOR (MT_COLOR_NORMAL);
     BKGDSET (MT_COLOR_NORMAL);
   }
@@ -341,7 +376,7 @@ void menu_redraw_current (MUTTMENU *menu
     attrset (attr);
     addch (' ');
     menu_pad_string (buf, sizeof (buf));
-    print_enriched_string (menu->color(menu->current), (unsigned char *) buf, 
1);
+    print_enriched_string (menu->current, menu->color(menu->current), 
(unsigned char *) buf, 1);
     SETCOLOR (MT_COLOR_NORMAL);
   }
   else
@@ -350,7 +385,7 @@ void menu_redraw_current (MUTTMENU *menu
     ADDCOLOR (MT_COLOR_INDICATOR);
     BKGDSET (MT_COLOR_INDICATOR);
     clrtoeol ();
-    print_enriched_string (menu->color(menu->current), (unsigned char *) buf, 
0);
+    print_enriched_string (menu->current, menu->color(menu->current), 
(unsigned char *) buf, 0);
     SETCOLOR (MT_COLOR_NORMAL);
     BKGDSET (MT_COLOR_NORMAL);
   }
Index: mutt/mutt_curses.h
===================================================================
--- mutt.orig/mutt_curses.h     2008-07-09 11:00:30.395737142 +0200
+++ mutt/mutt_curses.h  2008-07-09 10:49:17.328692000 +0200
@@ -127,6 +127,16 @@ enum
   MT_COLOR_BOLD,
   MT_COLOR_UNDERLINE,
   MT_COLOR_INDEX,
+  /* please no non-MT_COLOR_INDEX objects after this point */
+  MT_COLOR_INDEX_SUBJECT,
+  MT_COLOR_INDEX_AUTHOR,
+  /* below only index coloring stuff that doesn't have a colorline! */
+  MT_COLOR_INDEX_COLLAPSED,
+  MT_COLOR_INDEX_DATE,
+  MT_COLOR_INDEX_FLAGS,
+  MT_COLOR_INDEX_LABEL,
+  MT_COLOR_INDEX_NUMBER,
+  MT_COLOR_INDEX_SIZE,
   MT_COLOR_NEW,
   MT_COLOR_FLAGGED,
   MT_COLOR_MAX
@@ -182,6 +192,8 @@ extern int ColorDefs[];
 extern COLOR_LINE *ColorHdrList;
 extern COLOR_LINE *ColorBodyList;
 extern COLOR_LINE *ColorIndexList;
+extern COLOR_LINE *ColorIndexSubjectList;
+extern COLOR_LINE *ColorIndexAuthorList;
 
 void ci_init_color (void);
 void ci_start_color (void);
Index: mutt/mutt.h
===================================================================
--- mutt.orig/mutt.h    2008-07-09 11:00:30.395737142 +0200
+++ mutt/mutt.h 2008-07-09 10:47:00.461693000 +0200
@@ -182,6 +182,8 @@ typedef enum
 #define M_TREE_MISSING         13
 #define M_TREE_MAX             14
 
+#define M_SPECIAL_INDEX                M_TREE_MAX
+
 #define M_THREAD_COLLAPSE      (1<<0)
 #define M_THREAD_UNCOLLAPSE    (1<<1)
 #define M_THREAD_GET_HIDDEN    (1<<2)
Index: mutt/doc/manual.xml.head
===================================================================
--- mutt.orig/doc/manual.xml.head       2008-07-09 11:00:30.091748547 +0200
+++ mutt/doc/manual.xml.head    2008-07-09 10:47:00.465694000 +0200
@@ -1997,8 +1997,8 @@ silently truncated at the screen width, 
 <para>
 <literallayout>
 Usage: <literal>color</literal> <emphasis>object</emphasis> 
<emphasis>foreground</emphasis> <emphasis>background</emphasis> &lsqb; 
<emphasis>regexp</emphasis> &rsqb;
-Usage: <literal>color</literal> index <emphasis>foreground</emphasis> 
<emphasis>background</emphasis> <emphasis>pattern</emphasis>
-Usage: <literal>uncolor</literal> index <emphasis>pattern</emphasis> &lsqb; 
<emphasis>pattern</emphasis> ...  &rsqb;
+Usage: <literal>color</literal> <emphasis>index-object</emphasis> 
<emphasis>foreground</emphasis> <emphasis>background</emphasis> 
<emphasis>pattern</emphasis>
+  Usage: <literal>uncolor</literal> <emphasis>index-object</emphasis> 
<emphasis>pattern</emphasis> &lsqb; <emphasis>pattern</emphasis> ...  &rsqb;
 </literallayout>
 </para>
 
@@ -2061,6 +2061,54 @@ index (match <emphasis>pattern</emphasis
 <listitem>
 
 <para>
+index_author (color of the author name in the index, uses 
<emphasis>pattern</emphasis>)
+</para>
+</listitem>
+<listitem>
+
+<para>
+index_collapsed (the number of messages in a collapsed thread in the index)
+</para>
+</listitem>
+<listitem>
+
+<para>
+index_date (color of the date field in the index)
+</para>
+</listitem>
+<listitem>
+
+<para>
+index_flags (color of the message flags in the index)
+</para>
+</listitem>
+<listitem>
+
+<para>
+index_label (color of the message label in the index)
+</para>
+</listitem>
+<listitem>
+
+<para>
+index_number (color of the message number in the index)
+</para>
+</listitem>
+<listitem>
+
+<para>
+index_size (color of the message size and line number in the index)
+</para>
+</listitem>
+<listitem>
+
+<para>
+index_subject (color of the subject in the index, uses 
<emphasis>pattern</emphasis>)
+</para>
+</listitem>
+<listitem>
+
+<para>
 indicator (arrow or bar used to indicate the current item in a menu)
 </para>
 </listitem>
--- a/PATCHES
+++ b/PATCHES
@@ -0,0 +1 @@
+patch-1.5.13.greek0.indexcolor-3+cb

Attachment: signature.asc
Description: Digital signature

Reply via email to