@ -53,19 +53,6 @@ __gitdir ()
@@ -53,19 +53,6 @@ __gitdir ()
fi
}
__gitcomp_1 ()
{
local c IFS=$' \t\n'
for c in $1; do
c="$c$2"
case $c in
--*=*|*.) ;;
*) c="$c " ;;
esac
printf '%s\n' "$c"
done
}
# The following function is based on code from:
#
# bash_completion - programmable completion functions for bash 3.2+
@ -195,8 +182,18 @@ _get_comp_words_by_ref ()
@@ -195,8 +182,18 @@ _get_comp_words_by_ref ()
}
fi
# Generates completion reply with compgen, appending a space to possible
# completion words, if necessary.
__gitcompadd ()
{
local i=0
for x in $1; do
if [[ "$x" == "$3"* ]]; then
COMPREPLY[i++]="$2$x$4"
fi
done
}
# Generates completion reply, appending a space to possible completion words,
# if necessary.
# It accepts 1 to 4 arguments:
# 1: List of possible completion words.
# 2: A prefix to be added to each possible completion word (optional).
@ -208,19 +205,25 @@ __gitcomp ()
@@ -208,19 +205,25 @@ __gitcomp ()
case "$cur_" in
--*=)
COMPREPLY=()
;;
*)
local IFS=$'\n'
COMPREPLY=($(compgen -P "${2-}" \
-W "$(__gitcomp_1 "${1-}" "${4-}")" \
-- "$cur_"))
local c i=0 IFS=$' \t\n'
for c in $1; do
c="$c${4-}"
if [[ $c == "$cur_"* ]]; then
case $c in
--*=*|*.) ;;
*) c="$c " ;;
esac
COMPREPLY[i++]="${2-}$c"
fi
done
;;
esac
}
# Generates completion reply with compgen from newline-separated possible
# completion words by appending a space to all of them.
# Generates completion reply from newline-separated possible completion words
# by appending a space to all of them.
# It accepts 1 to 4 arguments:
# 1: List of possible completion words, separated by a single newline.
# 2: A prefix to be added to each possible completion word (optional).
@ -231,7 +234,7 @@ __gitcomp ()
@@ -231,7 +234,7 @@ __gitcomp ()
__gitcomp_nl ()
{
local IFS=$'\n'
COMPREPLY=($(compgen -P "${2-}" -S "${4- }" -W "$1" -- "${3-$cur}"))
__gitcompadd "$1" "${2-}" "${3-$cur}" "${4- }"
}
# Generates completion reply with compgen from newline-separated possible
@ -614,7 +617,6 @@ __git_complete_remote_or_refspec ()
@@ -614,7 +617,6 @@ __git_complete_remote_or_refspec ()
case "$cmd" in
push) no_complete_refspec=1 ;;
fetch)
COMPREPLY=()
return
;;
*) ;;
@ -630,7 +632,6 @@ __git_complete_remote_or_refspec ()
@@ -630,7 +632,6 @@ __git_complete_remote_or_refspec ()
return
fi
if [ $no_complete_refspec = 1 ]; then
COMPREPLY=()
return
fi
[ "$remote" = "." ] && remote=
@ -951,7 +952,6 @@ _git_am ()
@@ -951,7 +952,6 @@ _git_am ()
"
return
esac
COMPREPLY=()
}
_git_apply ()
@ -971,7 +971,6 @@ _git_apply ()
@@ -971,7 +971,6 @@ _git_apply ()
"
return
esac
COMPREPLY=()
}
_git_add ()
@ -1031,7 +1030,6 @@ _git_bisect ()
@@ -1031,7 +1030,6 @@ _git_bisect ()
__gitcomp_nl "$(__git_refs)"
;;
*)
COMPREPLY=()
;;
esac
}
@ -1124,9 +1122,14 @@ _git_cherry ()
@@ -1124,9 +1122,14 @@ _git_cherry ()
_git_cherry_pick ()
{
local dir="$(__gitdir)"
if [ -f "$dir"/CHERRY_PICK_HEAD ]; then
__gitcomp "--continue --quit --abort"
return
fi
case "$cur" in
--*)
__gitcomp "--edit --no-commit"
__gitcomp "--edit --no-commit --signoff --strategy= --mainline"
;;
*)
__gitcomp_nl "$(__git_refs)"
@ -1170,7 +1173,6 @@ _git_clone ()
@@ -1170,7 +1173,6 @@ _git_clone ()
return
;;
esac
COMPREPLY=()
}
_git_commit ()
@ -1354,7 +1356,6 @@ _git_fsck ()
@@ -1354,7 +1356,6 @@ _git_fsck ()
return
;;
esac
COMPREPLY=()
}
_git_gc ()
@ -1365,7 +1366,6 @@ _git_gc ()
@@ -1365,7 +1366,6 @@ _git_gc ()
return
;;
esac
COMPREPLY=()
}
_git_gitk ()
@ -1442,7 +1442,6 @@ _git_init ()
@@ -1442,7 +1442,6 @@ _git_init ()
return
;;
esac
COMPREPLY=()
}
_git_ls_files ()
@ -1578,7 +1577,6 @@ _git_mergetool ()
@@ -1578,7 +1577,6 @@ _git_mergetool ()
return
;;
esac
COMPREPLY=()
}
_git_merge_base ()
@ -1831,7 +1829,7 @@ _git_config ()
@@ -1831,7 +1829,7 @@ _git_config ()
local remote="${prev#remote.}"
remote="${remote%.fetch}"
if [ -z "$cur" ]; then
COMPREPLY=("refs/heads/")
__gitcompadd "refs/heads/" "" "" ""
return
fi
__gitcomp_nl "$(__git_refs_remotes "$remote")"
@ -1891,7 +1889,6 @@ _git_config ()
@@ -1891,7 +1889,6 @@ _git_config ()
return
;;
*.*)
COMPREPLY=()
return
;;
esac
@ -2272,7 +2269,6 @@ _git_remote ()
@@ -2272,7 +2269,6 @@ _git_remote ()
__gitcomp "$c"
;;
*)
COMPREPLY=()
;;
esac
}
@ -2388,8 +2384,6 @@ _git_stash ()
@@ -2388,8 +2384,6 @@ _git_stash ()
*)
if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then
__gitcomp "$subcommands"
else
COMPREPLY=()
fi
;;
esac
@ -2402,14 +2396,12 @@ _git_stash ()
@@ -2402,14 +2396,12 @@ _git_stash ()
__gitcomp "--index --quiet"
;;
show,--*|drop,--*|branch,--*)
COMPREPLY=()
;;
show,*|apply,*|drop,*|pop,*|branch,*)
__gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \
| sed -n -e 's/:.*//p')"
;;
*)
COMPREPLY=()
;;
esac
fi
@ -2526,7 +2518,6 @@ _git_svn ()
@@ -2526,7 +2518,6 @@ _git_svn ()
__gitcomp "--revision= --parent"
;;
*)
COMPREPLY=()
;;
esac
fi
@ -2551,13 +2542,10 @@ _git_tag ()
@@ -2551,13 +2542,10 @@ _git_tag ()
case "$prev" in
-m|-F)
COMPREPLY=()
;;
-*|tag)
if [ $f = 1 ]; then
__gitcomp_nl "$(__git_tags)"
else
COMPREPLY=()
fi
;;
*)