On Tue, May 8, 2018 at 11:24 AM, Duy Nguyen <pclouds@xxxxxxxxx> wrote: > On Mon, Apr 23, 2018 at 7:36 AM, Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote: >> 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. >> 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. > >> ~/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.