aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog18
-rw-r--r--gdb/NEWS4
-rw-r--r--gdb/doc/ChangeLog6
-rw-r--r--gdb/doc/gdb.texinfo15
-rw-r--r--gdb/tui/tui-data.c17
-rw-r--r--gdb/tui/tui-data.h4
-rw-r--r--gdb/tui/tui-disasm.c2
-rw-r--r--gdb/tui/tui-source.c8
-rw-r--r--gdb/tui/tui-win.c313
9 files changed, 227 insertions, 160 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 57a0a95..c703922 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,23 @@
2018-10-19 Tom Tromey <tom@tromey.com>
+ PR tui/18388:
+ * NEWS: Mention tabset deprecation.
+ * tui/tui-win.c (tui_tab_width, internal_tab_width): New globals.
+ (update_tab_width): New function.
+ (tui_set_tab_width, tui_show_tab_width): New functions.
+ (tui_set_tab_width_command): Use update_tab_width.
+ (_initialize_tui_win): Move to end of file. Deprecate "tabset".
+ Add new "set tui tab-width" command.
+ * tui/tui-source.c (tui_set_source_content): Update.
+ * tui/tui-disasm.c (tui_set_disassem_content): Update.
+ * tui/tui-data.h (tui_default_tab_len, tui_set_default_tab_len):
+ Don't declare.
+ (tui_tab_width): Declare.
+ * tui/tui-data.c (default_tab_len, tui_default_tab_len)
+ (tui_set_default_tab_len): Remove.
+
+2018-10-19 Tom Tromey <tom@tromey.com>
+
* tui/tui-io.h (key_is_start_sequence, key_is_end_sequence)
(key_is_backspace, tui_getc): Don't declare.
* tui/tui-io.c (key_is_start_sequence): Now static.
diff --git a/gdb/NEWS b/gdb/NEWS
index 126e61e..1f311a4 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -79,6 +79,10 @@ thread apply [all | COUNT | -COUNT] [FLAG]... COMMAND
FLAG arguments allow to control what output to produce and how to handle
errors raised when applying COMMAND to a thread.
+set tui tab-width NCHARS
+show tui tab-width NCHARS
+ "set tui tab-width" replaces the "tabset" command, which has been deprecated.
+
* MI changes
** The '-data-disassemble' MI command now accepts an '-a' option to
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 0cab170..4eee031 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,9 @@
+2018-10-19 Tom Tromey <tom@tromey.com>
+
+ PR tui/18388:
+ * gdb.texinfo (TUI Commands): Remove tabset documentation.
+ (TUI Configuration): Document "set tui tab-width".
+
2018-10-09 Tom Tromey <tom@tromey.com>
* python.texi (Inferiors In Python): Link to "Frames In Python",
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index b0dc3bf..e985a7c 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -26780,13 +26780,6 @@ decrease it. The @var{name} parameter can be one of @code{src} (the
source window), @code{cmd} (the command window), @code{asm} (the
disassembly window), or @code{regs} (the register display window).
-@item tabset @var{nchars}
-@kindex tabset
-Set the width of tab stops to be @var{nchars} characters. This
-setting affects the display of TAB characters in the source and
-assembly windows.
-@end table
-
@node TUI Configuration
@section TUI Configuration Variables
@cindex TUI configuration variables
@@ -26838,6 +26831,14 @@ Use extra bright or bold mode.
@item bold-standout
Use extra bright or bold and standout mode.
@end table
+
+@item set tui tab-width @var{nchars}
+@kindex set tui tab-width
+@kindex tabset
+Set the width of tab stops to be @var{nchars} characters. This
+setting affects the display of TAB characters in the source and
+assembly windows.
+@end table
@end table
@node Emacs
diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c
index 66693af..4391f0d 100644
--- a/gdb/tui/tui-data.c
+++ b/gdb/tui/tui-data.c
@@ -40,7 +40,6 @@ static struct tui_gen_win_info _locator;
static struct tui_gen_win_info exec_info[2];
static struct tui_win_info *src_win_list[2];
static struct tui_list source_windows = {src_win_list, 0};
-static int default_tab_len = DEFAULT_TAB_LEN;
static struct tui_win_info *win_with_focus = NULL;
static struct tui_layout_def layout_def = {
SRC_WIN, /* DISPLAY_MODE */
@@ -136,22 +135,6 @@ tui_set_win_with_focus (struct tui_win_info *win_info)
}
-/* Answer the length in chars, of tabs. */
-int
-tui_default_tab_len (void)
-{
- return default_tab_len;
-}
-
-
-/* Set the length in chars, of tabs. */
-void
-tui_set_default_tab_len (int len)
-{
- default_tab_len = len;
-}
-
-
/* Accessor for the current source window. Usually there is only one
source window (either source or disassembly), but both can be
displayed at the same time. */
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index 79a438d..231534f 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -331,8 +331,6 @@ extern void tui_clear_source_windows (void);
extern void tui_clear_source_windows_detail (void);
extern void tui_clear_win_detail (struct tui_win_info *);
extern void tui_add_to_source_windows (struct tui_win_info *);
-extern int tui_default_tab_len (void);
-extern void tui_set_default_tab_len (int);
extern struct tui_win_info *tui_win_with_focus (void);
extern void tui_set_win_with_focus (struct tui_win_info *);
extern struct tui_layout_def *tui_layout_def (void);
@@ -344,4 +342,6 @@ extern struct tui_win_info *tui_prev_win (struct tui_win_info *);
extern void tui_add_to_source_windows (struct tui_win_info *);
+extern unsigned int tui_tab_width;
+
#endif /* TUI_DATA_H */
diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c
index 1bbfd1e..da461c1 100644
--- a/gdb/tui/tui-disasm.c
+++ b/gdb/tui/tui-disasm.c
@@ -171,7 +171,7 @@ tui_set_disassem_content (struct gdbarch *gdbarch, CORE_ADDR pc)
int max_lines, line_width;
CORE_ADDR cur_pc;
struct tui_gen_win_info *locator = tui_locator_win_info_ptr ();
- int tab_len = tui_default_tab_len ();
+ int tab_len = tui_tab_width;
struct tui_asm_line *asm_lines;
int insn_pos;
int addr_size, insn_size;
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index de8b77e..a26b7b0 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -131,9 +131,9 @@ tui_set_source_content (struct symtab *s,
/* Init the line with the line number. */
sprintf (src_line, "%-6d", cur_line_no);
cur_len = strlen (src_line);
- i = cur_len - ((cur_len / tui_default_tab_len ())
- * tui_default_tab_len ());
- while (i < tui_default_tab_len ())
+ i = cur_len - ((cur_len / tui_tab_width)
+ * tui_tab_width);
+ while (i < tui_tab_width)
{
src_line[cur_len] = ' ';
i++;
@@ -181,7 +181,7 @@ tui_set_source_content (struct symtab *s,
if (c == '\t')
{
int j, max_tab_len
- = tui_default_tab_len ();
+ = tui_tab_width;
for (j = i - ((i / max_tab_len)
* max_tab_len);
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index bcd0e54..0234ed4 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -430,113 +430,6 @@ winheight_completer (struct cmd_list_element *ignore,
window_name_completer (tracker, 0, text, word);
}
-/* Function to initialize gdb commands, for tui window
- manipulation. */
-
-void
-_initialize_tui_win (void)
-{
- static struct cmd_list_element *tui_setlist;
- static struct cmd_list_element *tui_showlist;
- struct cmd_list_element *cmd;
-
- /* Define the classes of commands.
- They will appear in the help list in the reverse of this order. */
- add_prefix_cmd ("tui", class_tui, set_tui_cmd,
- _("TUI configuration variables"),
- &tui_setlist, "set tui ",
- 0 /* allow-unknown */, &setlist);
- add_prefix_cmd ("tui", class_tui, show_tui_cmd,
- _("TUI configuration variables"),
- &tui_showlist, "show tui ",
- 0 /* allow-unknown */, &showlist);
-
- add_com ("refresh", class_tui, tui_refresh_all_command,
- _("Refresh the terminal display.\n"));
- add_com ("tabset", class_tui, tui_set_tab_width_command, _("\
-Set the width (in characters) of tab stops.\n\
-Usage: tabset N\n"));
- cmd = add_com ("winheight", class_tui, tui_set_win_height_command, _("\
-Set or modify the height of a specified window.\n"
-WIN_HEIGHT_USAGE
-"Window names are:\n\
-src : the source window\n\
-cmd : the command window\n\
-asm : the disassembly window\n\
-regs : the register display\n"));
- add_com_alias ("wh", "winheight", class_tui, 0);
- set_cmd_completer (cmd, winheight_completer);
- add_info ("win", tui_all_windows_info,
- _("List of all displayed windows.\n"));
- cmd = add_com ("focus", class_tui, tui_set_focus_command, _("\
-Set focus to named window or next/prev window.\n"
-FOCUS_USAGE
-"Valid Window names are:\n\
-src : the source window\n\
-asm : the disassembly window\n\
-regs : the register display\n\
-cmd : the command window\n"));
- add_com_alias ("fs", "focus", class_tui, 0);
- set_cmd_completer (cmd, focus_completer);
- add_com ("+", class_tui, tui_scroll_forward_command, _("\
-Scroll window forward.\n\
-Usage: + [WIN] [N]\n"));
- add_com ("-", class_tui, tui_scroll_backward_command, _("\
-Scroll window backward.\n\
-Usage: - [WIN] [N]\n"));
- add_com ("<", class_tui, tui_scroll_left_command, _("\
-Scroll window text to the left.\n\
-Usage: < [WIN] [N]\n"));
- add_com (">", class_tui, tui_scroll_right_command, _("\
-Scroll window text to the right.\n\
-Usage: > [WIN] [N]\n"));
-
- /* Define the tui control variables. */
- add_setshow_enum_cmd ("border-kind", no_class, tui_border_kind_enums,
- &tui_border_kind, _("\
-Set the kind of border for TUI windows."), _("\
-Show the kind of border for TUI windows."), _("\
-This variable controls the border of TUI windows:\n\
-space use a white space\n\
-ascii use ascii characters + - | for the border\n\
-acs use the Alternate Character Set"),
- tui_set_var_cmd,
- show_tui_border_kind,
- &tui_setlist, &tui_showlist);
-
- add_setshow_enum_cmd ("border-mode", no_class, tui_border_mode_enums,
- &tui_border_mode, _("\
-Set the attribute mode to use for the TUI window borders."), _("\
-Show the attribute mode to use for the TUI window borders."), _("\
-This variable controls the attributes to use for the window borders:\n\
-normal normal display\n\
-standout use highlight mode of terminal\n\
-reverse use reverse video mode\n\
-half use half bright\n\
-half-standout use half bright and standout mode\n\
-bold use extra bright or bold\n\
-bold-standout use extra bright or bold with standout mode"),
- tui_set_var_cmd,
- show_tui_border_mode,
- &tui_setlist, &tui_showlist);
-
- add_setshow_enum_cmd ("active-border-mode", no_class, tui_border_mode_enums,
- &tui_active_border_mode, _("\
-Set the attribute mode to use for the active TUI window border."), _("\
-Show the attribute mode to use for the active TUI window border."), _("\
-This variable controls the attributes to use for the active window border:\n\
-normal normal display\n\
-standout use highlight mode of terminal\n\
-reverse use reverse video mode\n\
-half use half bright\n\
-half-standout use half bright and standout mode\n\
-bold use extra bright or bold\n\
-bold-standout use extra bright or bold with standout mode"),
- tui_set_var_cmd,
- show_tui_active_border_mode,
- &tui_setlist, &tui_showlist);
-}
-
/* Update gdb's knowledge of the terminal size. */
void
tui_update_gdb_sizes (void)
@@ -1113,6 +1006,65 @@ tui_refresh_all_command (const char *arg, int from_tty)
tui_refresh_all_win ();
}
+/* The tab width that should be used by the TUI. */
+
+unsigned int tui_tab_width = DEFAULT_TAB_LEN;
+
+/* The tab width as set by the user. */
+
+static unsigned int internal_tab_width = DEFAULT_TAB_LEN;
+
+/* After the tab width is set, call this to update the relevant
+ windows. */
+
+static void
+update_tab_width ()
+{
+ /* We don't really change the height of any windows, but
+ calling these 2 functions causes a complete regeneration
+ and redisplay of the window's contents, which will take
+ the new tab width into account. */
+ if (tui_win_list[SRC_WIN]
+ && tui_win_list[SRC_WIN]->generic.is_visible)
+ {
+ make_invisible_and_set_new_height (TUI_SRC_WIN,
+ TUI_SRC_WIN->generic.height);
+ make_visible_with_new_height (TUI_SRC_WIN);
+ }
+ if (tui_win_list[DISASSEM_WIN]
+ && tui_win_list[DISASSEM_WIN]->generic.is_visible)
+ {
+ make_invisible_and_set_new_height (TUI_DISASM_WIN,
+ TUI_DISASM_WIN->generic.height);
+ make_visible_with_new_height (TUI_DISASM_WIN);
+ }
+}
+
+/* Callback for "set tui tab-width". */
+
+static void
+tui_set_tab_width (const char *ignore,
+ int from_tty, struct cmd_list_element *c)
+{
+ if (internal_tab_width == 0)
+ {
+ internal_tab_width = tui_tab_width;
+ error (_("Tab width must not be 0"));
+ }
+
+ tui_tab_width = internal_tab_width;
+ update_tab_width ();
+}
+
+/* Callback for "show tui tab-width". */
+
+static void
+tui_show_tab_width (struct ui_file *file, int from_tty,
+ struct cmd_list_element *c, const char *value)
+{
+ fprintf_filtered (gdb_stdout, _("TUI tab width is %s spaces.\n"), value);
+
+}
/* Set the tab width of the specified window. */
static void
@@ -1125,30 +1077,15 @@ tui_set_tab_width_command (const char *arg, int from_tty)
int ts;
ts = atoi (arg);
- if (ts > 0)
+ if (ts <= 0)
+ warning (_("Tab widths greater than 0 must be specified."));
+ else
{
- tui_set_default_tab_len (ts);
- /* We don't really change the height of any windows, but
- calling these 2 functions causes a complete regeneration
- and redisplay of the window's contents, which will take
- the new tab width into account. */
- if (tui_win_list[SRC_WIN]
- && tui_win_list[SRC_WIN]->generic.is_visible)
- {
- make_invisible_and_set_new_height (TUI_SRC_WIN,
- TUI_SRC_WIN->generic.height);
- make_visible_with_new_height (TUI_SRC_WIN);
- }
- if (tui_win_list[DISASSEM_WIN]
- && tui_win_list[DISASSEM_WIN]->generic.is_visible)
- {
- make_invisible_and_set_new_height (TUI_DISASM_WIN,
- TUI_DISASM_WIN->generic.height);
- make_visible_with_new_height (TUI_DISASM_WIN);
- }
+ internal_tab_width = ts;
+ tui_tab_width = ts;
+
+ update_tab_width ();
}
- else
- warning (_("Tab widths greater than 0 must be specified."));
}
}
@@ -1706,3 +1643,121 @@ The window name specified must be valid and visible.\n"));
}
}
}
+
+/* Function to initialize gdb commands, for tui window
+ manipulation. */
+
+void
+_initialize_tui_win (void)
+{
+ static struct cmd_list_element *tui_setlist;
+ static struct cmd_list_element *tui_showlist;
+ struct cmd_list_element *cmd;
+
+ /* Define the classes of commands.
+ They will appear in the help list in the reverse of this order. */
+ add_prefix_cmd ("tui", class_tui, set_tui_cmd,
+ _("TUI configuration variables"),
+ &tui_setlist, "set tui ",
+ 0 /* allow-unknown */, &setlist);
+ add_prefix_cmd ("tui", class_tui, show_tui_cmd,
+ _("TUI configuration variables"),
+ &tui_showlist, "show tui ",
+ 0 /* allow-unknown */, &showlist);
+
+ add_com ("refresh", class_tui, tui_refresh_all_command,
+ _("Refresh the terminal display.\n"));
+
+ cmd = add_com ("tabset", class_tui, tui_set_tab_width_command, _("\
+Set the width (in characters) of tab stops.\n\
+Usage: tabset N\n"));
+ deprecate_cmd (cmd, "set tui tab-width");
+
+ cmd = add_com ("winheight", class_tui, tui_set_win_height_command, _("\
+Set or modify the height of a specified window.\n"
+WIN_HEIGHT_USAGE
+"Window names are:\n\
+src : the source window\n\
+cmd : the command window\n\
+asm : the disassembly window\n\
+regs : the register display\n"));
+ add_com_alias ("wh", "winheight", class_tui, 0);
+ set_cmd_completer (cmd, winheight_completer);
+ add_info ("win", tui_all_windows_info,
+ _("List of all displayed windows.\n"));
+ cmd = add_com ("focus", class_tui, tui_set_focus_command, _("\
+Set focus to named window or next/prev window.\n"
+FOCUS_USAGE
+"Valid Window names are:\n\
+src : the source window\n\
+asm : the disassembly window\n\
+regs : the register display\n\
+cmd : the command window\n"));
+ add_com_alias ("fs", "focus", class_tui, 0);
+ set_cmd_completer (cmd, focus_completer);
+ add_com ("+", class_tui, tui_scroll_forward_command, _("\
+Scroll window forward.\n\
+Usage: + [WIN] [N]\n"));
+ add_com ("-", class_tui, tui_scroll_backward_command, _("\
+Scroll window backward.\n\
+Usage: - [WIN] [N]\n"));
+ add_com ("<", class_tui, tui_scroll_left_command, _("\
+Scroll window text to the left.\n\
+Usage: < [WIN] [N]\n"));
+ add_com (">", class_tui, tui_scroll_right_command, _("\
+Scroll window text to the right.\n\
+Usage: > [WIN] [N]\n"));
+
+ /* Define the tui control variables. */
+ add_setshow_enum_cmd ("border-kind", no_class, tui_border_kind_enums,
+ &tui_border_kind, _("\
+Set the kind of border for TUI windows."), _("\
+Show the kind of border for TUI windows."), _("\
+This variable controls the border of TUI windows:\n\
+space use a white space\n\
+ascii use ascii characters + - | for the border\n\
+acs use the Alternate Character Set"),
+ tui_set_var_cmd,
+ show_tui_border_kind,
+ &tui_setlist, &tui_showlist);
+
+ add_setshow_enum_cmd ("border-mode", no_class, tui_border_mode_enums,
+ &tui_border_mode, _("\
+Set the attribute mode to use for the TUI window borders."), _("\
+Show the attribute mode to use for the TUI window borders."), _("\
+This variable controls the attributes to use for the window borders:\n\
+normal normal display\n\
+standout use highlight mode of terminal\n\
+reverse use reverse video mode\n\
+half use half bright\n\
+half-standout use half bright and standout mode\n\
+bold use extra bright or bold\n\
+bold-standout use extra bright or bold with standout mode"),
+ tui_set_var_cmd,
+ show_tui_border_mode,
+ &tui_setlist, &tui_showlist);
+
+ add_setshow_enum_cmd ("active-border-mode", no_class, tui_border_mode_enums,
+ &tui_active_border_mode, _("\
+Set the attribute mode to use for the active TUI window border."), _("\
+Show the attribute mode to use for the active TUI window border."), _("\
+This variable controls the attributes to use for the active window border:\n\
+normal normal display\n\
+standout use highlight mode of terminal\n\
+reverse use reverse video mode\n\
+half use half bright\n\
+half-standout use half bright and standout mode\n\
+bold use extra bright or bold\n\
+bold-standout use extra bright or bold with standout mode"),
+ tui_set_var_cmd,
+ show_tui_active_border_mode,
+ &tui_setlist, &tui_showlist);
+
+ add_setshow_zuinteger_cmd ("tab-width", no_class,
+ &internal_tab_width, _("\
+Set the tab width, in characters, for the TUI."), _("\
+Show the tab witdh, in characters, for the TUI"), _("\
+This variable controls how many spaces are used to display a tab character."),
+ tui_set_tab_width, tui_show_tab_width,
+ &tui_setlist, &tui_showlist);
+}