* [PATCH] [gdb] Rewrite error and warning emojis
@ 2026-08-12 13:55 Tom de Vries
2026-08-12 20:03 ` Tom Tromey
0 siblings, 1 reply; 2+ messages in thread
From: Tom de Vries @ 2026-08-12 13:55 UTC (permalink / raw)
To: gdb-patches
While working on PR34501 I realized that these two strings actually contain
two unicode characters:
...
static std::string warning_prefix = "⚠️ ";
static std::string error_prefix = "❌️ ";
...
Both the Warning Sign [1] and the Cross Mark [2] are followed by Variation
Selector-16 (VS16) [3].
To make this obvious, I decided to rewrite in a style that makes it explicit
both which unicode characters are used, and how they are encoded:
...
static std::string warning_prefix = u8"\u26A0\uFE0F ";
...
In the process I found out that the Cross Mark doesn't need VS16, because its
default presentation is already "Emoji" rather than "Text", so that one simply
becomes:
...
static std::string error_prefix = u8"\u274C ";
...
AFAICT, this property (default presentation == "Emoji") can be verified by
finding Cross Mark here [4] and checking that property Emoji_Presentation
applies.
Tested on x86_64-linux.
[1] https://www.compart.com/en/unicode/U+26A0
[2] https://www.compart.com/en/unicode/U+274C
[3] https://www.compart.com/en/unicode/U+FE0F
[4] https://www.unicode.org/Public/17.0.0/ucd/emoji/emoji-data.txt
---
gdb/cli/cli-style.c | 15 +++++++++++----
gdb/testsuite/gdb.base/style.exp | 2 +-
2 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
index 03a887232c7..5c175ee29ea 100644
--- a/gdb/cli/cli-style.c
+++ b/gdb/cli/cli-style.c
@@ -449,8 +449,12 @@ no_emojis ()
emoji_styling = AUTO_BOOLEAN_FALSE;
}
-/* Emoji warning prefix. */
-static std::string warning_prefix = "⚠️ ";
+/* Emoji warning prefix:
+ - u26A0: Warning Sign: ⚠
+ - uFE0F: Variation Selector-16 (VS16)
+ The VS16 forces "Emoji" presentation. It is needed because the default
+ presentation for Warning Sign is "Text". Together, we get: ⚠️ . */
+static std::string warning_prefix = u8"\u26A0\uFE0F ";
/* Implement 'show style warning-prefix'. */
@@ -471,8 +475,11 @@ print_warning_prefix (ui_file *file)
gdb_puts (warning_prefix.c_str (), file);
}
-/* Emoji error prefix. */
-static std::string error_prefix = "❌️ ";
+/* Emoji error prefix:
+ - u274C: Cross Mark: ❌
+ No VS16 is needed because the default presentation for Cross Mark is
+ "Emoji". */
+static std::string error_prefix = u8"\u274C ";
/* Implement 'show style error-prefix'. */
diff --git a/gdb/testsuite/gdb.base/style.exp b/gdb/testsuite/gdb.base/style.exp
index 8a49d1c5973..8d576ff00f1 100644
--- a/gdb/testsuite/gdb.base/style.exp
+++ b/gdb/testsuite/gdb.base/style.exp
@@ -335,7 +335,7 @@ proc run_style_tests { } {
gdb_test_no_output "set host-charset UTF-8"
# Chosen since it will print an error.
gdb_test "maint translate-address" \
- "❌️ requires argument.*" \
+ "❌ requires argument.*" \
"emoji output"
gdb_test_no_output "set style error-prefix abcd:" \
base-commit: 17afc47d8bc304f527eb58ea8086a39fdc0cbd19
--
2.51.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] [gdb] Rewrite error and warning emojis
2026-08-12 13:55 [PATCH] [gdb] Rewrite error and warning emojis Tom de Vries
@ 2026-08-12 20:03 ` Tom Tromey
0 siblings, 0 replies; 2+ messages in thread
From: Tom Tromey @ 2026-08-12 20:03 UTC (permalink / raw)
To: Tom de Vries; +Cc: gdb-patches
>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:
Tom> To make this obvious, I decided to rewrite in a style that makes it explicit
Tom> both which unicode characters are used, and how they are encoded:
Tom> ...
Tom> static std::string warning_prefix = u8"\u26A0\uFE0F ";
Seems reasonable to me.
Approved-By: Tom Tromey <tom@tromey.com>
Tom
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-12 20:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-12 13:55 [PATCH] [gdb] Rewrite error and warning emojis Tom de Vries
2026-08-12 20:03 ` Tom Tromey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox