commit 41fd09706d734776f1b1f6bead8d58808ec71685
parent 24e5f956d0d017eb34963a2f5294f0d55bcd72f0
Author: Benno Schulenberg <bensberg@telfort.nl>
Date: Wed, 6 Jan 2021 15:27:14 +0100
minibar: when the next character has zero width, show its code too
This allows seeing that an accented character is not a single code point
but composed from a base character plus a combining character.
Diffstat:
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/winio.c b/src/winio.c
@@ -2072,6 +2072,7 @@ void minibar(void)
char *thename = NULL, *number_of_lines = NULL, *ranking = NULL;
char *location = nmalloc(44);
char *hexadecimal = nmalloc(9);
+ char *successor = NULL;
size_t namewidth, placewidth;
size_t tallywidth = 0;
size_t padding = 2;
@@ -2157,10 +2158,21 @@ void minibar(void)
sprintf(hexadecimal, " 0x%02X", (unsigned char)*this_position);
mvwaddstr(bottomwin, 0, COLS - 23, hexadecimal);
+
+#ifdef ENABLE_UTF8
+ successor = this_position + char_length(this_position);
+
+ if (*this_position != '\0' && is_zerowidth(successor) &&
+ mbtowc(&widecode, successor, MAXCHARLEN) >= 0) {
+ sprintf(hexadecimal, "|%04X", (int)widecode);
+ waddstr(bottomwin, hexadecimal);
+ } else
+ successor = NULL;
+#endif
}
/* Display the state of three flags, and the state of macro and mark. */
- if (namewidth + tallywidth + 14 + 2 * padding < COLS) {
+ if (!successor && namewidth + tallywidth + 14 + 2 * padding < COLS) {
wmove(bottomwin, 0, COLS - 11 - padding);
show_states_at(bottomwin);
}