gdb: move some commands into the tui namespace
authorAndrew Burgess <aburgess@redhat.com>
Mon, 24 Jan 2022 17:23:20 +0000 (17:23 +0000)
committerAndrew Burgess <aburgess@redhat.com>
Sun, 3 Apr 2022 14:15:08 +0000 (15:15 +0100)
There are a lot of tui related commands that live in the top-level
command name space, e.g. layout, focus, refresh, winheight.

Having them at the top level means less typing for the user, which is
good, but, I think, makes command discovery harder.

In this commit, I propose moving all of the above mentioned commands
into the tui namespace, so 'layout' becomes 'tui layout', etc.  But I
will then add aliases so that the old commands will still work,
e.g. I'll make 'layout' an alias for 'tui layout'.

The benefit I see in this work is that tui related commands can be
more easily discovered by typing 'tui ' and then tab-completing.  Also
the "official" command is now a tui-sub-command, this is visible in,
for example, the help output, e.g.:

  (gdb) help layout
  tui layout, layout
  Change the layout of windows.
  Usage: tui layout prev | next | LAYOUT-NAME

  List of tui layout subcommands:

  tui layout asm -- Apply the "asm" layout.
  tui layout next -- Apply the next TUI layout.
  tui layout prev -- Apply the previous TUI layout.
  tui layout regs -- Apply the TUI register layout.
  tui layout split -- Apply the "split" layout.
  tui layout src -- Apply the "src" layout.

Which I think is a good thing, it makes it clearer that this is a tui
command.

I've added a NEWS entry and updated the docs to mention the new and
old command names, with the new name being mentioned first.

gdb/NEWS
gdb/doc/gdb.texinfo
gdb/tui/tui-layout.c
gdb/tui/tui-win.c

index 0fbc4537303ef6d341c2d842d86487d9c3326813..10090aff0b41bed0df01f3f35b580b08abacdcc4 100644 (file)
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -140,6 +140,14 @@ show ada source-charset
   values for this follow the values that can be passed to the GNAT
   compiler via the '-gnati' option.  The default is ISO-8859-1.
 
+tui layout
+tui focus
+tui refresh
+tui window height
+  These are the new names for the old 'layout', 'focus', 'refresh',
+  and 'winheight' tui commands respectively.  The old names still
+  exist as aliases to these new commands.
+
 * Changed commands
 
 print
@@ -171,6 +179,13 @@ info win
   This command now includes information about the width of the tui
   windows in its output.
 
+layout
+focus
+refresh
+winheight
+  These commands are now aliases for the 'tui layout', 'tui focus',
+  'tui refresh', and 'tui window height' commands respectively.
+
 * GDB's Ada parser now supports an extension for specifying the exact
   byte contents of a floating-point literal.  This can be useful for
   setting floating-point registers to a precise value without loss of
index d21fd0d3f0a61e7b58495db1dae644157c2556e1..4aec2e81e9a5b9748f676ad616ea1bec74e60048 100644 (file)
@@ -29005,8 +29005,10 @@ status and command window being beneath these, filling the entire
 width of the terminal.  Because they have weight 2, the source and
 assembly windows will be twice the height of the command window.
 
-@item layout @var{name}
+@kindex tui layout
 @kindex layout
+@item tui layout @var{name}
+@itemx layout @var{name}
 Changes which TUI windows are displayed.  The @var{name} parameter
 controls which layout is shown.  It can be either one of the built-in
 layout names, or the name of a layout defined by the user using
@@ -29036,8 +29038,9 @@ windows.  When in @code{asm} or @code{split} layout display the
 register, assembler, and command windows.
 @end table
 
-@item focus @var{name}
 @kindex focus
+@item tui focus @var{name}
+@itemx focus @var{name}
 Changes which TUI window is currently active for scrolling.  The
 @var{name} parameter can be any of the following:
 
@@ -29061,8 +29064,10 @@ Make the register window active for scrolling.
 Make the command window active for scrolling.
 @end table
 
-@item refresh
+@kindex tui refresh
 @kindex refresh
+@item tui refresh
+@itemx refresh
 Refresh the screen.  This is similar to typing @kbd{C-L}.
 
 @item tui reg @var{group}
@@ -29098,9 +29103,12 @@ Display all registers.
 @kindex update
 Update the source window and the current execution point.
 
-@item winheight @var{name} +@var{count}
-@itemx winheight @var{name} -@var{count}
+@kindex tui window height
 @kindex winheight
+@item tui window height @var{name} +@var{count}
+@itemx tui window height @var{name} -@var{count}
+@itemx winheight @var{name} +@var{count}
+@itemx winheight @var{name} -@var{count}
 Change the height of the window @var{name} by @var{count} lines.
 Positive counts increase the height, while negative counts decrease
 it.  The @var{name} parameter can be the name of any currently visible
