Merge branch 'jk/maint-fetch-status-table' into maint-1.7.6
[gitweb.git] / contrib / completion / git-completion.bash
index 2ca91a3cc3140bdefeeb9afd0e6412e198a5b4f3..5a8309076dc633f431797c4bd59876490b0d7408 100755 (executable)
@@ -489,8 +489,6 @@ fi
 # generates completion reply with compgen
 __gitcomp ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        local cur_="$cur"
 
        if [ $# -gt 2 ]; then
@@ -553,8 +551,7 @@ __git_tags ()
 __git_refs ()
 {
        local i is_hash=y dir="$(__gitdir "${1-}")" track="${2-}"
-       local cur format refs
-       _get_comp_words_by_ref -n =: cur
+       local format refs
        if [ -d "$dir" ]; then
                case "$cur" in
                refs|refs/*)
@@ -631,12 +628,12 @@ __git_refs_remotes ()
 __git_remotes ()
 {
        local i ngoff IFS=$'\n' d="$(__gitdir)"
-       shopt -q nullglob || ngoff=1
-       shopt -s nullglob
+       __git_shopt -q nullglob || ngoff=1
+       __git_shopt -s nullglob
        for i in "$d/remotes"/*; do
                echo ${i#$d/remotes/}
        done
-       [ "$ngoff" ] && shopt -u nullglob
+       [ "$ngoff" ] && __git_shopt -u nullglob
        for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do
                i="${i#remote.}"
                echo "${i/.url*/}"
@@ -668,9 +665,7 @@ __git_compute_merge_strategies ()
 
 __git_complete_revlist_file ()
 {
-       local pfx ls ref cur
-       _get_comp_words_by_ref -n =: cur
-       local cur_="$cur"
+       local pfx ls ref cur_="$cur"
        case "$cur_" in
        *..?*:*)
                return
@@ -742,8 +737,6 @@ __git_complete_revlist ()
 
 __git_complete_remote_or_refspec ()
 {
-       local cur words cword
-       _get_comp_words_by_ref -n =: cur words cword
        local cur_="$cur" cmd="${words[1]}"
        local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0
        while [ $c -lt $cword ]; do
@@ -815,8 +808,6 @@ __git_complete_remote_or_refspec ()
 
 __git_complete_strategy ()
 {
-       local cur prev
-       _get_comp_words_by_ref -n =: cur prev
        __git_compute_merge_strategies
        case "$prev" in
        -s|--strategy)
@@ -994,8 +985,7 @@ __git_aliased_command ()
 # __git_find_on_cmdline requires 1 argument
 __git_find_on_cmdline ()
 {
-       local word subcommand c=1 words cword
-       _get_comp_words_by_ref -n =: words cword
+       local word subcommand c=1
        while [ $c -lt $cword ]; do
                word="${words[c]}"
                for subcommand in $1; do
@@ -1010,8 +1000,7 @@ __git_find_on_cmdline ()
 
 __git_has_doubledash ()
 {
-       local c=1 words cword
-       _get_comp_words_by_ref -n =: words cword
+       local c=1
        while [ $c -lt $cword ]; do
                if [ "--" = "${words[c]}" ]; then
                        return 0
@@ -1025,8 +1014,7 @@ __git_whitespacelist="nowarn warn error error-all fix"
 
 _git_am ()
 {
-       local cur dir="$(__gitdir)"
-       _get_comp_words_by_ref -n =: cur
+       local dir="$(__gitdir)"
        if [ -d "$dir"/rebase-apply ]; then
                __gitcomp "--skip --continue --resolved --abort"
                return
@@ -1050,8 +1038,6 @@ _git_am ()
 
 _git_apply ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --whitespace=*)
                __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
@@ -1074,8 +1060,6 @@ _git_add ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "
@@ -1089,8 +1073,6 @@ _git_add ()
 
 _git_archive ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --format=*)
                __gitcomp "$(git archive --list)" "" "${cur##--format=}"
@@ -1138,9 +1120,8 @@ _git_bisect ()
 
 _git_branch ()
 {
-       local i c=1 only_local_ref="n" has_r="n" cur words cword
+       local i c=1 only_local_ref="n" has_r="n"
 
-       _get_comp_words_by_ref -n =: cur words cword
        while [ $c -lt $cword ]; do
                i="${words[c]}"
                case "$i" in
@@ -1170,8 +1151,6 @@ _git_branch ()
 
 _git_bundle ()
 {
-       local words cword
-       _get_comp_words_by_ref -n =: words cword
        local cmd="${words[2]}"
        case "$cword" in
        2)
@@ -1194,8 +1173,6 @@ _git_checkout ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --conflict=*)
                __gitcomp "diff3 merge" "" "${cur##--conflict=}"
@@ -1225,8 +1202,6 @@ _git_cherry ()
 
 _git_cherry_pick ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--edit --no-commit"
@@ -1241,8 +1216,6 @@ _git_clean ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--dry-run --quiet"
@@ -1254,8 +1227,6 @@ _git_clean ()
 
 _git_clone ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "
@@ -1282,8 +1253,6 @@ _git_commit ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --cleanup=*)
                __gitcomp "default strip verbatim whitespace
@@ -1318,8 +1287,6 @@ _git_commit ()
 
 _git_describe ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "
@@ -1351,8 +1318,6 @@ _git_diff ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex
@@ -1373,8 +1338,6 @@ _git_difftool ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --tool=*)
                __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}"
