]> granicus.if.org Git - mutt/commitdiff
Added support for the "light" color prefix (in addition to "bright").
authorVincent Lefevre <vincent@vinc17.net>
Sat, 29 Dec 2018 18:37:57 +0000 (19:37 +0100)
committerVincent Lefevre <vincent@vinc17.net>
Sat, 29 Dec 2018 18:52:38 +0000 (19:52 +0100)
At the same time, restrict the advance by 8 to colors in the range 0-7
and no longer use the blink attribute to emulate light background colors
in some terminals (e.g. linux console and rxvt), as this is really blink
in other terminals (e.g. xterm); light background colors can still be
obtained by choosing a proper $TERM value (tested with linux console,
using TERM=linux-16color, and rxvt).

color.c
doc/manual.xml.head

diff --git a/color.c b/color.c
index af979dfc70d710e1a85c7dff53506fb5a621b9a0..892155a15277cc06638f3eb28a2dbf2aaff3d57f 100644 (file)
--- a/color.c
+++ b/color.c
@@ -331,13 +331,18 @@ static int
 parse_color_name (const char *s, int *col, int *attr, int is_fg, BUFFER *err)
 {
   char *eptr;
-  int is_bright = 0;
+  int is_bright = 0, is_light = 0;
 
   if (ascii_strncasecmp (s, "bright", 6) == 0)
   {
     is_bright = 1;
     s += 6;
   }
+  else if (ascii_strncasecmp (s, "light", 5) == 0)
+  {
+    is_light = 1;
+    s += 5;
+  }
 
   /* allow aliases for xterm color resources */
   if (ascii_strncasecmp (s, "color", 5) == 0)
@@ -357,21 +362,33 @@ parse_color_name (const char *s, int *col, int *attr, int is_fg, BUFFER *err)
     return (-1);
   }
 
-  if (is_bright)
+  if (is_bright || is_light)
   {
     if (is_fg)
     {
-      *attr |= A_BOLD;
-    }
-    else if (COLORS < 16)
-    {
-      /* A_BLINK turns the background color brite on some terms */
-      *attr |= A_BLINK;
+      if ((COLORS >= 16) && is_light)
+      {
+        if (*col < 8)
+        {
+          /* Advance the color 0-7 by 8 to get the light version */
+          *col += 8;
+        }
+      }
+      else
+      {
+        *attr |= A_BOLD;
+      }
     }
     else
     {
-      /* Advance the color by 8 to get the bright version */
-      *col += 8;
+      if (COLORS >= 16)
+      {
+        if (*col < 8)
+        {
+          /* Advance the color 0-7 by 8 to get the light version */
+          *col += 8;
+        }
+      }
     }
   }
 
index aef594d64910bb2c4aad83716d127822745e49c6..b53b19a0c84a4fdfa487f3509dd815b93ebc9a16 100644 (file)
@@ -2816,9 +2816,13 @@ be one of the following:
 </itemizedlist>
 
 <para>
-<emphasis>foreground</emphasis> can optionally be prefixed with the
-keyword <literal>bright</literal> to make the foreground color boldfaced
-(e.g., <literal>brightred</literal>).
+The color name can optionally be prefixed with the keyword
+<literal>bright</literal> or <literal>light</literal> to make the color
+boldfaced or light (e.g., <literal>brightred</literal>). The precise
+behavior depends on the terminal and its configuration. In particular,
+the boldfaced/light difference and such background colors may be
+available only for terminals configured with at least 16&nbsp;colors,
+as specified by the <literal>$TERM</literal> environment variable.
 </para>
 
 <para>