Skip to content

Commit

Permalink
bash: Add space after unique command name is completed.
Browse files Browse the repository at this point in the history
Because we use the nospace option for our completion function for
the main 'git' wrapper bash won't automatically add a space after a
unique completion has been made by the user.  This has been pointed
out in the past by Linus Torvalds as an undesired behavior.  I agree.

We have to use the nospace option to ensure path completion for
a command such as `git show` works properly, but that breaks the
common case of getting the space for a unique completion.  So now we
set IFS=$'\n' (linefeed) and add a trailing space to every possible
completion option.  This causes bash to insert the space when the
completion is unique.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Shawn O. Pearce authored and Junio C Hamano committed Feb 4, 2007
1 parent 8435b54 commit 72e5e98
Showing 1 changed file with 20 additions and 6 deletions.
26 changes: 20 additions & 6 deletions contrib/completion/git-completion.bash
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,20 @@ __git_ps1 ()
fi
}

__gitcomp ()
{
local all c s=$'\n' IFS=' '$'\t'$'\n'
for c in $1; do
case "$c" in
--*=*) all="$all$c$s" ;;
*) all="$all$c $s" ;;
esac
done
IFS=$s
COMPREPLY=($(compgen -W "$all" -- "${COMP_WORDS[COMP_CWORD]}"))
return
}

__git_heads ()
{
local cmd i is_hash=y dir="$(__gitdir "$1")"
Expand Down Expand Up @@ -787,12 +801,12 @@ _git ()
done

if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
COMPREPLY=($(compgen -W "
--git-dir= --version --exec-path
$(__git_commands)
$(__git_aliases)
" -- "${COMP_WORDS[COMP_CWORD]}"))
return;
case "${COMP_WORDS[COMP_CWORD]}" in
--*=*) COMPREPLY=() ;;
--*) __gitcomp "--git-dir= --bare --version --exec-path" ;;
*) __gitcomp "$(__git_commands) $(__git_aliases)" ;;
esac
return
fi

local expansion=$(__git_aliased_command "$command")
Expand Down

0 comments on commit 72e5e98

Please sign in to comment.