[RFC,3/3] Deprecate and replace the "tabset" command

Message ID 20180903184300.9961-4-tom@tromey.com
State New, archived
Headers

Commit Message

Tom Tromey Sept. 3, 2018, 6:43 p.m. UTC
  The "tabset" command sets the tab width as used by the TUI for source
and disassembly display.

This command has long seemed to be misnamed to me.  It is more in
keeping with gdb design to call it "set tui tab-width".  Also, making
this change allows for the corresponding "show" command to work.

gdb/ChangeLog
2018-09-03  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.

gdb/doc/ChangeLog
2018-09-03  Tom Tromey  <tom@tromey.com>

	PR tui/18388:
	* gdb.texinfo (TUI Commands): Remove tabset documentation.
	(TUI Configuration): Document "set tui tab-width".
---
 gdb/ChangeLog        |  18 +++
 gdb/NEWS             |   4 +
 gdb/doc/ChangeLog    |   6 +
 gdb/doc/gdb.texinfo  |  15 +--
 gdb/tui/tui-data.c   |  17 ---
 gdb/tui/tui-data.h   |   4 +-
 gdb/tui/tui-disasm.c |   2 +-
 gdb/tui/tui-source.c |   8 +-
 gdb/tui/tui-win.c    | 313 ++++++++++++++++++++++++++++++---------------------
 9 files changed, 227 insertions(+), 160 deletions(-)
  

Comments

Eli Zaretskii Sept. 3, 2018, 6:58 p.m. UTC | #1
> From: Tom Tromey <tom@tromey.com>
> Cc: Tom Tromey <tom@tromey.com>
> Date: Mon,  3 Sep 2018 12:43:00 -0600
> 
> The "tabset" command sets the tab width as used by the TUI for source
> and disassembly display.
> 
> This command has long seemed to be misnamed to me.  It is more in
> keeping with gdb design to call it "set tui tab-width".  Also, making
> this change allows for the corresponding "show" command to work.
> 
> gdb/ChangeLog
> 2018-09-03  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.
> 
> gdb/doc/ChangeLog
> 2018-09-03  Tom Tromey  <tom@tromey.com>
> 
> 	PR tui/18388:
> 	* gdb.texinfo (TUI Commands): Remove tabset documentation.
> 	(TUI Configuration): Document "set tui tab-width".

OK for the documentation parts.

Thanks.
  

Patch

diff --git a/gdb/NEWS b/gdb/NEWS
index 75436b0fc32..0c94c7ab8d3 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -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
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index f2d1155b4db..d266b07513d 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -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
diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c
index e5f2f5ba657..91223980f6a 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 791aa4f1f76..cc3faed3170 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -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 */
diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c
index dd61d1e77c9..688dbc879fa 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 49c21368123..af4096df930 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 c42d7f036cd..e2fa7e296c2 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)
@@ -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);
+}