Merge branch 'fc/zsh-completion'
authorJunio C Hamano <gitster@pobox.com>
Wed, 28 Nov 2012 21:42:36 +0000 (13:42 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 28 Nov 2012 21:42:37 +0000 (13:42 -0800)
* fc/zsh-completion:
completion: start moving to the new zsh completion
completion: add new zsh completion

1  2 
contrib/completion/git-completion.bash
index 0960acc58680b97a6cc0cf22fe7980d8758c6ee4,9cd58ca45dc182e78c1b687d5d1f5ef87cc87b8f..98f390ae46a6359d3a9d5f42fc2cce2186efd242
  #    3) Consider changing your PS1 to also show the current branch,
  #       see git-prompt.sh for details.
  
- if [[ -n ${ZSH_VERSION-} ]]; then
-       autoload -U +X bashcompinit && bashcompinit
- fi
  case "$COMP_WORDBREAKS" in
  *:*) : great ;;
  *)   COMP_WORDBREAKS="$COMP_WORDBREAKS:"
@@@ -169,7 -165,6 +165,6 @@@ __git_reassemble_comp_words_by_ref(
  }
  
  if ! type _get_comp_words_by_ref >/dev/null 2>&1; then
- if [[ -z ${ZSH_VERSION:+set} ]]; then
  _get_comp_words_by_ref ()
  {
        local exclude cur_ words_ cword_
                shift
        done
  }
- else
- _get_comp_words_by_ref ()
- {
-       while [ $# -gt 0 ]; do
-               case "$1" in
-               cur)
-                       cur=${COMP_WORDS[COMP_CWORD]}
-                       ;;
-               prev)
-                       prev=${COMP_WORDS[COMP_CWORD-1]}
-                       ;;
-               words)
-                       words=("${COMP_WORDS[@]}")
-                       ;;
-               cword)
-                       cword=$COMP_CWORD
-                       ;;
-               -n)
-                       # assume COMP_WORDBREAKS is already set sanely
-                       shift
-                       ;;
-               esac
-               shift
-       done
- }
- fi
  fi
  
  # Generates completion reply with compgen, appending a space to possible
@@@ -321,7 -290,7 +290,7 @@@ __git_refs (
                                if [[ "$ref" == "$cur"* ]]; then
                                        echo "$ref"
                                fi
 -                      done | uniq -u
 +                      done | sort | uniq -u
                fi
                return
        fi
@@@ -585,7 -554,7 +554,7 @@@ __git_list_porcelain_commands (
  {
        local i IFS=" "$'\n'
        __git_compute_all_commands
 -      for i in "help" $__git_all_commands
 +      for i in $__git_all_commands
        do
                case $i in
                *--*)             : helper pattern;;
@@@ -2430,20 -2399,69 +2399,69 @@@ __gitk_main (
        __git_complete_revlist
  }
  
- __git_func_wrap ()
- {
-       if [[ -n ${ZSH_VERSION-} ]]; then
-               emulate -L bash
-               setopt KSH_TYPESET
+ if [[ -n ${ZSH_VERSION-} ]]; then
+       echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2
  
-               # workaround zsh's bug that leaves 'words' as a special
-               # variable in versions < 4.3.12
-               typeset -h words
+       __gitcomp ()
+       {
+               emulate -L zsh
  
-               # workaround zsh's bug that quotes spaces in the COMPREPLY
-               # array if IFS doesn't contain spaces.
-               typeset -h IFS
-       fi
+               local cur_="${3-$cur}"
+               case "$cur_" in
+               --*=)
+                       ;;
+               *)
+                       local c IFS=$' \t\n'
+                       local -a array
+                       for c in ${=1}; do
+                               c="$c${4-}"
+                               case $c in
+                               --*=*|*.) ;;
+                               *) c="$c " ;;
+                               esac
+                               array+=("$c")
+                       done
+                       compset -P '*[=:]'
+                       compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
+                       ;;
+               esac
+       }
+       __gitcomp_nl ()
+       {
+               emulate -L zsh
+               local IFS=$'\n'
+               compset -P '*[=:]'
+               compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0
+       }
+       __git_zsh_helper ()
+       {
+               emulate -L ksh
+               local cur cword prev
+               cur=${words[CURRENT-1]}
+               prev=${words[CURRENT-2]}
+               let cword=CURRENT-1
+               __${service}_main
+       }
+       _git ()
+       {
+               emulate -L zsh
+               local _ret=1
+               __git_zsh_helper
+               let _ret && _default -S '' && _ret=0
+               return _ret
+       }
+       compdef _git git gitk
+       return
+ fi
+ __git_func_wrap ()
+ {
        local cur words cword prev
        _get_comp_words_by_ref -n =: cur words cword prev
        $1