public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <aburgess@redhat.com>
To: gdb-patches@sourceware.org
Cc: Phi Debian <phi.debian@gmail.com>, Pedro Alves <pedro@palves.net>
Subject: Re: [PATCH] Add "set style tui-current-position on|off" default to off
Date: Tue, 15 Nov 2022 10:09:32 +0000	[thread overview]
Message-ID: <875yfga5r7.fsf@redhat.com> (raw)
In-Reply-To: <73b40c12-cbd2-336a-3258-96f5134843a3@redhat.com>

Pedro Alves via Gdb-patches <gdb-patches@sourceware.org> writes:

> On 6/16/20 4:38 AM, Phi Debian via Gdb-patches wrote:
>> Hi Pedro,
>> I like the "set tui current-line-highlight reverse-mono" of your patch, it
>> remove the underline need, the current line is well readable.
>> 
>
> Great.  Here's a more complete patch, now with documentation updated.
>
> The option is now named:
>
>   "set style tui-current-position on|off"
>
> and the default is now off.
>
> From 854948d86fca90e894813ee08e349fec95c4d2ba Mon Sep 17 00:00:00 2001
> From: Pedro Alves <palves@redhat.com>
> Date: Mon, 15 Jun 2020 19:35:10 +0100
> Subject: [PATCH] Add "set style tui-current-position on|off", default to off
>
> As discussed at:
>
>  https://sourceware.org/pipermail/gdb-patches/2020-June/169519.html
>
> this patch disables source code highlighting for the text highlighted
> by the TUI's current position indicator, and adds a command to enable
> it back.

I originally sent this message off-list by accident.  Resending it now
including the gdb-patches list.  Apologies to people seeing this for the
second time.

---

I'd be interested to see this patch merged.  I took a look through the
code changes, and it all looks good to me.

Attached below is a rebase of Pedro's patch.  I've gone through the docs
and comments to mention assembly highlighting, which has been added to
GDB since this patch was originally written.

I've left the author email as 'Pedro Alves <palves@redhat.com>' as this
reflects where/when the patch was written, but I can update this to
anything more suitable upon request.

Pedro (or anyone) - any objections if I merge this patch?

Thanks,
Andrew

---

commit c4c460cac282c17d9b0545ce117177da8cc56e2f
Author: Pedro Alves <palves@redhat.com>
Date:   Tue Nov 1 16:45:30 2022 +0000

    gdb: add "set style tui-current-position on|off", default to off
    
    As discussed at:
    
     https://sourceware.org/pipermail/gdb-patches/2020-June/169519.html
    
    this patch disables source and assembly code highlighting for the
    text highlighted by the TUI's current position indicator, and adds a
    command to enable it back.

diff --git a/gdb/NEWS b/gdb/NEWS
index 0642d7637b8..3f31515297c 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -73,6 +73,11 @@
   For both /r and /b GDB is now better at using whitespace in order to
   align the disassembled instruction text.
 
+* The TUI no longer styles the source and assembly code highlighted by
+  the current position indicator by default.  You can however
+  re-enable styling using the new "set style tui-current-position"
+  command.
+
 * New commands
 
 maintenance set ignore-prologue-end-flag on|off
@@ -117,6 +122,10 @@ set debug infcall on|off
 show debug infcall
   Print additional debug messages about inferior function calls.
 
+set style tui-current-position [on|off]
+  Whether to style the source and assembly code highlighted by the
+  TUI's current position indicator.  The default is off.
+
 * Changed commands
 
 document user-defined
diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
index abf685561fa..062347b27d0 100644
--- a/gdb/cli/cli-style.c
+++ b/gdb/cli/cli-style.c
@@ -296,8 +296,8 @@ cli_style_option::add_setshow_commands (enum command_class theclass,
   return prefix_cmds;
 }
 
-static cmd_list_element *style_set_list;
-static cmd_list_element *style_show_list;
+cmd_list_element *style_set_list;
+cmd_list_element *style_show_list;
 
 /* The command list for 'set style disassembler'.  */
 
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index ea66f4ee42d..f5f664fd168 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -26602,6 +26602,15 @@
 @item show style sources
 Show the current state of source code styling.
 
