]> granicus.if.org Git - neomutt/commitdiff
Make "uncolor" also work header and body objects. Closes #1046.
authorSeth Arnold <seth.arnold@suse.de>
Fri, 15 May 2009 10:46:33 +0000 (12:46 +0200)
committerSeth Arnold <seth.arnold@suse.de>
Fri, 15 May 2009 10:46:33 +0000 (12:46 +0200)
UPDATING
color.c
doc/manual.xml.head

index 0e34d4028ac2e3273a40967b37e24fc7653dc2c2..50c735d5001f5aa6181c8c224aaaf3c01bda0bf0 100644 (file)
--- a/UPDATING
+++ b/UPDATING
@@ -5,6 +5,7 @@ The keys used are:
   !: modified feature, -: deleted feature, +: new feature
 
 hg tip:
+  + uncolor works for header + body objects, too
   + the "flagged" and "replied" flags are enabled/supported for
     POP when built with header caching
   + <set-flag> and <clear-flag> work in the pager, too
diff --git a/color.c b/color.c
index 0288eb194f6b0e230c4818592d609ab114eadf85..b39957f0c593697e995b21ef005df429678a60b9 100644 (file)
--- a/color.c
+++ b/color.c
@@ -364,12 +364,12 @@ int mutt_parse_unmono (BUFFER *buf, BUFFER *s, unsigned long data,
   return _mutt_parse_uncolor(buf, s, data, err, 0);
 }
 
-static int 
-_mutt_parse_uncolor (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err, 
-                        short parse_uncolor)
+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;
+  COLOR_LINE **list;
 
   mutt_extract_token (buf, s, 0);
 
@@ -379,14 +379,20 @@ _mutt_parse_uncolor (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err,
     return (-1);
   }
 
-  if (mutt_strncmp (buf->data, "index", 5) != 0)
+  if (mutt_strncmp (buf->data, "index", 5) == 0)
+    list = &ColorIndexList;
+  else if (mutt_strncmp (buf->data, "body", 4) == 0)
+    list = &ColorBodyList;
+  else if (mutt_strncmp (buf->data, "header", 7) == 0)
+    list = &ColorHdrList;
+  else
   {
     snprintf (err->data, err->dsize,
-             _("%s: command valid only for index object"), 
+             _("%s: command valid only for index, body, header objects"),
              parse_uncolor ? "uncolor" : "unmono");
     return (-1);
   }
-  
+
   if (!MoreArgs (s))
   {
     snprintf (err->data, err->dsize,
@@ -415,14 +421,13 @@ _mutt_parse_uncolor (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err,
 
     return 0;
   }
-     
-  
+
   do
   {
     mutt_extract_token (buf, s, 0);
     if (!mutt_strcmp ("*", buf->data))
     {
-      for (tmp = ColorIndexList; tmp; )
+      for (tmp = *list; tmp; )
       {
         if (!do_cache)
          do_cache = 1;
@@ -430,22 +435,22 @@ _mutt_parse_uncolor (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err,
        tmp = tmp->next;
        mutt_free_color_line(&last, parse_uncolor);
       }
-      ColorIndexList = NULL;
+      *list = NULL;
     }
     else
     {
-      for (last = NULL, tmp = ColorIndexList; tmp; last = tmp, tmp = tmp->next)
+      for (last = NULL, tmp = *list; 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",
+         dprint(1,(debugfile,"Freeing pattern \"%s\" from color list\n",
                               tmp->pattern));
          if (last)
            last->next = tmp->next;
          else
-           ColorIndexList = tmp->next;
+           *list = tmp->next;
          mutt_free_color_line(&tmp, parse_uncolor);
          break;
        }
index e684d0af5837378d0e2102bf5714588b6b940ca4..27b382ef599f3dc11a2eb2afba057cf903bc3bf0 100644 (file)
@@ -2467,9 +2467,17 @@ silently truncated at the screen width, and are not wrapped.
 </arg>
 
 <command>uncolor</command>
+<group choice="req">
 <arg choice="plain">
 <option>index</option>
 </arg>
+<arg choice="plain">
+<option>header</option>
+</arg>
+<arg choice="plain">
+<option>body</option>
+</arg>
+</group>
 <group choice="req">
 <arg choice="plain">
 <replaceable>*</replaceable>
@@ -2561,10 +2569,10 @@ setting this variable.
 
 <note>
 <para>
-The uncolor command can be applied to the index object only.  It
+The uncolor command can be applied to the index, header and body objects only.  It
 removes entries from the list. You <emphasis>must</emphasis> specify the same pattern
 specified in the color command for it to be removed.  The pattern <quote>*</quote> is
-a special token which means to clear the color index list of all entries.
+a special token which means to clear the color list of all entries.
 </para>
 </note>
 
@@ -2619,9 +2627,17 @@ attributes through the use of the <quote>mono</quote> command. Usage:
 </arg>
 
 <command>unmono</command>
+<group choice="req">
 <arg choice="plain">
 <option>index</option>
 </arg>
+<arg choice="plain">
+<option>header</option>
+</arg>
+<arg choice="plain">
+<option>body</option>
+</arg>
+</group>
 <group choice="req">
 <arg choice="plain">
 <replaceable>*</replaceable>
@@ -7842,12 +7858,25 @@ The following are the commands understood by Mutt:
 </arg>
 
 <command><link linkend="color">uncolor</link></command>
+<group choice="req">
 <arg choice="plain">
 <option>index</option>
 </arg>
+<arg choice="plain">
+<option>header</option>
+</arg>
+<arg choice="plain">
+<option>body</option>
+</arg>
+</group>
+<group choice="req">
+<arg choice="plain">
+<replaceable>*</replaceable>
+</arg>
 <arg choice="plain" rep="repeat">
-<replaceable class="parameter">pattern</replaceable>
+<replaceable>pattern</replaceable>
 </arg>
+</group>
 </cmdsynopsis>
 </listitem>
 
@@ -8148,9 +8177,17 @@ The following are the commands understood by Mutt:
 </arg>
 
 <command><link linkend="mono">unmono</link></command>
+<group choice="req">
 <arg choice="plain">
 <option>index</option>
 </arg>
+<arg choice="plain">
+<option>header</option>
+</arg>
+<arg choice="plain">
+<option>body</option>
+</arg>
+</group>
 <group choice="req">
 <arg choice="plain">
 <replaceable class="parameter">*</replaceable>