@@ -345,7 +345,7 @@ __gitcomp ()
return
fi
- local c i=0 IFS=$' \t\n'
+ local c i=0 IFS=$' \t\n' sfx
for c in $1; do
if [[ $c == "--" ]]; then
if [[ "$cur_" == --no-* ]]; then
@@ -358,12 +358,15 @@ __gitcomp ()
break
fi
if [[ $c == "$cur_"* ]]; then
- c="$c${4-}"
- case $c in
- *=|*.) ;;
- *) c="$c " ;;
- esac
- COMPREPLY[i++]="${2-}$c"
+ if [[ -z "${4+set}" ]]; then
+ case $c in
+ *=|*.) sfx="" ;;
+ *) sfx=" " ;;
+ esac
+ else
+ sfx="$4"
+ fi
+ COMPREPLY[i++]="${2-}$c$sfx"
fi
done
}
@@ -2606,7 +2609,7 @@ __git_complete_config_variable_value ()
# subsections) instead of the default space.
__git_complete_config_variable_name ()
{
- local cur_="$cur" sfx
+ local cur_="$cur" sfx=" "
while test $# != 0; do
case "$1" in
@@ -58,7 +58,7 @@ __gitcomp ()
[[ "$cur_" == *= ]] && return
- local c IFS=$' \t\n'
+ local c IFS=$' \t\n' sfx
local -a array
for c in ${=1}; do
if [[ $c == "--" ]]; then
@@ -66,12 +66,16 @@ __gitcomp ()
array+=("--no-... ")
break
fi
- c="$c${4-}"
- case $c in
- *=|*.) ;;
- *) c="$c " ;;
- esac
- array+=("$c")
+
+ if [[ -z "${4+set}" ]]; then
+ case $c in
+ *=|*.) sfx="" ;;
+ *) sfx=" " ;;
+ esac
+ else
+ sfx="$4"
+ fi
+ array+=("$c$sfx")
done
compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
}
There's no point in adding a suffix after a suffix. If a suffix is provided: we add it, if not: then the default heuristic is used. There's no functional change since most callers don't specify a suffix, and the ones that do, use an =, which by default doesn't add an additional suffix. The only exception is __git_complete_config_variable_name, so make sure we pass the correct suffix. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> --- contrib/completion/git-completion.bash | 19 +++++++++++-------- contrib/completion/git-completion.zsh | 18 +++++++++++------- 2 files changed, 22 insertions(+), 15 deletions(-)