@@ -1399,8 +1362,6 @@ __git_fetch_options="
 
 _git_fetch ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "$__git_fetch_options"
@@ -1412,8 +1373,6 @@ _git_fetch ()
 
 _git_format_patch ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --thread=*)
                __gitcomp "
@@ -1445,8 +1404,6 @@ _git_format_patch ()
 
 _git_fsck ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "
@@ -1461,8 +1418,6 @@ _git_fsck ()
 
 _git_gc ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--prune --aggressive"
@@ -1481,15 +1436,14 @@ _git_grep ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "
                        --cached
                        --text --ignore-case --word-regexp --invert-match
-                       --full-name
+                       --full-name --line-number
                        --extended-regexp --basic-regexp --fixed-strings
+                       --perl-regexp
                        --files-with-matches --name-only
                        --files-without-match
                        --max-depth
@@ -1505,8 +1459,6 @@ _git_grep ()
 
 _git_help ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--all --info --man --web"
@@ -1524,8 +1476,6 @@ _git_help ()
 
 _git_init ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --shared=*)
                __gitcomp "
@@ -1545,8 +1495,6 @@ _git_ls_files ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--cached --deleted --modified --others --ignored
@@ -1587,7 +1535,7 @@ __git_log_common_options="
 __git_log_gitk_options="
        --dense --sparse --full-history
        --simplify-merges --simplify-by-decoration
-       --left-right
+       --left-right --notes --no-notes
 "
 # Options that go well for log and shortlog (not gitk)
 __git_log_shortlog_options="
@@ -1607,8 +1555,6 @@ _git_log ()
        if [ -f "$g/MERGE_HEAD" ]; then
                merge="--merge"
        fi
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --pretty=*)
                __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
@@ -1662,8 +1608,6 @@ _git_merge ()
 {
        __git_complete_strategy && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "$__git_merge_options"
@@ -1674,8 +1618,6 @@ _git_merge ()
 
 _git_mergetool ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --tool=*)
                __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}"
@@ -1696,8 +1638,6 @@ _git_merge_base ()
 
 _git_mv ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--dry-run"
@@ -1716,8 +1656,6 @@ _git_notes ()
 {
        local subcommands='add append copy edit list prune remove show'
        local subcommand="$(__git_find_on_cmdline "$subcommands")"
-       local cur words cword
-       _get_comp_words_by_ref -n =: cur words cword
 
        case "$subcommand,$cur" in
        ,--*)
