[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] minibar: when the next character has zero width, show its code t
From: |
Benno Schulenberg |
Subject: |
[PATCH] minibar: when the next character has zero width, show its code too |
Date: |
Wed, 6 Jan 2021 20:23:30 +0100 |
This allows seeing that an accented character is not a single code point
but composed from a base character plus a combining character.
[ I don't really like how this behaves, and it doesn't handle the case
of multiple combining characters, but I can't think of a better way.
But I do want to be able to see it when a character is composed. ]
---
src/winio.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/winio.c b/src/winio.c
index 115c34f7..d8f304b0 100644
--- 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;
@@ -2150,10 +2151,19 @@ void minibar(void)
sprintf(hexadecimal, " 0x%02X", (unsigned
char)*this_position);
mvwaddstr(bottomwin, 0, COLS - 23, hexadecimal);
+
+ successor = this_position + char_length(this_position);
+
+ if (*this_position != '\0' && is_zerowidth(successor) &&
+ mbtowc(&widecode, successor,
MAXCHARLEN) >= 0) {
+ sprintf(hexadecimal, " U+%04X", widecode);
+ waddstr(bottomwin, hexadecimal);
+ } else
+ successor = NULL;
}
/* 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);
}
--
2.29.2
- [PATCH] minibar: when the next character has zero width, show its code too,
Benno Schulenberg <=