From 4c566c79033ea106588afd23389452588246a18f Mon Sep 17 00:00:00 2001
From: Rishabh Dave <rishabhddave@gmail.com>
Date: Sun, 17 Jul 2016 18:59:07 +0530
Subject: [PATCH] tweaks: reduce the number of wattron/wattrof calls

Also, compose the coloring attributes during initialization
instead of every time when painting something.

Signed-off-by: Rishabh Dave <rishabhddave@gmail.com>
Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 src/color.c | 3 +++
 src/nano.h  | 2 ++
 src/winio.c | 7 ++-----
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/color.c b/src/color.c
index 3f5ae674..a351059d 100644
--- a/src/color.c
+++ b/src/color.c
@@ -97,6 +97,9 @@ void set_colorpairs(void)
 		this_color->pairnum = clr_pair;
 		clr_pair++;
 	    }
+
+	    this_color->attributes = COLOR_PAIR(this_color->pairnum) |
+				(this_color->bright ? A_BOLD : A_NORMAL);
 	}
     }
 }
diff --git a/src/nano.h b/src/nano.h
index ff880d8d..ddab2a99 100644
--- a/src/nano.h
+++ b/src/nano.h
@@ -210,6 +210,8 @@ typedef struct colortype {
     int pairnum;
 	/* The color pair number used for this foreground color and
 	 * background color. */
+    int attributes;
+	/* Pair number and brightness composed into ready-to-use attributes. */
     int rex_flags;
 	/* The regex compilation flags (with or without REG_ICASE). */
     char *start_regex;
diff --git a/src/winio.c b/src/winio.c
index b0fbd245..800e1b9f 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -2265,9 +2265,7 @@ void edit_draw(filestruct *fileptr, const char *converted, int
 	    regmatch_t endmatch;
 		/* Match position for end_regex. */
 
-	    if (varnish->bright)
-		wattron(edit, A_BOLD);
-	    wattron(edit, COLOR_PAIR(varnish->pairnum));
+	    wattron(edit, varnish->attributes);
 	    /* Two notes about regexec().  A return value of zero means
 	     * that there is a match.  Also, rm_eo is the first
 	     * non-matching character after the match. */
@@ -2524,8 +2522,7 @@ void edit_draw(filestruct *fileptr, const char *converted, int
 		}
 	    }
   tail_of_loop:
-	    wattroff(edit, A_BOLD);
-	    wattroff(edit, COLOR_PAIR(varnish->pairnum));
+	    wattroff(edit, varnish->attributes);
 	}
     }
 #endif /* !DISABLE_COLOR */
-- 
GitLab