[1/3] Introduce function for directly updating GDB's screen dimensions
Commit Message
... to replace the roundabout pattern of
execute_command ("set width %d");
execute_command ("set height %d");
for doing the same thing.
gdb/ChangeLog
* utils.h (set_screen_width_and_height): Declare.
* utils.c (set_screen_width_and_height): Define.
* tui/tui-win.c (tui_update_gdb_sizes): Use it.
---
gdb/tui/tui-win.c | 21 +++++++++++++--------
gdb/utils.c | 12 ++++++++++++
gdb/utils.h | 2 ++
3 files changed, 27 insertions(+), 8 deletions(-)
Comments
Thanks for doing this.
LGTM. One nit below.
On 04/24/2015 01:53 AM, Patrick Palka wrote:
>
> diff --git a/gdb/utils.c b/gdb/utils.c
> index a9350d9..ec2fd87 100644
> --- a/gdb/utils.c
> +++ b/gdb/utils.c
> @@ -1795,6 +1795,18 @@ set_height_command (char *args, int from_tty, struct cmd_list_element *c)
> set_screen_size ();
> }
>
> +/* Set the screen dimensions to WIDTH and HEIGHT. */
> +
> +void
We're putting public function comments in the headers nowadays.
So could you please move the describing comment to utils.h, and
put a breadcrumb here instead:
/* See utils.h. */
> +set_screen_width_and_height (int width, int height)
> +{
Thanks,
Pedro Alves
@@ -465,15 +465,20 @@ bold-standout use extra bright or bold with standout mode"),
void
tui_update_gdb_sizes (void)
{
- char cmd[50];
+ int width, height;
- /* Set to TUI command window dimension or use readline values. */
- xsnprintf (cmd, sizeof (cmd), "set width %d",
- tui_active ? TUI_CMD_WIN->generic.width : tui_term_width());
- execute_command (cmd, 0);
- xsnprintf (cmd, sizeof (cmd), "set height %d",
- tui_active ? TUI_CMD_WIN->generic.height : tui_term_height());
- execute_command (cmd, 0);
+ if (tui_active)
+ {
+ width = TUI_CMD_WIN->generic.width;
+ height = TUI_CMD_WIN->generic.height;
+ }
+ else
+ {
+ width = tui_term_width ();
+ height = tui_term_height ();
+ }
+
+ set_screen_width_and_height (width, height);
}
@@ -1795,6 +1795,18 @@ set_height_command (char *args, int from_tty, struct cmd_list_element *c)
set_screen_size ();
}
+/* Set the screen dimensions to WIDTH and HEIGHT. */
+
+void
+set_screen_width_and_height (int width, int height)
+{
+ lines_per_page = height;
+ chars_per_line = width;
+
+ set_screen_size ();
+ set_width ();
+}
+
/* Wait, so the user can read what's on the screen. Prompt the user
to continue by pressing RETURN. */
@@ -174,6 +174,8 @@ extern struct ui_file *gdb_stdtarg;
extern struct ui_file *gdb_stdtargerr;
extern struct ui_file *gdb_stdtargin;
+extern void set_screen_width_and_height (int width, int height);
+
/* More generic printf like operations. Filtered versions may return
non-locally on error. */