Thread (21 messages) 21 messages, 5 authors, 2018-06-06

Re: [PATCH/RFC] completion: complete all possible -no-<options>

From: Eric Sunshine <hidden>
Date: 2018-05-14 03:33:11

On Tue, May 8, 2018 at 11:24 AM, Duy Nguyen [off-list ref] wrote:
On Mon, Apr 23, 2018 at 7:36 AM, Eric Sunshine [off-list ref] wrote:
quoted
I haven't looked at the implementation, so this may be an entirely
stupid suggestion, but would it be possible to instead render the
completions as?

    % git checkout --<tab>
    --[no-]conflict=                   --[no-]patch
    --[no-]detach                      --[no-]progress

This would address the problem of the --no-* options taking double the
screen space.
It took me so long to reply partly because I remember seeing some guy
doing clever trick with tab completion that also shows a short help
text in addition to the complete words. I could not find that again
and from my reading (also internet searching) it's probably not
possible to do this without trickery.
Okay.
quoted
It's also more intuitive than that lone and somewhat weird-looking
"--no-" suggestion.
It's not that weird if you think about file path completion, where you
complete one path component at a time not full path, bash just does
not show you full paths to everything.
The "path completion" analogy and the dotted configuration variable
analogy (below) don't really help me find "--no-" less weird. We're
used to "/" as a separator in paths, and "." a separator in
configuration variables, so they are easier to digest than "-" somehow
being a separator for --no-<option>.

It _might_ feel as bit less weird if it was presented as --no-<option>
or --no-{...} or --no-<...> or --no-... or something, but those seem
pretty weird too, so perhaps not. Anyhow, it's not a major issue; the
--[no-]foo idea seems pretty intuitive, but if it can't be easily
implemented, then falling back to your --no- idea makes sense.
I'm arguing about this because I want to see your reaction, because
I'm thinking of doing the very same thing for config completion. Right
now "git config <tab>" gives you two pages of all available config
variables. I'm thinking that we "git config <tab>" just shows the
groups, e.g.
quoted
~/w/git $ git config
add.              interactive.
advice.           log.
alias.            mailmap.
am.               man.

Only when you do "git config log.<tab>" that it shows you log.*
Just wondering out loud (again): add.<var> | add.{...} | add.<...> |
add...; those aren't very attractive either, so plain "add." may
indeed be best.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help