aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2022-11-01 16:45:30 +0000
committerAndrew Burgess <aburgess@redhat.com>2022-11-16 10:34:19 +0000
commit92c1d07de5f1d82421fcb78331d1e7c70a24ff23 (patch)
treec6861a7da09fcb25139470f766de4ba0fef97c50
parentfeb5926e8a85837e97c268af53db743b545957f5 (diff)
downloadfsf-binutils-gdb-92c1d07de5f1d82421fcb78331d1e7c70a24ff23.zip
fsf-binutils-gdb-92c1d07de5f1d82421fcb78331d1e7c70a24ff23.tar.gz
fsf-binutils-gdb-92c1d07de5f1d82421fcb78331d1e7c70a24ff23.tar.bz2
gdb: add "set style tui-current-position on|off", default to off
As discussed at: https://sourceware.org/pipermail/gdb-patches/2020-June/169519.html this patch disables source and assembly code highlighting for the text highlighted by the TUI's current position indicator, and adds a command to enable it back.
-rw-r--r--gdb/NEWS9
-rw-r--r--gdb/cli/cli-style.c4
-rw-r--r--gdb/doc/gdb.texinfo17
-rw-r--r--gdb/gdbcmd.h4
-rw-r--r--gdb/tui/tui-io.c13
-rw-r--r--gdb/tui/tui-win.c37
-rw-r--r--gdb/tui/tui-win.h4
7 files changed, 83 insertions, 5 deletions
diff --git a/gdb/NEWS b/gdb/NEWS
index 0642d76..3f31515 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -73,6 +73,11 @@
For both /r and /b GDB is now better at using whitespace in order to
align the disassembled instruction text.
+* The TUI no longer styles the source and assembly code highlighted by
+ the current position indicator by default. You can however
+ re-enable styling using the new "set style tui-current-position"
+ command.
+
* New commands
maintenance set ignore-prologue-end-flag on|off
@@ -117,6 +122,10 @@ set debug infcall on|off
show debug infcall
Print additional debug messages about inferior function calls.
+set style tui-current-position [on|off]
+ Whether to style the source and assembly code highlighted by the
+ TUI's current position indicator. The default is off.
+
* Changed commands
document user-defined
diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
index abf6855..062347b 100644
--- a/gdb/cli/cli-style.c
+++ b/gdb/cli/cli-style.c
@@ -296,8 +296,8 @@ cli_style_option::add_setshow_commands (enum command_class theclass,
return prefix_cmds;
}
-static cmd_list_element *style_set_list;
-static cmd_list_element *style_show_list;
+cmd_list_element *style_set_list;
+cmd_list_element *style_show_list;
/* The command list for 'set style disassembler'. */
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index ea66f4e..f5f664f 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -26602,6 +26602,15 @@ then it will be used.
@item show style sources
Show the current state of source code styling.
+@item set style tui-current-position @samp{on|off}
+Enable or disable styling of the source and assembly code highlighted
+by the TUI's current position indicator. The default is @samp{off}.
+@xref{TUI, ,@value{GDBN} Text User Interface}.
+
+@item show style tui-current-position
+Show whether the source and assembly code highlighted by the TUI's
+current position indicator is styled.
+
@anchor{style_disassembler_enabled}
@item set style disassembler enabled @samp{on|off}
Enable or disable disassembler styling. This affects whether
@@ -29163,8 +29172,12 @@ This window shows the processor registers. Registers are highlighted
when their values change.
@end table
-The source and assembly windows show the current program position
-by highlighting the current line and marking it with a @samp{>} marker.
+The source and assembly windows show the current program position by
+highlighting the current line and marking it with a @samp{>} marker.
+By default, source and assembly code styling is disabled for the
+highlighted text, but you can enable it with the @code{set style
+tui-current-position on} command. @xref{Output Styling}.
+
Breakpoints are indicated with two markers. The first marker
indicates the breakpoint type:
diff --git a/gdb/gdbcmd.h b/gdb/gdbcmd.h
index a05c68e..c508870 100644
--- a/gdb/gdbcmd.h
+++ b/gdb/gdbcmd.h
@@ -65,4 +65,8 @@ extern void print_command_line (struct command_line *, unsigned int,
extern void print_command_lines (struct ui_out *,
struct command_line *, unsigned int);
+/* Chains containing all defined "set/show style" subcommands. */
+extern struct cmd_list_element *style_set_list;
+extern struct cmd_list_element *style_show_list;
+
#endif /* !defined (GDBCMD_H) */
diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c
index a30000e..5278c38 100644
--- a/gdb/tui/tui-io.c
+++ b/gdb/tui/tui-io.c
@@ -369,6 +369,9 @@ apply_ansi_escape (WINDOW *w, const char *buf)
if (reverse_mode_p)
{
+ if (!style_tui_current_position)
+ return n_read;
+
/* We want to reverse _only_ the default foreground/background
colors. If the foreground color is not the default (because
the text was styled), we want to leave it as is. If e.g.,
@@ -411,12 +414,18 @@ tui_set_reverse_mode (WINDOW *w, bool reverse)
ui_file_style style = last_style;
reverse_mode_p = reverse;
- style.set_reverse (reverse);
if (reverse)
{
reverse_save_bg = style.get_background ();
reverse_save_fg = style.get_foreground ();
+
+ if (!style_tui_current_position)
+ {
+ /* Switch to default style (reversed) while highlighting the
+ current position. */
+ style = {};
+ }
}
else
{
@@ -424,6 +433,8 @@ tui_set_reverse_mode (WINDOW *w, bool reverse)
style.set_fg (reverse_save_fg);
}
+ style.set_reverse (reverse);
+
tui_apply_style (w, style);
}
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index 31b6606..e24763c 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -218,6 +218,30 @@ show_tui_border_kind (struct ui_file *file,
value);
}
+/* Implementation of the "set/show style tui-current-position" commands. */
+
+bool style_tui_current_position = false;
+
+static void
+show_style_tui_current_position (ui_file *file,
+ int from_tty,
+ cmd_list_element *c,
+ const char *value)
+{
+ gdb_printf (file, _("\
+Styling the text highlighted by the TUI's current position indicator is %s.\n"),
+ value);
+}
+
+static void
+set_style_tui_current_position (const char *ignore, int from_tty,
+ cmd_list_element *c)
+{
+ if (TUI_SRC_WIN != nullptr)
+ TUI_SRC_WIN->refill ();
+ if (TUI_DISASM_WIN != nullptr)
+ TUI_DISASM_WIN->refill ();
+}
/* Tui internal configuration variables. These variables are updated
by tui_update_variables to reflect the tui configuration
@@ -1195,6 +1219,19 @@ the line numbers and uses less horizontal space."),
tui_set_compact_source, tui_show_compact_source,
&tui_setlist, &tui_showlist);
+ add_setshow_boolean_cmd ("tui-current-position", class_maintenance,
+ &style_tui_current_position, _("\
+Set whether to style text highlighted by the TUI's current position indicator."),
+ _("\
+Show whether to style text highlighted by the TUI's current position indicator."),
+ _("\
+When enabled, the source and assembly code highlighted by the TUI's current\n\
+position indicator is styled."),
+ set_style_tui_current_position,
+ show_style_tui_current_position,
+ &style_set_list,
+ &style_show_list);
+
tui_border_style.changed.attach (tui_rehighlight_all, "tui-win");
tui_active_border_style.changed.attach (tui_rehighlight_all, "tui-win");
}
diff --git a/gdb/tui/tui-win.h b/gdb/tui/tui-win.h
index 9a92fa3..bdc6da0 100644
--- a/gdb/tui/tui-win.h
+++ b/gdb/tui/tui-win.h
@@ -51,4 +51,8 @@ struct cmd_list_element **tui_get_cmd_list (void);
/* Whether compact source display should be used. */
extern bool compact_source;
+/* Whether to style the source and assembly code highlighted by the TUI's
+ current position indicator. */
+extern bool style_tui_current_position;
+
#endif /* TUI_TUI_WIN_H */