Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Tom Tromey <tromey@adacore.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFC 8.3 0/3] Some style fixes
Date: Tue, 12 Mar 2019 16:44:00 -0000	[thread overview]
Message-ID: <8336ns3uv4.fsf@gnu.org> (raw)
In-Reply-To: <874l899nh3.fsf@tromey.com> (message from Tom Tromey on Mon, 11	Mar 2019 14:15:36 -0600)

> From: Tom Tromey <tromey@adacore.com>
> Cc: tromey@adacore.com,  gdb-patches@sourceware.org
> Date: Mon, 11 Mar 2019 14:15:36 -0600
> 
> Eli> However, the artifacts I saw in the TUI display in the
> Eli> pretest are still there.  In particular, the right-hand side of the
> Eli> frame of the source window still gets overwritten when stepping
> Eli> through the inferior's code, and it looks like the newline is not
> Eli> echoed after commands typed in the command window.
> 
> I wonder if this is the "nonl" bug.
> You can test that theory by applying the appended.

It fixes the problems in the command window, so I think we should
apply this if no better ideas are brought up.

But the problems in the source window are not solved by this patch,
they have other reasons.  I debugged almost all of the problems I'm
aware of, please see the annotated patches below.  If they look
reasonable, I will push them.

After these patches, I have only one more problem: horizontal
scrolling of the source window.  First, the first press of left-arrow
doesn't have any effect; and second, scrolling draws TAB characters
incorrectly, it treats each TAB as if it took a single column on the
screen, so text after a TAB jumps by 8 columns when you scroll instead
of moving by one column.  I hope to have solution for this tomorrow.

Here are the patches for the other problems:

1. The first patch fixes the problem noticed by Pedro: pressing DOWN
arrow in the command window doesn't scroll the source window.  This is
because we don't initialize the s->nlines field, and then
tui_vertical_source_scroll thinks we are off the chart.  This fixes
that:

--- gdb/source-cache.c~4	2019-03-10 08:34:47.422752400 +0200
+++ gdb/source-cache.c	2019-03-12 11:50:15.094147600 +0200
@@ -194,6 +194,12 @@ source_cache::get_source_lines (struct s
 	  std::ifstream input (fullname);
 	  if (input.is_open ())
 	    {
+	      if (s->line_charpos == 0)
+		{
+		  scoped_fd desc = open_source_file (s);
+		  if (desc.get () >= 0)
+		    find_source_lines (s, desc.get ());
+		}
 	      srchilite::SourceHighlight highlighter ("esc.outlang");
 	      highlighter.setStyleFile("esc.style");
 
2. The fix for avoiding to overwrite the source window frame is
simple: revert 4a3045920.  I don't really understand why that change
was made: AFAIU, wclrtoeol clears to the end of the window line, and
cannot be told to clear only part of the line.

--- gdb/tui/tui-winsource.c~4	2019-02-27 06:51:50.000000000 +0200
+++ gdb/tui/tui-winsource.c	2019-03-12 10:57:02.052875200 +0200
@@ -285,7 +285,12 @@ tui_show_source_line (struct tui_win_inf
     wattroff (win_info->generic.handle, A_STANDOUT);
 
   /* Clear to end of line but stop before the border.  */
-  wclrtoeol (win_info->generic.handle);
+  int x = getcurx (win_info->generic.handle);
+  while (x + 1 < win_info->generic.width)
+    {
+      waddch (win_info->generic.handle, ' ');
+      x = getcurx (win_info->generic.handle);
+    }
 }
 
 void

3. This patch fixes another problem noticed by Pedro: the first time
you type UP or DOWN arrow in the command window, GDB should scroll the
source window, but instead it displays the line number and the file
name in the command window(?).  What happens there is that the first
time we call tui_ui_out::do_field_int, it doesn't initialize m_line,
because m_start_of_line is -1, as set by the constructor; and then the
following call to tui_ui_out::do_field_string falls back to
cli_ui_out::do_field_string because m_line is zero.  The fix below is
perhaps somewhat ad-hoc, mainly because I couldn't understand the
semantics of the values of m_start_of_line, especially its
non-positive values; please consider documenting them in the header.
Maybe if someone explains the semantics, I could come up with a more
sound patch (or conclude that the below is TRT).  Also, it looks like
the second test for m_line > 0 in tui_ui_out::do_field_string is
redundant?

--- gdb/tui/tui-out.c~4	2019-02-27 06:51:50.000000000 +0200
+++ gdb/tui/tui-out.c	2019-03-12 12:30:23.924230000 +0200
@@ -34,6 +34,9 @@ tui_ui_out::do_field_int (int fldno, int
   if (suppress_output ())
     return;
 
+  if (m_start_of_line < 0 && m_line == 0)
+    m_start_of_line = 0;
+
   /* Don't print line number, keep it for later.  */
   if (m_start_of_line == 0 && strcmp (fldname, "line") == 0)
     {



  reply	other threads:[~2019-03-12 16:44 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-08 21:04 Tom Tromey
2019-03-08 21:04 ` [RFC 8.3 3/3] Avoid a crash in source_cache::extract_lines Tom Tromey
2019-03-13 17:07   ` Pedro Alves
2019-03-13 17:20     ` Tom Tromey
2019-03-13 18:06       ` Pedro Alves
2019-03-14 11:37         ` Tom Tromey
2019-03-08 21:04 ` [RFC 8.3 2/3] Add the "set style source" command Tom Tromey
2019-03-09  6:17   ` Eli Zaretskii
2019-03-11 20:13     ` Tom Tromey
2019-03-09 11:18   ` Philippe Waroquiers
2019-03-11 20:13     ` Tom Tromey
2019-03-11 20:25       ` Eli Zaretskii
2019-03-08 21:04 ` [RFC 8.3 1/3] Make TUI react to "set style enabled" Tom Tromey
2019-03-13 19:28   ` Pedro Alves
2019-03-14 11:43     ` Tom Tromey
2019-03-09  6:17 ` [RFC 8.3 0/3] Some style fixes Eli Zaretskii
2019-03-10 13:14   ` Eli Zaretskii
2019-03-11 20:15     ` Tom Tromey
2019-03-12 16:44       ` Eli Zaretskii [this message]
2019-03-13 15:50         ` Eli Zaretskii
2019-03-14 12:21           ` Tom Tromey
2019-03-14 14:40             ` Pedro Alves
2019-03-14 15:36               ` Eli Zaretskii
2019-03-15 12:34         ` Fix pressing down in the TUI (Re: [RFC 8.3 0/3] Some style fixes) Pedro Alves
2019-03-15 13:37           ` Eli Zaretskii
2019-03-15 13:56             ` Pedro Alves
2019-03-16 17:59               ` Eli Zaretskii
2019-03-24 15:35                 ` Simon Marchi
2019-03-25  1:36                   ` Simon Marchi
2019-03-25 15:14                     ` Tom Tromey
2019-03-26  0:52                       ` Simon Marchi
2019-03-15 15:33           ` Tom Tromey
2019-03-15 12:43         ` Avoid overwriting the TUI source window frame " Pedro Alves
2019-03-16 12:17           ` Eli Zaretskii
2019-03-15 14:15         ` [PATCH v2] Fix first time you type UP or DOWN in TUI's command window " Pedro Alves
2019-03-15 15:38           ` Eli Zaretskii
2019-03-18 20:24             ` Pedro Alves
2019-03-19  6:09               ` Eli Zaretskii
2019-03-19 18:14                 ` Pedro Alves
2019-03-09 14:28 ` [RFC 8.3 0/3] Some style fixes Hannes Domani via gdb-patches
2019-03-12 16:48   ` Tom Tromey
2019-03-12 17:09     ` Hannes Domani via gdb-patches
2019-03-13 15:44       ` Eli Zaretskii
2019-03-14 20:25         ` "next" into line longer than the source window-width (Re: [RFC 8.3 0/3] Some style fixes) Pedro Alves
2019-03-17 16:05           ` Eli Zaretskii
2019-03-14 20:58         ` [PATCH] Fix scrolling right in the TUI " Pedro Alves
2019-03-15 12:34           ` Hannes Domani via gdb-patches
2019-03-15 21:51           ` Tom Tromey
2019-03-18 14:41             ` Pedro Alves
2019-03-17 16:06           ` Eli Zaretskii
2019-03-12 17:29     ` [RFC 8.3 0/3] Some style fixes Eli Zaretskii
2019-03-12 17:32       ` Eli Zaretskii
2019-03-12 17:29     ` Eli Zaretskii
2019-03-26 20:52     ` Pedro Franco de Carvalho
2019-03-14 11:44 ` Tom Tromey

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=8336ns3uv4.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=tromey@adacore.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