gdb: make cli_styling static within cli/cli-style.c

The cli_styling variable is controlled by 'set style enabled on|off'
user setting, and is currently globally visible.

In a couple of places we access this variable directly, though in
ui-file.c the accesses are all performed through term_cli_styling(),
which is a function that wraps checking cli_styling along with a check
that GDB's terminal supports styling.

In a future commit, I'd plan to add a new parameter to gdb.execute()
which will allow styling to be temporarily suppressed.  In an earlier
proposal, I made gdb.execute() disable styling by changing the value
of cli_styling, however, this approach has a problem.

If gdb.execute() is used to run 'show style enabled', the changing
cli_styling will change what is printed.  Similarly, if gdb.execute()
is used to execute 'set style enabled on|off' then having
gdb.execute() save and restore the value of cli_styling will undo the
adjustment from 'set style enabled ...'.

So what I plan to do in the future, is add a new control flag which
can be used to temporarily disable styling.

To make this new control variable easier to add, lets force everyone
to call term_cli_styling() to check if styling is enabled or not.  To
force everyone to use term_cli_styling() this commit makes cli_styling
static within gdb/cli/cli-style.c.

Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
Andrew Burgess 2025-02-17 15:00:52 +00:00
parent 050c30f4db
commit a6924ac89d
5 changed files with 28 additions and 17 deletions

View File

@ -27,9 +27,9 @@
/* True if styling is enabled. */
#if defined (__MSDOS__)
bool cli_styling = false;
static bool cli_styling = false;
#else
bool cli_styling = true;
static bool cli_styling = true;
#endif
/* True if source styling is enabled. Note that this is only
@ -80,6 +80,22 @@ terminal_supports_styling ()
/* See cli/cli-style.h. */
void
disable_cli_styling ()
{
cli_styling = false;
}
/* See cli/cli-style.h. */
bool
term_cli_styling ()
{
return cli_styling;
}
/* See cli/cli-style.h. */
void
disable_styling_from_environment ()
{

View File

@ -157,13 +157,18 @@ extern bool source_styling;
/* True if disassembler styling is enabled. */
extern bool disassembler_styling;
/* True if styling is enabled. */
extern bool cli_styling;
/* Check for environment variables that indicate styling should start as
disabled. If any are found then disable styling. Styling is never
enabled by this call. If styling was already disabled then it remains
disabled after this call. */
extern void disable_styling_from_environment ();
/* Equivalent to 'set style enabled off'. Can be used during GDB's start
up if a command line option, or environment variable, indicates that
styling should be turned off. */
extern void disable_cli_styling ();
/* Return true styled output is currently enabled. */
extern bool term_cli_styling ();
#endif /* GDB_CLI_CLI_STYLE_H */

View File

@ -1027,7 +1027,7 @@ captured_main_1 (struct captured_main_args *context)
quiet = 1;
/* Disable all output styling when running in batch mode. */
cli_styling = false;
disable_cli_styling ();
}
}

View File

@ -80,7 +80,7 @@ box_win (struct tui_win_info *win_info,
/* tui_apply_style resets the style entirely, so be sure to call it
before applying ATTRS. */
if (cli_styling)
if (term_cli_styling ())
tui_apply_style (win, (highlight_flag
? tui_active_border_style.style ()
: tui_border_style.style ()));

View File

@ -180,16 +180,6 @@ null_file::write_async_safe (const char *buf, long sizeof_buf)
/* Return true if styling is currently enabled. */
static bool
term_cli_styling ()
{
return cli_styling;
}
string_file::~string_file ()
{}