Use emoji to indicate errors and warnings

This patch adds, at long last, some emoji output to gdb.  In
particular, warnings are indicated with the U+26A0 (WARNING SIGN), and
errors with U+274C (CROSS MARK).

There is a new setting to control whether emoji output can be used.
It defaults to "auto", which means emoji will be used if the host
charset is UTF-8.  Note that disabling styling will also disable
emoji, handy for traditionalists.

I've refactored mingw console output a little, so that emoji will not
be printed to the console.  Note the previous code here was a bit
strange in that it assumed that the first use of gdb_console_fputs
would be to stdout.

This version lets the user control the prefixes directly, so different
emoji can be chosen if desired.

Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Reviewed-By: Keith Seitz <keiths@redhat.com>
Reviewed-By: Guinevere Larsen <guinevere@redhat.com>
This commit is contained in:
Tom Tromey
2024-12-20 14:00:39 -07:00
parent 5c87b330e9
commit a048980c4e
10 changed files with 207 additions and 17 deletions

View File

@@ -25,6 +25,7 @@
#include "serial.h"
#include "ui.h"
#include <optional>
#include "cli/cli-style.h"
static void
print_flush (void)
@@ -105,6 +106,7 @@ exception_print (struct ui_file *file, const struct gdb_exception &e)
if (e.reason < 0 && e.message != NULL)
{
print_flush ();
print_error_prefix (file);
print_exception (file, e);
}
}
@@ -118,6 +120,7 @@ exception_fprintf (struct ui_file *file, const struct gdb_exception &e,
va_list args;
print_flush ();
print_error_prefix (file);
/* Print the prefix. */
va_start (args, prefix);