nano-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] display: suppress spotlight yellow and error red when NO_COLOR i


From: Benno Schulenberg
Subject: [PATCH] display: suppress spotlight yellow and error red when NO_COLOR is set
Date: Tue, 1 Mar 2022 11:48:29 +0100

This makes nano conform to the https://no-color.org/ idea: suppressing
any color in the output (in the default setup) when NO_COLOR is set in
the environment.
---
 src/color.c      | 6 ++++++
 src/global.c     | 2 ++
 src/nano.c       | 3 +++
 src/prototypes.h | 1 +
 4 files changed, 12 insertions(+)

diff --git a/src/color.c b/src/color.c
index a04982cb..bad60a63 100644
--- a/src/color.c
+++ b/src/color.c
@@ -53,6 +53,7 @@ void set_interface_colorpairs(void)
                        }
                        init_pair(index + 1, combo->fg, combo->bg);
                        interface_color_pair[index] = COLOR_PAIR(index + 1) | 
combo->attributes;
+                       rescind_colors = FALSE;
                } else {
                        if (index == FUNCTION_TAG || index == SCROLL_BAR)
                                interface_color_pair[index] = A_NORMAL;
@@ -72,6 +73,11 @@ void set_interface_colorpairs(void)
 
                free(color_combo[index]);
        }
+
+       if (rescind_colors) {
+               interface_color_pair[SPOTLIGHTED] = A_REVERSE;
+               interface_color_pair[ERROR_MESSAGE] = A_REVERSE;
+       }
 }
 
 /* Assign a pair number to each of the foreground/background color combinations
diff --git a/src/global.c b/src/global.c
index 0a32f139..4bb7535c 100644
--- a/src/global.c
+++ b/src/global.c
@@ -201,6 +201,8 @@ char *syntaxstr = NULL;
                /* The color syntax name specified on the command line. */
 bool have_palette = FALSE;
                /* Whether the colors for the current syntax have been 
initialized. */
+bool rescind_colors = FALSE;
+               /* Becomes TRUE when NO_COLOR is set in the environment. */
 #endif
 
 int currmenu = MMOST;
diff --git a/src/nano.c b/src/nano.c
index 28eb4ef7..5d39b2c3 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -2087,6 +2087,9 @@ int main(int argc, char **argv)
        /* If the terminal can do colors, tell ncurses to switch them on. */
        if (has_colors())
                start_color();
+
+       /* When requested, suppress the default spotlight and error colors. */
+       rescind_colors = (getenv("NO_COLOR") != NULL);
 #endif
 
        /* Set up the function and shortcut lists.  This needs to be done
diff --git a/src/prototypes.h b/src/prototypes.h
index cf79680e..c43981af 100644
--- a/src/prototypes.h
+++ b/src/prototypes.h
@@ -141,6 +141,7 @@ extern char *alt_speller;
 extern syntaxtype *syntaxes;
 extern char *syntaxstr;
 extern bool have_palette;
+extern bool rescind_colors;
 #endif
 
 extern bool refresh_needed;
-- 
2.34.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]