public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Lancelot SIX <lsix@lancelotsix.com>
Cc: aburgess@redhat.com, gdb-patches@sourceware.org
Subject: Re: [PATCH 2/6] gdb: move display of completion results into completion_result class
Date: Sun, 31 Mar 2024 08:49:11 +0300	[thread overview]
Message-ID: <86v853ar3c.fsf@gnu.org> (raw)
In-Reply-To: <20240330233038.sol5j3cp7vsym4uz@octopus> (message from Lancelot SIX on Sat, 30 Mar 2024 23:30:38 +0000)

> Date: Sat, 30 Mar 2024 23:30:38 +0000
> From: Lancelot SIX <lsix@lancelotsix.com>
> Cc: Andrew Burgess <aburgess@redhat.com>, gdb-patches@sourceware.org
> 
> On Fri, Mar 29, 2024 at 03:14:07PM +0300, Eli Zaretskii wrote:
> > > From: Andrew Burgess <aburgess@redhat.com>
> > > Cc: Andrew Burgess <aburgess@redhat.com>
> > > Date: Fri, 29 Mar 2024 11:42:28 +0000
> > > 
> > > When using the 'complete' command to complete file names we have some
> > > problems.  The suggested completion should include any required
> > > escaping, so if there is a filename '/tmp/aa"bb' (without the single
> > > quotes), then this should be displayed in the completion output like:
> > > 
> > >   (gdb) complete file /tmp/aa
> > >   file /tmp/aa\"bb
> > 
> > Why should it be displayed with the backslash?  And would the
> > completed name, if passed to a command, also have the backslash added?
> > If so, it could cause some commands to fail; basically, you are adding
> > shell file-name semantics into commands that don't work via the shell.
> 
> Hi,
> 
> The "file" command currently expects "shell file-name semantics":

For starters, this fact, if it is true, is not really documented.

>     $ gdb -q
>     (gdb) file test/aa bb/a.out
>     test/aa: No such file or directory.
>     (gdb) file "test/aa bb/a.out"
>     Reading symbols from test/aa bb/a.out...
>     (gdb) file test/aa\ bb/a.out
>     Load new symbol table from "test/aa bb/a.out"? (y or n) y
>     Reading symbols from test/aa bb/a.out...
>     (gdb)

Next, if 'file' indeed expects shell file-name semantics, then the
question is: which shell?  Should the above behave differently on, for
example, MS-Windows, since file-name quoting there works differently?
For example, escaping whitespace with a backslash will not work on
Windows.

Also, Andrew used the 'file' command in his examples, but completion
in GDB is used in many other commands, including those who don't
necessarily expect/need shell file-name semantics.

And last, but not least: the manual says about the 'complete' command:

     This is intended for use by GNU Emacs.

So one other thing we should consider is how Emacs handles these cases
and what it expects from GDB in response.

> The problem Andrew is trying to solve is that the current completer for
> this command completes to something that is not a valid input.

My point is that we need to have a clear idea what is a "valid input"
before we decide whether the current behavior is invalid, and if so,
how to fix it.  IOW, we should step back and discuss the valid
behavior first.  Andrew's patch series started from postulating a
certain desired result without any such discussion, and I think we
should discuss these aspects before we decide what is the desired
result.

> That being said, this is just my 2 cent, I am looking forward to
> hearing other people’s thoughts on the subject.

Same here.

Thanks.

  reply	other threads:[~2024-03-31  5:49 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-29 11:42 [PATCH 0/6] Further filename completion improvements Andrew Burgess
2024-03-29 11:42 ` [PATCH 1/6] gdb: improve escaping when completing filenames Andrew Burgess
2024-03-30 23:48   ` Lancelot SIX
2024-03-29 11:42 ` [PATCH 2/6] gdb: move display of completion results into completion_result class Andrew Burgess
2024-03-29 12:14   ` Eli Zaretskii
2024-03-30 23:30     ` Lancelot SIX
2024-03-31  5:49       ` Eli Zaretskii [this message]
2024-04-12 17:24         ` Andrew Burgess
2024-04-12 18:42           ` Eli Zaretskii
2024-04-12 22:20             ` Andrew Burgess
2024-04-13  6:36               ` Eli Zaretskii
2024-04-13  9:09                 ` Andrew Burgess
2024-04-13  9:46                   ` Eli Zaretskii
2024-04-12 17:31       ` Andrew Burgess
2024-03-29 11:42 ` [PATCH 3/6] gdb: simplify completion_result::print_matches Andrew Burgess
2024-03-30 23:48   ` Lancelot SIX
2024-03-29 11:42 ` [PATCH 4/6] gdb: add match formatter mechanism for 'complete' command output Andrew Burgess
2024-03-30 23:49   ` Lancelot SIX
2024-03-31  5:55     ` Eli Zaretskii
2024-04-12 17:42       ` Andrew Burgess
2024-04-12 18:44         ` Eli Zaretskii
2024-04-12 22:29           ` Andrew Burgess
2024-04-13  6:39             ` Eli Zaretskii
2024-03-29 11:42 ` [PATCH 5/6] gdb: apply escaping to filenames in 'complete' results Andrew Burgess
2024-03-29 11:42 ` [PATCH 6/6] gdb: improve gdb_rl_find_completion_word for quoted words Andrew Burgess
2024-04-20  9:10 ` [PATCHv2 0/8] Further filename completion improvements Andrew Burgess
2024-04-20  9:10   ` [PATCHv2 1/8] gdb/doc: document how filename arguments are formatted Andrew Burgess
2024-04-20  9:44     ` Eli Zaretskii
2024-04-27 10:01       ` Andrew Burgess
2024-04-27 10:06         ` Eli Zaretskii
2024-04-29  9:10           ` Andrew Burgess
2024-04-20  9:10   ` [PATCHv2 2/8] gdb: split apart two different types of filename completion Andrew Burgess
2024-04-20  9:10   ` [PATCHv2 3/8] gdb: improve escaping when completing filenames Andrew Burgess
2024-04-20  9:10   ` [PATCHv2 4/8] gdb: move display of completion results into completion_result class Andrew Burgess
2024-04-20  9:10   ` [PATCHv2 5/8] gdb: simplify completion_result::print_matches Andrew Burgess
2024-04-20  9:10   ` [PATCHv2 6/8] gdb: add match formatter mechanism for 'complete' command output Andrew Burgess
2024-04-20  9:10   ` [PATCHv2 7/8] gdb: apply escaping to filenames in 'complete' results Andrew Burgess
2024-04-20  9:10   ` [PATCHv2 8/8] gdb: improve gdb_rl_find_completion_word for quoted words Andrew Burgess

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=86v853ar3c.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=lsix@lancelotsix.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).