@@ -1767,8 +1705,6 @@ _git_pull ()
 {
        __git_complete_strategy && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "
@@ -1784,8 +1720,6 @@ _git_pull ()
 
 _git_push ()
 {
-       local cur prev
-       _get_comp_words_by_ref -n =: cur prev
        case "$prev" in
        --repo)
                __gitcomp "$(__git_remotes)"
@@ -1810,8 +1744,6 @@ _git_push ()
 _git_rebase ()
 {
        local dir="$(__gitdir)"
-       local cur
-       _get_comp_words_by_ref -n =: cur
        if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then
                __gitcomp "--continue --skip --abort"
                return
@@ -1853,8 +1785,6 @@ __git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all"
 
 _git_send_email ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --confirm=*)
                __gitcomp "
@@ -1896,8 +1826,6 @@ _git_stage ()
 
 __git_config_get_set_variables ()
 {
-       local words cword
-       _get_comp_words_by_ref -n =: words cword
        local prevword word config_file= c=$cword
        while [ $c -gt 1 ]; do
                word="${words[c]}"
@@ -1928,8 +1856,6 @@ __git_config_get_set_variables ()
 
 _git_config ()
 {
-       local cur prev
-       _get_comp_words_by_ref -n =: cur prev
        case "$prev" in
        branch.*.remote)
                __gitcomp "$(__git_remotes)"
@@ -2132,7 +2058,7 @@ _git_config ()
                color.ui
                commit.status
                commit.template
-               core.abbrevguard
+               core.abbrev
                core.askpass
                core.attributesfile
                core.autocrlf
@@ -2389,8 +2315,6 @@ _git_reset ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--merge --mixed --hard --soft --patch"
@@ -2402,8 +2326,6 @@ _git_reset ()
 
 _git_revert ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--edit --mainline --no-edit --no-commit --signoff"
@@ -2417,8 +2339,6 @@ _git_rm ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "--cached --dry-run --ignore-unmatch --quiet"
@@ -2432,8 +2352,6 @@ _git_shortlog ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "
@@ -2451,8 +2369,6 @@ _git_show ()
 {
        __git_has_doubledash && return
 
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --pretty=*)
                __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases)
@@ -2476,8 +2392,6 @@ _git_show ()
 
 _git_show_branch ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "
@@ -2494,8 +2408,6 @@ _git_show_branch ()
 
 _git_stash ()
 {
-       local cur
-       _get_comp_words_by_ref -n =: cur
        local save_opts='--keep-index --no-keep-index --quiet --patch'
        local subcommands='save list show apply clear drop pop create branch'
        local subcommand="$(__git_find_on_cmdline "$subcommands")"
@@ -2540,8 +2452,6 @@ _git_submodule ()
 
        local subcommands="add status init update summary foreach sync"
        if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
-               local cur
-               _get_comp_words_by_ref -n =: cur
                case "$cur" in
                --*)
                        __gitcomp "--quiet --cached"
@@ -2585,8 +2495,6 @@ _git_svn ()
                        --edit --rmdir --find-copies-harder --copy-similarity=
                        "
 
-               local cur
-               _get_comp_words_by_ref -n =: cur
                case "$subcommand,$cur" in
                fetch,--*)
                        __gitcomp "--revision= --fetch-all $fc_opts"
@@ -2658,8 +2566,6 @@ _git_svn ()
 _git_tag ()
 {
        local i c=1 f=0
-       local words cword prev
-       _get_comp_words_by_ref -n =: words cword prev
        while [ $c -lt $cword ]; do
                i="${words[c]}"
                case "$i" in
@@ -2703,10 +2609,14 @@ _git ()
        if [[ -n ${ZSH_VERSION-} ]]; then
                emulate -L bash
                setopt KSH_TYPESET
+
+               # workaround zsh's bug that leaves 'words' as a special
+               # variable in versions < 4.3.12
+               typeset -h words
        fi
 
-       local cur words cword
-       _get_comp_words_by_ref -n =: cur words cword
+       local cur words cword prev
+       _get_comp_words_by_ref -n =: cur words cword prev
        while [ $c -lt $cword ]; do
                i="${words[c]}"
                case "$i" in
@@ -2754,17 +2664,22 @@ _gitk ()
        if [[ -n ${ZSH_VERSION-} ]]; then
                emulate -L bash
                setopt KSH_TYPESET
+
+               # workaround zsh's bug that leaves 'words' as a special
+               # variable in versions < 4.3.12
+               typeset -h words
        fi
 
+       local cur words cword prev
+       _get_comp_words_by_ref -n =: cur words cword prev
+
        __git_has_doubledash && return
 
-       local cur
        local g="$(__gitdir)"
        local merge=""
        if [ -f "$g/MERGE_HEAD" ]; then
                merge="--merge"
        fi
-       _get_comp_words_by_ref -n =: cur
        case "$cur" in
        --*)
                __gitcomp "
@@ -2793,7 +2708,7 @@ complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \
 fi
 
 if [[ -n ${ZSH_VERSION-} ]]; then
-       shopt () {
+       __git_shopt () {
                local option
                if [ $# -ne 2 ]; then
                        echo "USAGE: $0 (-q|-s|-u) <option>" >&2
@@ -2816,4 +2731,8 @@ if [[ -n ${ZSH_VERSION-} ]]; then
                        return 1
                esac
        }
+else
+       __git_shopt () {
+               shopt "$@"
+       }
 fi