Code

Allow multiple text attributes for color commands
authorJonas Fonseca <fonseca@diku.dk>
Mon, 13 Apr 2009 15:34:14 +0000 (17:34 +0200)
committerJonas Fonseca <fonseca@diku.dk>
Mon, 13 Apr 2009 15:34:14 +0000 (17:34 +0200)
This also fixes lazy behavior so that setting the cursor color no longer
automatically sets the text to bold.

NEWS
tig.c

diff --git a/NEWS b/NEWS
index cf56f493a11965cbf7c8845c27b1a42e4c84083b..492255f49c5260895c9871c74fee9056fa42e0b1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,11 @@ Release notes
 tig master
 ---------
 
+Incompatibilities:
+
+ - Setting the cursor color no longer automatically sets the text to
+   bold. The old 'lazy' behavior was a bug.
+
 Improvements:
 
  - Add branch view for choosing which branch to display in the main
@@ -14,6 +19,9 @@ Improvements:
  - Make height of the lower view in a split view configurable by setting
    the 'split-view-height' variable to a number or a percentage.
    Defaults to 2/3 of the total view height.
+ - Allow multiple text attributes for color commands:
+
+       color cursor white blue underline bold
 
 Bug fixes:
 
diff --git a/tig.c b/tig.c
index 3d04317cd6da6beb23f804bfe9bd23ffe8de4939..cffa86d5fcafdd22544a19e7283f5e1f3241749d 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -1488,7 +1488,7 @@ option_color_command(int argc, const char *argv[])
 {
        struct line_info *info;
 
-       if (argc != 3 && argc != 4) {
+       if (argc < 3) {
                config_msg = "Wrong number of arguments given to color command";
                return ERR;
        }
@@ -1515,9 +1515,15 @@ option_color_command(int argc, const char *argv[])
                return ERR;
        }
 
-       if (argc == 4 && !set_attribute(&info->attr, argv[3])) {
-               config_msg = "Unknown attribute";
-               return ERR;
+       info->attr = 0;
+       while (argc-- > 3) {
+               int attr;
+
+               if (!set_attribute(&attr, argv[argc])) {
+                       config_msg = "Unknown attribute";
+                       return ERR;
+               }
+               info->attr |= attr;
        }
 
        return OK;