+@item set style tui-current-position @samp{on|off}
+Enable or disable styling of the source and assembly code highlighted
+by the TUI's current position indicator.  The default is @samp{off}.
+@xref{TUI, ,@value{GDBN} Text User Interface}.
+
+@item show style tui-current-position
+Show whether the source and assembly code highlighted by the TUI's
+current position indicator is styled.
+
 @anchor{style_disassembler_enabled}
 @item set style disassembler enabled @samp{on|off}
 Enable or disable disassembler styling.  This affects whether
@@ -29163,8 +29172,12 @@
 when their values change.
 @end table
 
-The source and assembly windows show the current program position
-by highlighting the current line and marking it with a @samp{>} marker.
+The source and assembly windows show the current program position by
+highlighting the current line and marking it with a @samp{>} marker.
+By default, source and assembly code styling is disabled for the
+highlighted text, but you can enable it with the @code{set style
+tui-current-position on} command.  @xref{Output Styling}.
+
 Breakpoints are indicated with two markers.  The first marker
 indicates the breakpoint type:
 
diff --git a/gdb/gdbcmd.h b/gdb/gdbcmd.h
index a05c68e52c2..c508870a930 100644
--- a/gdb/gdbcmd.h
+++ b/gdb/gdbcmd.h
@@ -65,4 +65,8 @@ extern void print_command_line (struct command_line *, unsigned int,
 extern void print_command_lines (struct ui_out *,
 				 struct command_line *, unsigned int);
 
+/* Chains containing all defined "set/show style" subcommands.  */
+extern struct cmd_list_element *style_set_list;
+extern struct cmd_list_element *style_show_list;
+
 #endif /* !defined (GDBCMD_H) */
diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c
index a30000ef626..5278c380fc4 100644
--- a/gdb/tui/tui-io.c
+++ b/gdb/tui/tui-io.c
@@ -369,6 +369,9 @@ apply_ansi_escape (WINDOW *w, const char *buf)
 
   if (reverse_mode_p)
     {
+      if (!style_tui_current_position)
+	return n_read;
+
       /* We want to reverse _only_ the default foreground/background
 	 colors.  If the foreground color is not the default (because
 	 the text was styled), we want to leave it as is.  If e.g.,
@@ -411,12 +414,18 @@ tui_set_reverse_mode (WINDOW *w, bool reverse)
   ui_file_style style = last_style;
 
   reverse_mode_p = reverse;
-  style.set_reverse (reverse);
 
   if (reverse)
     {
       reverse_save_bg = style.get_background ();
       reverse_save_fg = style.get_foreground ();
+
+      if (!style_tui_current_position)
+	{
+	  /* Switch to default style (reversed) while highlighting the
+	     current position.  */
+	  style = {};
+	}
     }
   else
     {
@@ -424,6 +433,8 @@ tui_set_reverse_mode (WINDOW *w, bool reverse)
       style.set_fg (reverse_save_fg);
     }
 
+  style.set_reverse (reverse);
+
   tui_apply_style (w, style);
 }
 
diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c
index 31b6606636a..e24763c0072 100644
--- a/gdb/tui/tui-win.c
+++ b/gdb/tui/tui-win.c
@@ -218,6 +218,30 @@ show_tui_border_kind (struct ui_file *file,
 	      value);
 }
 
