[PATCHSET,2/4] Fix various issue in TUI
Commit Message
> Date: Wed, 07 Jan 2015 13:48:28 +0000
> From: Pedro Alves <palves@redhat.com>
> CC: gdb-patches@sourceware.org
>
> > +void tui_set_var_cmd (char *null_args, int from_tty, struct cmd_list_element *c)
>
> Line break after "void". Misses an intro comment, maybe something
> like:
>
> /* The set_func hook of "set tui ..." settings that affect
> the TUI display. */
Fixed.
> > +{
> > + if (tui_update_variables ())
> > + tui_rehighlight_all ();
>
> The tui_rehighlight_all function is missing in this patch.
> Did you indend for this to be tui_refresh_all_win?
No, I meant tui_rehighlight_all from the original patch. See below.
> Is this OK to call when the tui is not enabled?
I added tui_active to the condition.
Here's what I pushed:
commit 6cdb25f4df143e8d98bd71bf943bbe61c702e239
Author: Eli Zaretskii <eliz@gnu.org>
Date: Fri Jan 16 18:24:16 2015 +0200
Make setting TUI border attributes take effect immediately
gdb/
2015-01-16 Eli Zaretskii <eliz@gnu.org>
* tui/tui-win.c (tui_rehighlight_all, tui_set_var_cmd): New
functions.
(_initialize_tui_win) <border-kind, border-mode>:
<active-border-mode>: Use tui_set_var_cmd as the "set" function.
* tui/tui-win.h: Add prototype for tui_rehighlight_all.
Comments
On Friday, January 16 2015, Eli Zaretskii wrote:
> Here's what I pushed:
>
> commit 6cdb25f4df143e8d98bd71bf943bbe61c702e239
> Author: Eli Zaretskii <eliz@gnu.org>
> Date: Fri Jan 16 18:24:16 2015 +0200
>
> Make setting TUI border attributes take effect immediately
>
> gdb/
> 2015-01-16 Eli Zaretskii <eliz@gnu.org>
>
> * tui/tui-win.c (tui_rehighlight_all, tui_set_var_cmd): New
> functions.
> (_initialize_tui_win) <border-kind, border-mode>:
> <active-border-mode>: Use tui_set_var_cmd as the "set" function.
> * tui/tui-win.h: Add prototype for tui_rehighlight_all.
Hi Eli,
This patch does not compile on x86_64 with --enable-targets=all. You
can see the failures here:
<http://gdb-build.sergiodj.net/builders/Fedora-x86_64-native-extended-gdbserver-m32/builds/14/steps/compile/logs/stdio>
> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> index 661f9b6..e45f5c1 100644
> --- a/gdb/ChangeLog
> +++ b/gdb/ChangeLog
> @@ -1,5 +1,11 @@
> 2015-01-16 Eli Zaretskii <eliz@gnu.org>
>
> + * tui/tui-win.c (tui_rehighlight_all, tui_set_var_cmd): New
> + functions.
> + (_initialize_tui_win) <border-kind, border-mode>:
> + <active-border-mode>: Use tui_set_var_cmd as the "set" function.
> + * tui/tui-win.h: Add prototype for tui_rehighlight_all.
> +
> * tui/tui-win.c (tui_scroll_left_command, tui_scroll_right_command):
> Doc fix.
> (tui_set_tab_width_command): Delete and recreate the source and
> diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
> index 96fa801..7e9bd1e 100644
> --- a/gdb/tui/tui-win.c
> +++ b/gdb/tui/tui-win.c
> @@ -344,6 +344,15 @@ struct cmd_list_element **
> return &tuilist;
> }
>
> +/* The set_func hook of "set tui ..." commands that affect the window
> + borders on the TUI display. */
> +void
> +tui_set_var_cmd (char *null_args, int from_tty, struct cmd_list_element *c)
> +{
> + if (tui_update_variables () && tui_active)
> + tui_rehighlight_all ();
> +}
> +
> /* Function to initialize gdb commands, for tui window
> manipulation. */
>
> @@ -420,7 +429,7 @@ Set the width (in characters) of tab stops.\n\
> space use a white space\n\
> ascii use ascii characters + - | for the border\n\
> acs use the Alternate Character Set"),
> - NULL,
> + tui_set_var_cmd,
> show_tui_border_kind,
> &tui_setlist, &tui_showlist);
>
> @@ -436,7 +445,7 @@ Set the width (in characters) of tab stops.\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"),
> - NULL,
> + tui_set_var_cmd,
> show_tui_border_mode,
> &tui_setlist, &tui_showlist);
>
> @@ -452,7 +461,7 @@ Set the width (in characters) of tab stops.\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"),
> - NULL,
> + tui_set_var_cmd,
> show_tui_active_border_mode,
> &tui_setlist, &tui_showlist);
> }
> @@ -646,6 +655,14 @@ Set the width (in characters) of tab stops.\n\
> tui_show_locator_content ();
> }
>
> +void
> +tui_rehighlight_all (void)
> +{
> + enum tui_win_type type;
> +
> + for (type = SRC_WIN; type < MAX_MAJOR_WINDOWS; type++)
> + tui_check_and_display_highlight_if_needed (tui_win_list[type]);
> +}
>
> /* Resize all the windows based on the terminal size. This function
> gets called from within the readline sinwinch handler. */
> diff --git a/gdb/tui/tui-win.h b/gdb/tui/tui-win.h
> index 6601d4b..7d77a00 100644
> --- a/gdb/tui/tui-win.h
> +++ b/gdb/tui/tui-win.h
> @@ -55,4 +55,7 @@ extern void tui_scroll (enum tui_scroll_direction,
> /* Create or get the TUI command list. */
> struct cmd_list_element **tui_get_cmd_list (void);
>
> +/* Set a TUI variable. */
> +void tui_set_var_cmd (char *, int, struct cmd_list_element *);
> +
> #endif
> From: Sergio Durigan Junior <sergiodj@redhat.com>
> Cc: Pedro Alves <palves@redhat.com>, gdb-patches@sourceware.org
> Date: Fri, 16 Jan 2015 11:59:05 -0500
>
> This patch does not compile on x86_64 with --enable-targets=all. You
> can see the failures here:
>
> <http://gdb-build.sergiodj.net/builders/Fedora-x86_64-native-extended-gdbserver-m32/builds/14/steps/compile/logs/stdio>
Sorry, should be fixed now.
@@ -1,5 +1,11 @@
2015-01-16 Eli Zaretskii <eliz@gnu.org>
+ * tui/tui-win.c (tui_rehighlight_all, tui_set_var_cmd): New
+ functions.
+ (_initialize_tui_win) <border-kind, border-mode>:
+ <active-border-mode>: Use tui_set_var_cmd as the "set" function.
+ * tui/tui-win.h: Add prototype for tui_rehighlight_all.
+
* tui/tui-win.c (tui_scroll_left_command, tui_scroll_right_command):
Doc fix.
(tui_set_tab_width_command): Delete and recreate the source and
@@ -344,6 +344,15 @@ struct cmd_list_element **
return &tuilist;
}
+/* The set_func hook of "set tui ..." commands that affect the window
+ borders on the TUI display. */
+void
+tui_set_var_cmd (char *null_args, int from_tty, struct cmd_list_element *c)
+{
+ if (tui_update_variables () && tui_active)
+ tui_rehighlight_all ();
+}
+
/* Function to initialize gdb commands, for tui window
manipulation. */
@@ -420,7 +429,7 @@ Set the width (in characters) of tab stops.\n\
space use a white space\n\
ascii use ascii characters + - | for the border\n\
acs use the Alternate Character Set"),
- NULL,
+ tui_set_var_cmd,
show_tui_border_kind,
&tui_setlist, &tui_showlist);
@@ -436,7 +445,7 @@ Set the width (in characters) of tab stops.\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"),
- NULL,
+ tui_set_var_cmd,
show_tui_border_mode,
&tui_setlist, &tui_showlist);
@@ -452,7 +461,7 @@ Set the width (in characters) of tab stops.\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"),
- NULL,
+ tui_set_var_cmd,
show_tui_active_border_mode,
&tui_setlist, &tui_showlist);
}
@@ -646,6 +655,14 @@ Set the width (in characters) of tab stops.\n\
tui_show_locator_content ();
}
+void
+tui_rehighlight_all (void)
+{
+ enum tui_win_type type;
+
+ for (type = SRC_WIN; type < MAX_MAJOR_WINDOWS; type++)
+ tui_check_and_display_highlight_if_needed (tui_win_list[type]);
+}
/* Resize all the windows based on the terminal size. This function
gets called from within the readline sinwinch handler. */
@@ -55,4 +55,7 @@ extern void tui_scroll (enum tui_scroll_direction,
/* Create or get the TUI command list. */
struct cmd_list_element **tui_get_cmd_list (void);
+/* Set a TUI variable. */
+void tui_set_var_cmd (char *, int, struct cmd_list_element *);
+
#endif