Re: [PATCH 3/3 v2] Implement completion limiting

Eli Zaretskii
2015-01-24T08:50:10Z

> Date: Fri, 23 Jan 2015 16:32:29 -0800
> From: Doug Evans <xdje42@gmail.com>
> Cc: Gary Benson <gbenson@redhat.com>,
> "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
>
> On Fri, Jan 23, 2015 at 12:28 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> >> Date: Fri, 23 Jan 2015 08:56:59 -0800
> >> From: Doug Evans <xdje42@gmail.com>
> >> Cc: Gary Benson <gbenson@redhat.com>,
> >> "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
> >>
> >> How often will there be exactly N?
> >
> > About the same frequency as there will be exactly N-1, I guess.
>
> My point is, given any particular value I set for
> "set max-completions N", what's the probability
> that exactly that N completions will be found?
> Rather low I expect.

Rather low, I agree. But having N-1 is as low as having N. So the
problem with wasting 99% of the time searching for a candidate that
isn't there is not solved by not searching for the N+1st candidate.

> > 200 is just a random number. It's not magic in any way. So you
> > could have 199 completions found in the first 5 sec, followed by 5
> > minutes of waiting for the 200th which is never found. Ugh.
> >
> > There's no way around this issue.
>
> But if I, as a user, do "set max-completions 199"
> and then find out gdb is looking for 200 completions
> I would be disappointed. I might file a bug report even.

When the user sets max-completions to 199, it expects GDB not to
_show_ more than that. The documentation says:

@item set max-completions @var{limit}
@itemx set max-completions unlimited
Set the maximum number of candidates to be shown during completion.
[...] ^^^^^^^^^^^
@item show max-completions
Show the maximum number of candidates to be shown during completion.
^^^^^^^^^^^

This usually means "find the completions, but don't show me more than
the limit". If GDB is not going to try to see if there are more than
the limit, then we need to tell that in the docs, otherwise some user
might become disappointed and might file a bug report, claiming that
GDB told it there might be more candidates, when there were none.

> If I do "set max-completions N" I expect gdb to stop looking
> when it gets to N.

Well, at least one frequent user of GDB -- yours truly -- would expect
GDB to actually try at least one more. So we should be explicit this
is not what GDB does (assuming we are okay with that modus operandi).

> >> I don't see the benefit of going to the trouble
> >> of avoiding printing any message when there are
> >> exactly N completions.
> >
> > That's fine, but then the option's name and its documentation should
> > be changed to reflect this. They currently support what I thought
> > user will get, not what you describe above.
>
> The option name and documentation is fine.

See above.