Add the "set style source" command

This adds "set style source" (and "show style source") commands.  This
gives the user control over whether source code is highlighted.

gdb/ChangeLog
2019-03-14  Tom Tromey  <tromey@adacore.com>

	* NEWS: Add item for "style sources" commands.
	* source-cache.c (source_cache::get_source_lines): Check
	source_styling.
	* cli/cli-style.c (source_styling): New global.
	(_initialize_cli_style): Add "style sources" commands.
	(show_style_sources): New function.
	* cli/cli-style.h (source_styling): Declare.

gdb/doc/ChangeLog
2019-03-14  Tom Tromey  <tromey@adacore.com>

	* gdb.texinfo (Output Styling): Document "set style source" and
	"show style source".

gdb/testsuite/ChangeLog
2019-03-14  Tom Tromey  <tromey@adacore.com>

	* gdb.base/style.exp: Add "set style sources" test.
This commit is contained in:
Tom Tromey 2019-03-08 13:54:07 -07:00
parent 6f11e6824e
commit d085f98901
9 changed files with 74 additions and 1 deletions

View File

@ -1,3 +1,13 @@
2019-03-14 Tom Tromey <tromey@adacore.com>
* NEWS: Add item for "style sources" commands.
* source-cache.c (source_cache::get_source_lines): Check
source_styling.
* cli/cli-style.c (source_styling): New global.
(_initialize_cli_style): Add "style sources" commands.
(show_style_sources): New function.
* cli/cli-style.h (source_styling): Declare.
2019-03-14 Pedro Alves <palves@redhat.com>
Tom Tromey <tromey@adacore.com>

View File

@ -140,6 +140,12 @@ show style enabled
Enable or disable terminal styling. Styling is enabled by default
on most hosts, but disabled by default when in batch mode.
set style sources [on|off]
show style sources
Enable or disable source code styling. Source code styling is
enabled by default, but only takes effect if styling in general is
enabled, and if GDB was linked with GNU Source Highlight.
set style filename foreground COLOR
set style filename background COLOR
set style filename intensity VALUE

View File

@ -31,6 +31,11 @@ int cli_styling = 0;
int cli_styling = 1;
#endif
/* True if source styling is enabled. Note that this is only
consulted when cli_styling is true. */
int source_styling = 1;
/* Name of colors; must correspond to ui_file_style::basic_color. */
static const char * const cli_colors[] = {
"none",
@ -230,6 +235,16 @@ show_style_enabled (struct ui_file *file, int from_tty,
fprintf_filtered (file, _("CLI output styling is disabled.\n"));
}
static void
show_style_sources (struct ui_file *file, int from_tty,
struct cmd_list_element *c, const char *value)
{
if (source_styling)
fprintf_filtered (file, _("Source code styling is enabled.\n"));
else
fprintf_filtered (file, _("Source code styling is disabled.\n"));
}
void
_initialize_cli_style ()
{
@ -249,6 +264,20 @@ If enabled, output to the terminal is styled."),
set_style_enabled, show_style_enabled,
&style_set_list, &style_show_list);
add_setshow_boolean_cmd ("sources", no_class, &source_styling, _("\
Set whether source code styling is enabled."), _("\
Show whether source code styling is enabled."), _("\
If enabled, source code is styled.\n"
#ifdef HAVE_SOURCE_HIGHLIGHT
"Note that source styling only works if styling in general is enabled,\n\
see \"show style enabled\"."
#else
"Source highlighting is disabled in this installation of gdb, because\n\
it was not linked against GNU Source Highlight."
#endif
), set_style_enabled, show_style_sources,
&style_set_list, &style_show_list);
#define STYLE_ADD_SETSHOW_COMMANDS(STYLE, NAME, PREFIX_DOC) \
STYLE.add_setshow_commands (NAME, no_class, PREFIX_DOC, \
&style_set_list, \

View File

@ -93,6 +93,9 @@ extern cli_style_option variable_name_style;
/* The address style. */
extern cli_style_option address_style;
/* True if source styling is enabled. */
extern int source_styling;
/* True if styling is enabled. */
extern int cli_styling;

View File

@ -1,3 +1,8 @@
2019-03-14 Tom Tromey <tromey@adacore.com>
* gdb.texinfo (Output Styling): Document "set style source" and
"show style source".
2019-03-13 Simon Marchi <simon.marchi@ericsson.com>
* gdb.texinfo (Mode Options): Mention mi3.

View File

@ -24525,6 +24525,16 @@ most hosts defaulting to @samp{on}.
@item show style enabled
Show the current state of styling.
@item set style sources @samp{on|off}
Enable or disable source code styling. This affects whether source
code, such as the output of the @code{list} command, is styled. Note
that source styling only works if styling in general is enabled, and
if @value{GDBN} was linked with the GNU Source Highlight library. The
default is @samp{on}.
@item show style sources
Show the current state of source code styling.
@end table
Subcommands of @code{set style} control specific forms of styling.

View File

@ -180,7 +180,7 @@ source_cache::get_source_lines (struct symtab *s, int first_line,
return false;
#ifdef HAVE_SOURCE_HIGHLIGHT
if (can_emit_style_escape (gdb_stdout))
if (source_styling && can_emit_style_escape (gdb_stdout))
{
const char *fullname = symtab_to_fullname (s);

View File

@ -1,3 +1,7 @@
2019-03-14 Tom Tromey <tromey@adacore.com>
* gdb.base/style.exp: Add "set style sources" test.
2019-03-13 Simon Marchi <simon.marchi@ericsson.com>
* mi-breakpoint-location-ena-dis.exp: Rename to ...

View File

@ -50,6 +50,12 @@ save_vars { env(TERM) } {
"$main_expr.*$arg_expr.*$arg_expr.*$file_expr.*"
gdb_test "info breakpoints" "$main_expr at $file_expr.*"
gdb_test_no_output "set style sources off"
gdb_test "frame" \
"\r\n\[^\033\]*break here.*" \
"frame without styling"
gdb_test_no_output "set style sources on"
gdb_test "break main" "file $base_file_expr.*"
gdb_test "print &main" " = .* \033\\\[34m$hex\033\\\[m <$main_expr>"