diff options
-rw-r--r-- | gdb/ChangeLog | 18 | ||||
-rw-r--r-- | gdb/NEWS | 4 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 15 | ||||
-rw-r--r-- | gdb/tui/tui-data.c | 17 | ||||
-rw-r--r-- | gdb/tui/tui-data.h | 4 | ||||
-rw-r--r-- | gdb/tui/tui-disasm.c | 2 | ||||
-rw-r--r-- | gdb/tui/tui-source.c | 8 | ||||
-rw-r--r-- | gdb/tui/tui-win.c | 313 |
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. @@ -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); +} |