From d085f98901ccd6c9764b93d3983f3c7797addc4f Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 8 Mar 2019 13:54:07 -0700 Subject: [PATCH] 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 * 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 * gdb.texinfo (Output Styling): Document "set style source" and "show style source". gdb/testsuite/ChangeLog 2019-03-14 Tom Tromey * gdb.base/style.exp: Add "set style sources" test. --- gdb/ChangeLog | 10 ++++++++++ gdb/NEWS | 6 ++++++ gdb/cli/cli-style.c | 29 +++++++++++++++++++++++++++++ gdb/cli/cli-style.h | 3 +++ gdb/doc/ChangeLog | 5 +++++ gdb/doc/gdb.texinfo | 10 ++++++++++ gdb/source-cache.c | 2 +- gdb/testsuite/ChangeLog | 4 ++++ gdb/testsuite/gdb.base/style.exp | 6 ++++++ 9 files changed, 74 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2fcd6cdb388..787949c5d93 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2019-03-14 Tom Tromey + + * 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 Tom Tromey diff --git a/gdb/NEWS b/gdb/NEWS index 53d1c6e2486..c45b3134064 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -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 diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c index fc91504d1f8..f6f6c7be5d9 100644 --- a/gdb/cli/cli-style.c +++ b/gdb/cli/cli-style.c @@ -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, \ diff --git a/gdb/cli/cli-style.h b/gdb/cli/cli-style.h index 287bad7d201..c0520f9e23f 100644 --- a/gdb/cli/cli-style.h +++ b/gdb/cli/cli-style.h @@ -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; diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 81512fa98c9..1b7dabffa22 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2019-03-14 Tom Tromey + + * gdb.texinfo (Output Styling): Document "set style source" and + "show style source". + 2019-03-13 Simon Marchi * gdb.texinfo (Mode Options): Mention mi3. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 20f6122ce1b..431752b4110 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -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. diff --git a/gdb/source-cache.c b/gdb/source-cache.c index 435de2ac6ef..3b15b3f2889 100644 --- a/gdb/source-cache.c +++ b/gdb/source-cache.c @@ -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); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 037f561595a..523013bf9b2 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2019-03-14 Tom Tromey + + * gdb.base/style.exp: Add "set style sources" test. + 2019-03-13 Simon Marchi * mi-breakpoint-location-ena-dis.exp: Rename to ... diff --git a/gdb/testsuite/gdb.base/style.exp b/gdb/testsuite/gdb.base/style.exp index 2778001fed5..369c1f59a88 100644 --- a/gdb/testsuite/gdb.base/style.exp +++ b/gdb/testsuite/gdb.base/style.exp @@ -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>" -- 2.39.5