[PATCH 2/2] less: replace most uses of NORMAL escape with UNHIGHLIGHT

FriendlyNeighborhoodShane shane.880088.supw at gmail.com
Thu Apr 14 19:19:03 UTC 2022


Fixes conflict when -R's color escape codes are mixed together with
highlights. Better complement to HIGHLIGHT.
---
 miscutils/less.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/miscutils/less.c b/miscutils/less.c
index 392a3ef3c..7fcd6951a 100644
--- a/miscutils/less.c
+++ b/miscutils/less.c
@@ -155,6 +155,7 @@
 #define ESC "\033"
 /* The escape codes for highlighted and normal text */
 #define HIGHLIGHT   ESC"[7m"
+#define UNHIGHLIGHT ESC"[27m"
 #define NORMAL      ESC"[m"
 /* The escape code to home and clear to the end of screen */
 #define CLEAR       ESC"[H"ESC"[J"
@@ -312,13 +313,13 @@ static void clear_line(void)
 
 static void print_hilite(const char *str)
 {
-	printf(HIGHLIGHT"%s"NORMAL, str);
+	printf(HIGHLIGHT"%s"UNHIGHLIGHT, str);
 }
 
 static void print_statusline(const char *str)
 {
 	clear_line();
-	printf(HIGHLIGHT"%.*s"NORMAL, width - 1, str);
+	printf(HIGHLIGHT"%.*s"UNHIGHLIGHT, width - 1, str);
 }
 
 /* Exit the program gracefully */
@@ -710,7 +711,7 @@ static void m_status_print(void)
 		percent = (100 * last + num_lines/2) / num_lines;
 		printf(" %i%%", percent <= 100 ? percent : 100);
 	}
-	printf(NORMAL);
+	printf(UNHIGHLIGHT);
 }
 #endif
 
@@ -740,7 +741,7 @@ static void status_print(void)
 	if (!cur_fline)
 		p = filename;
 	if (num_files > 1) {
-		printf(HIGHLIGHT"%s (file %i of %i)"NORMAL,
+		printf(HIGHLIGHT"%s (file %i of %i)"UNHIGHLIGHT,
 				p, current_file, num_files);
 		return;
 	}
@@ -808,7 +809,7 @@ static void print_found(const char *line)
 	/* buf[] holds quarantined version of str */
 
 	/* Each part of the line that matches has the HIGHLIGHT
-	 * and NORMAL escape sequences placed around it.
+	 * and UNHIGHLIGHT escape sequences placed around it.
 	 * NB: we regex against line, but insert text
 	 * from quarantined copy (buf[]) */
 	str = buf;
@@ -817,7 +818,7 @@ static void print_found(const char *line)
 	goto start;
 
 	while (match_status == 0) {
-		char *new = xasprintf("%s%.*s"HIGHLIGHT"%.*s"NORMAL,
+		char *new = xasprintf("%s%.*s"HIGHLIGHT"%.*s"UNHIGHLIGHT,
 				growline ? growline : "",
 				(int)match_structs.rm_so, str,
 				(int)(match_structs.rm_eo - match_structs.rm_so),
@@ -1551,7 +1552,7 @@ static void show_flag_status(void)
 	}
 
 	clear_line();
-	printf(HIGHLIGHT"The status of the flag is: %u"NORMAL, flag_val != 0);
+	printf(HIGHLIGHT"The status of the flag is: %u"UNHIGHLIGHT, flag_val != 0);
 }
 #endif
 
-- 
2.35.2



More information about the busybox mailing list