+/* Implementation of the "set/show style tui-current-position" commands.  */
+
+bool style_tui_current_position = false;
+
+static void
+show_style_tui_current_position (ui_file *file,
+				 int from_tty,
+				 cmd_list_element *c,
+				 const char *value)
+{
+  gdb_printf (file, _("\
+Styling the text highlighted by the TUI's current position indicator is %s.\n"),
+		    value);
+}
+
+static void
+set_style_tui_current_position (const char *ignore, int from_tty,
+				cmd_list_element *c)
+{
+  if (TUI_SRC_WIN != nullptr)
+    TUI_SRC_WIN->refill ();
+  if (TUI_DISASM_WIN != nullptr)
+    TUI_DISASM_WIN->refill ();
+}
 
 /* Tui internal configuration variables.  These variables are updated
    by tui_update_variables to reflect the tui configuration
@@ -1195,6 +1219,19 @@ the line numbers and uses less horizontal space."),
 			   tui_set_compact_source, tui_show_compact_source,
 			   &tui_setlist, &tui_showlist);
 
+  add_setshow_boolean_cmd ("tui-current-position", class_maintenance,
+			   &style_tui_current_position, _("\
+Set whether to style text highlighted by the TUI's current position indicator."),
+			   _("\
+Show whether to style text highlighted by the TUI's current position indicator."),
+			   _("\
+When enabled, the source and assembly code highlighted by the TUI's current\n\
+position indicator is styled."),
+			   set_style_tui_current_position,
+			   show_style_tui_current_position,
+			   &style_set_list,
+			   &style_show_list);
+
   tui_border_style.changed.attach (tui_rehighlight_all, "tui-win");
   tui_active_border_style.changed.attach (tui_rehighlight_all, "tui-win");
 }
diff --git a/gdb/tui/tui-win.h b/gdb/tui/tui-win.h
index 9a92fa3a514..bdc6da034ef 100644
--- a/gdb/tui/tui-win.h
+++ b/gdb/tui/tui-win.h
@@ -51,4 +51,8 @@ struct cmd_list_element **tui_get_cmd_list (void);
 /* Whether compact source display should be used.  */
 extern bool compact_source;
 
+/* Whether to style the source and assembly code highlighted by the TUI's
+   current position indicator.  */
+extern bool style_tui_current_position;
+
 #endif /* TUI_TUI_WIN_H */


  parent reply	other threads:[~2022-11-15 10:09 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-09  7:55 TUI enhancement suggestion Phi Debian
2020-06-09 13:04 ` Pedro Alves
2020-06-09 14:32   ` Phi Debian
2020-06-09 15:03     ` Phi Debian
2020-06-11 10:34       ` Pedro Alves
2020-06-11 13:55         ` Phi Debian
2020-06-15 14:20           ` Pedro Alves
2020-06-15 15:48             ` Hannes Domani
2020-06-15 16:56               ` Phi Debian
2020-06-15 19:30                 ` Pedro Alves
2020-06-15 19:47                   ` Phi Debian
2020-06-15 20:12                   ` Tom Tromey
2020-06-15 20:45                     ` Pedro Alves
2020-06-16  3:38                       ` Phi Debian
2020-06-16 11:02                         ` [PATCH] Add "set style tui-current-position on|off" default to off Pedro Alves
2020-06-16 14:33                           ` Eli Zaretskii
2022-11-15 10:09                           ` Andrew Burgess [this message]
2022-11-15 12:15                             ` Pedro Alves
2022-11-16 10:41                               ` Andrew Burgess
2022-11-17  6:30                                 ` Phi Debian
     [not found]   ` <CAJOr74jg==A7NM4qtWEq6neXqxpxxtUEVdDgsahfvRobW+Q0wA@mail.gmail.com>
     [not found]     ` <CAJOr74hQdi6Y4MpGy=J-3CTRA2PP08OebTO2hBFN5NyDRokb3Q@mail.gmail.com>
     [not found]       ` <CAJOr74gyyw4hJm9j0fzKQdzkJKzq=yiAXyZx_c2Q=RA8GTSN7Q@mail.gmail.com>
     [not found]         ` <ed9ea9c6-3d4d-6ba7-4672-bff2b2617012@redhat.com>
2020-06-10 20:25           ` TUI enhancement suggestion Phi Debian
2020-06-11 10:17             ` Pedro Alves

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=875yfga5r7.fsf@redhat.com \
    --to=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=pedro@palves.net \
    --cc=phi.debian@gmail.com \
    /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).