threads / patch / 6664

patch, 8 partsbash: Remove short option completions for branch/checkout/diff.

Subject: [PATCH 1/8] bash: Remove short option completions for branch/checkout/diff.

## tl;dr

6 messages between Feb 4, 2007 and Feb 5, 2007. Diffs are folded; open one to read it.

replies: 5people: 3as markdown or json

Shawn O. Pearce· Feb 4, 2007, 07:38 UTC · lore

The short options (-l, -f, -d) for git-branch are rather silly to include in the completion generation as these options must be fully typed out by the user and most users already know what the options are anyway, so including them in the suggested completions does not offer huge value. (The same goes for git-checkout and git-diff.)

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
 contrib/completion/git-completion.bash |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
Show changes to contrib/completion/git-completion.bash +3 −3
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 83c69ec..971fefb 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -359,7 +359,7 @@ _git_apply ()
 _git_branch ()
 {
 	local cur="${COMP_WORDS[COMP_CWORD]}"
-	COMPREPLY=($(compgen -W "-l -f -d -D $(__git_refs)" -- "$cur"))
+	COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
 }
 
 _git_cat_file ()
@@ -381,7 +381,7 @@ _git_cat_file ()
 _git_checkout ()
 {
 	local cur="${COMP_WORDS[COMP_CWORD]}"
-	COMPREPLY=($(compgen -W "-l -b $(__git_refs)" -- "$cur"))
+	COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
 }
 
 _git_cherry_pick ()
@@ -421,7 +421,7 @@ _git_diff ()
 _git_diff_tree ()
 {
 	local cur="${COMP_WORDS[COMP_CWORD]}"
-	COMPREPLY=($(compgen -W "-r -p -M $(__git_refs)" -- "$cur"))
+	COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
 }
 
 _git_fetch ()
-- 
1.5.0.rc3.22.g5057
Jakub Narebski· Feb 4, 2007, 10:27 UTC · re: Shawn O. Pearce · lore

Re: [PATCH 1/8] bash: Remove short option completions for branch/checkout/diff.

[Cc: git@vger.kernel.org]
Shawn O. Pearce wrote:
Show 5 quoted lines
> The short options (-l, -f, -d) for git-branch are rather silly to
> include in the completion generation as these options must be fully
> typed out by the user and most users already know what the options
> are anyway, so including them in the suggested completions does
> not offer huge value.  (The same goes for git-checkout and git-diff.)

Not true. It is nice to have on "git branch -" TAB TAB list of all (well, all included in completion) short options to git-branch.

So I'd vote NAK.
-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
Junio C Hamano· Feb 4, 2007, 10:49 UTC · re: Jakub Narebski · lore

Re: [PATCH 1/8] bash: Remove short option completions for branch/checkout/diff.

Jakub Narebski <jnareb@gmail.com> writes:
Show 14 quoted lines
> [Cc: git@vger.kernel.org]
>
> Shawn O. Pearce wrote:
>
>> The short options (-l, -f, -d) for git-branch are rather silly to
>> include in the completion generation as these options must be fully
>> typed out by the user and most users already know what the options
>> are anyway, so including them in the suggested completions does
>> not offer huge value.  (The same goes for git-checkout and git-diff.)
>
> Not true. It is nice to have on "git branch -" TAB TAB list of all 
> (well, all included in completion) short options to git-branch.
>
> So I'd vote NAK.
Ah, sorry, but it's already done.

I tried "git branch <TAB>" and saw hundreds of possibilities offered, and thought mixing -d/-l and friends are useless. I didn't think of the possibility of saying "git branch -<TAB>".

Presumably it was trying to suggest the <start-point> argument but that does not make much sense actually either.

Shawn O. Pearce· Feb 5, 2007, 02:47 UTC · re: Junio C Hamano · lore

Re: [PATCH 1/8] bash: Remove short option completions for branch/checkout/diff.

Junio C Hamano <junkio@cox.net> wrote:
Show 21 quoted lines
> Jakub Narebski <jnareb@gmail.com> writes:
> > Shawn O. Pearce wrote:
> >> The short options (-l, -f, -d) for git-branch are rather silly to
> >> include in the completion generation as these options must be fully
> >> typed out by the user and most users already know what the options
> >> are anyway, so including them in the suggested completions does
> >> not offer huge value.  (The same goes for git-checkout and git-diff.)
> >
> > Not true. It is nice to have on "git branch -" TAB TAB list of all 
> > (well, all included in completion) short options to git-branch.
> >
> > So I'd vote NAK.
> 
> Ah, sorry, but it's already done.
> 
> I tried "git branch <TAB>" and saw hundreds of possibilities
> offered, and thought mixing -d/-l and friends are useless.  I
> didn't think of the possibility of saying "git branch -<TAB>".
> 
> Presumably it was trying to suggest the <start-point> argument
> but that does not make much sense actually either.

Yeah. The completion behind git-branch is pretty stupid. Completing the first argument from the existing set of branch names is stupid, unless we are using -m/-M/-d/-D/-f, as we'd otherwise refuse to do the operation. But we certainly do want completion on the second argument.

I could be smarter about it and scan backwards looking for the mode in use and control completion based on that, but its just weird. Besides, I sometimes like completing the new branch name from the existing set, as often I want to make the new branch name using a leading prefix of another existing name. Completing part of it saves a few keystrokes.

Completing single character options is rather useless in my mind. The bash completion is always out of date with respect to the actual set of supported options, and by definition they are a single character. Hitting '-<tab><tab>' to identify the list of supported options gives *no* detail about what the options do, and I still have to enter the option letter to complete it.

Completing `git am --w<tab>hitespace=s<tab>trip ` with just 6 keystrokes on the other hand is very informative (whitespace, strip!) and saves many keystrokes. That's why long options are supported, for at least the more commonly accessed ones.

-- 
Shawn.
Jakub Narebski· Feb 5, 2007, 09:16 UTC · re: Shawn O. Pearce · lore

Re: [PATCH 1/8] bash: Remove short option completions for branch/checkout/diff.

Shawn O. Pearce wrote:
Show 11 quoted lines
> Completing single character options is rather useless in my mind.
> The bash completion is always out of date with respect to the
> actual set of supported options, and by definition they are a
> single character.  Hitting '-<tab><tab>' to identify the list of
> supported options gives *no* detail about what the options do,
> and I still have to enter the option letter to complete it.
> 
> Completing `git am --w<tab>hitespace=s<tab>trip ` with just 6
> keystrokes on the other hand is very informative (whitespace,
> strip!) and saves many keystrokes.  That's why long options are
> supported, for at least the more commonly accessed ones.

It would be nice to have long option for each git command single character (short) option, for example --patch as long option to git-diff-tree -p option, etc.

-- 
Jakub Narebski
Poland
Shawn O. Pearce· Feb 5, 2007, 09:19 UTC · re: Jakub Narebski · lore

Re: [PATCH 1/8] bash: Remove short option completions for branch/checkout/diff.

Jakub Narebski <jnareb@gmail.com> wrote:
> It would be nice to have long option for each git command single 
> character (short) option, for example --patch as long option to 
> git-diff-tree -p option, etc.
Sure.  And I'd support them when possible in the bash completion.

But I think that sort of change to git should wait for a real command line option parser. What we have now makes things a tad painful.

-- 
Shawn.

← back to recent threads