[PATCHSET,2/4] Fix various issue in TUI

Message ID 83oapy1yel.fsf@gnu.org
State New, archived
Headers

Commit Message

Eli Zaretskii Jan. 16, 2015, 4:30 p.m. UTC
  > 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

Sergio Durigan Junior Jan. 16, 2015, 4:59 p.m. UTC | #1
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
  
Eli Zaretskii Jan. 16, 2015, 5:59 p.m. UTC | #2
> 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.
  

Patch

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