From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.spocom.com (mail.spocom.com [206.63.224.240]) by sourceware.org (Postfix) with ESMTP id 5817F3858D32 for ; Sat, 11 Feb 2023 22:52:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5817F3858D32 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=spocom.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=spocom.com Received: from localhost (137.sub-75-213-6.myvzw.com [75.213.6.137]) by mail.spocom.com with SMTP; Sat, 11 Feb 2023 14:51:51 -0800 Date: Sat, 11 Feb 2023 14:52:33 -0800 From: Gary Johnson To: gdb@sourceware.org Subject: Re: [PATCH] Fix 5-line offset of edit command Message-ID: <20230211225233.GB17240@phoenix> Mail-Followup-To: gdb@sourceware.org References: <20230211100814.GA17240@phoenix> <83a61kjwp0.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <83a61kjwp0.fsf@gnu.org> X-Operating-System: Linux 2.6.32-74-generic GNU/Linux User-Agent: Mutt/1.5.20 (2009-06-14) X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 2023-02-11, Eli Zaretskii wrote: > > Date: Sat, 11 Feb 2023 02:08:14 -0800 > > From: Gary Johnson > > > > 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 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