@@ -58,6 +58,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
@@ -26656,13 +26656,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
@@ -26714,6 +26707,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
@@ -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. */
@@ -333,8 +333,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);
@@ -346,4 +344,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 */
@@ -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;
@@ -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);
@@ -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)
@@ -1114,6 +1007,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
@@ -1126,30 +1078,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."));
}
}
@@ -1708,3 +1645,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);
+}