index 6195ca18a32061455252e4369e2833293896393c..04e5ac24ef9232520cb849dae7863cb4e838b751 100644 (file)
@@ -839,6 +839,14 @@ destroy_layout (struct cmd_list_element *self, void *context)
 
 static struct cmd_list_element *layout_list;
 
+/* Called to implement 'tui layout'.  */
+
+static void
+tui_layout_command (const char *args, int from_tty)
+{
+  help_list (layout_list, "tui layout ", all_commands, gdb_stdout);
+}
+
 /* Add a "layout" command with name NAME that switches to LAYOUT.  */
 
 static struct cmd_list_element *
@@ -1017,10 +1025,12 @@ void _initialize_tui_layout ();
 void
 _initialize_tui_layout ()
 {
-  add_basic_prefix_cmd ("layout", class_tui, _("\
+  struct cmd_list_element *layout_cmd
+    = add_prefix_cmd ("layout", class_tui, tui_layout_command, _("\
 Change the layout of windows.\n\
-Usage: layout prev | next | LAYOUT-NAME"),
-                       &layout_list, 0, &cmdlist);
+Usage: tui layout prev | next | LAYOUT-NAME"),
+                     &layout_list, 0, tui_get_cmd_list ());
+  add_com_alias ("layout", layout_cmd, class_tui, 0);
 
   add_cmd ("next", class_tui, tui_next_layout_command,
           _("Apply the next TUI layout."),
index b95d72dc33a4f3fc0d26b0840f315baa24d81f0a..137186114946d053919b8c0ae7ddb6d23c51b7fd 100644 (file)
@@ -977,6 +977,18 @@ parse_scrolling_args (const char *arg,
     }
 }
 
+/* The list of 'tui window' sub-commands.  */
+
+static cmd_list_element *tui_window_cmds = nullptr;
+
+/* Called to implement 'tui window'.  */
+
+static void
+tui_window_command (const char *args, int from_tty)
+{
+  help_list (tui_window_cmds, "tui window ", all_commands, gdb_stdout);
+}
+
 /* Function to initialize gdb commands, for tui window
    manipulation.  */
 
@@ -995,8 +1007,11 @@ _initialize_tui_win ()
                          &tui_setlist, &tui_showlist,
                          &setlist, &showlist);
 
-  add_com ("refresh", class_tui, tui_refresh_all_command,
-          _("Refresh the terminal display."));
+  cmd_list_element *refresh_cmd
+    = add_cmd ("refresh", class_tui, tui_refresh_all_command,
+              _("Refresh the terminal display."),
+              tui_get_cmd_list ());
+  add_com_alias ("refresh", refresh_cmd, class_tui, 0);
 
   cmd_list_element *tabset_cmd
     = add_com ("tabset", class_tui, tui_set_tab_width_command, _("\
@@ -1004,21 +1019,30 @@ Set the width (in characters) of tab stops.\n\
 Usage: tabset N"));
   deprecate_cmd (tabset_cmd, "set tui tab-width");
 
+  /* Setup the 'tui window' list of command.  */
+  add_prefix_cmd ("window", class_tui, tui_window_command,
+                 _("Text User Interface window commands."),
+                 &tui_window_cmds, 1, tui_get_cmd_list ());
+
   cmd_list_element *winheight_cmd
-    = add_com ("winheight", class_tui, tui_set_win_height_command, _("\
+    = add_cmd ("height", class_tui, tui_set_win_height_command, _("\
 Set or modify the height of a specified window.\n\
-Usage: winheight WINDOW-NAME [+ | -] NUM-LINES\n\
-Use \"info win\" to see the names of the windows currently being displayed."));
+Usage: tui window height WINDOW-NAME [+ | -] NUM-LINES\n\
+Use \"info win\" to see the names of the windows currently being displayed."),
+              &tui_window_cmds);
+  add_com_alias ("winheight", winheight_cmd, class_tui, 0);
   add_com_alias ("wh", winheight_cmd, class_tui, 0);
   set_cmd_completer (winheight_cmd, winheight_completer);
   add_info ("win", tui_all_windows_info,
            _("List of all displayed windows.\n\
 Usage: info win"));
   cmd_list_element *focus_cmd
-    = add_com ("focus", class_tui, tui_set_focus_command, _("\
+    = add_cmd ("focus", class_tui, tui_set_focus_command, _("\
 Set focus to named window or next/prev window.\n\
-Usage: focus [WINDOW-NAME | next | prev]\n\
-Use \"info win\" to see the names of the windows currently being displayed."));
+Usage: tui focus [WINDOW-NAME | next | prev]\n\
+Use \"info win\" to see the names of the windows currently being displayed."),
+              tui_get_cmd_list ());
+  add_com_alias ("focus", focus_cmd, class_tui, 0);
   add_com_alias ("fs", focus_cmd, class_tui, 0);
   set_cmd_completer (focus_cmd, focus_completer);
   add_com ("+", class_tui, tui_scroll_forward_command, _("\