public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
From: Andrew Burgess <aburgess@sourceware.org>
To: gdb-cvs@sourceware.org
Subject: [binutils-gdb] gdb: move some commands into the tui namespace
Date: Sun,  3 Apr 2022 14:42:48 +0000 (GMT)	[thread overview]
Message-ID: <20220403144248.4E7623858413@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=51c2a9e24396f69c1e7eba6cef042fad7c07880e

commit 51c2a9e24396f69c1e7eba6cef042fad7c07880e
Author: Andrew Burgess <aburgess@redhat.com>
Date:   Mon Jan 24 17:23:20 2022 +0000

    gdb: move some commands into the tui namespace
    
    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.

Diff:
---
 gdb/NEWS             | 15 +++++++++++++++
 gdb/doc/gdb.texinfo  | 18 +++++++++++++-----
 gdb/tui/tui-layout.c | 16 +++++++++++++---
 gdb/tui/tui-win.c    | 40 ++++++++++++++++++++++++++++++++--------
 4 files changed, 73 insertions(+), 16 deletions(-)

diff --git a/gdb/NEWS b/gdb/NEWS
index 0fbc4537303..10090aff0b4 100644
--- 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
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index d21fd0d3f0a..4aec2e81e9a 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -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
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 6195ca18a32..04e5ac24ef9 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -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."),
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index b95d72dc33a..13718611494 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -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, _("\


                 reply	other threads:[~2022-04-03 14:42 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220403144248.4E7623858413@sourceware.org \
    --to=aburgess@sourceware.org \
    --cc=gdb-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).