public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Gary Johnson <garyjohn@spocom.com>
To: gdb@sourceware.org
Subject: Re: [PATCH] Fix 5-line offset of edit command
Date: Sat, 11 Feb 2023 14:52:33 -0800	[thread overview]
Message-ID: <20230211225233.GB17240@phoenix> (raw)
In-Reply-To: <83a61kjwp0.fsf@gnu.org>

On 2023-02-11, Eli Zaretskii wrote:
> > Date: Sat, 11 Feb 2023 02:08:14 -0800
> > From: Gary Johnson <garyjohn@spocom.com>
> > 
> > When gdb is paused at a line and I open the current file with the
> > edit command, gdb uses vim to open the file at the current line, but
> > the line number given to vim is always too high by 5.
> > 
> > For example, using gdb-12.1 and the gdb-12.1 source, cd to
> > gdb-12.1/gdb and run gdb on itself.
> > 
> >     $ gdb gdb
> >     (gdb) b main
> >     (gdb) run
> > 
> > Gdb will stop at line 25.
> > 
> >     (gdb) edit
> > 
> > will open vim at line 30.  Executing
> > 
> >     :ps -fH
> > 
> > confirms that vim was started with the argument "+30".
> > 
> > The problem appears to be in the edit_command() function in
> > cli-cmds.c, at line 966 in version 12.1.  The solution is to
> > delete that line.  The patch is below.
> 
> This is probably editor-specific?

No, it's not editor-specific.  The command to run the editor is
created at the end of the edit_command() function:


  if ((editor = getenv ("EDITOR")) == NULL)
    editor = "/bin/ex";

  fn = symtab_to_fullname (sal.symtab);

  /* Quote the file name, in case it has whitespace or other special
     characters.  */
  gdb::unique_xmalloc_ptr<char> p
    = xstrprintf ("%s +%d \"%s\"", editor, sal.line, fn);
  shell_escape (p.get (), from_tty);


Specifying the line number to jump to after opening a file by
prefixing the line with a + was standard with early Unix editors and
I think most editors today still support it for compatibility with
programs such as gdb.

> But I admit I cannot understand that addition, either.  I could
> understand if we were _subtracting_ half the number of lines to list,
> for those editors which place the line at the top of the display.

Maybe in some other situation, but not in the situation where the
user wants to open an external editor _at_ a specific line.

As I recall, this used to work long ago, then something changed and
the editor was always opened at line 6, then around 2020 it changed
again to open at the current line plus 5.  I suspect
a copy-and-paste error, but I haven't looked into the history of
that function.

I intended to send this to gdb-patches, but it looks like I wasn't
paying attention to the address and sent it to the general gdb list
instead.

Regards,
Gary


  reply	other threads:[~2023-02-11 22:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-11 10:08 Gary Johnson
2023-02-11 10:58 ` Eli Zaretskii
2023-02-11 22:52   ` Gary Johnson [this message]
2023-02-12  6:14     ` Eli Zaretskii
2023-02-12  9:23       ` Andreas Schwab

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=20230211225233.GB17240@phoenix \
    --to=garyjohn@spocom.com \
    --cc=gdb@sourceware.org \
    /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).