All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
   3 function __vcsh_repositories () {
 
   6         repos=( ${(f)"$(command vcsh list)"} )
 
   7         _describe -t repos 'repositories' repos
 
  10 function __vcsh_not_implemented_yet () {
 
  11         _message "Subcommand completion '${1#*-}': not implemented yet"
 
  14 function _vcsh-clone () {
 
  15         __vcsh_not_implemented_yet "$0" #TODO
 
  18 function _vcsh-delete () {
 
  19         (( CURRENT == 2 )) && __vcsh_repositories
 
  22 function _vcsh-enter () {
 
  23         (( CURRENT == 2 )) && __vcsh_repositories
 
  26 function _vcsh-help () {
 
  30 function _vcsh-init () {
 
  34 function _vcsh-list () {
 
  38 function _vcsh-list-tracked () {
 
  42 function _vcsh-list-tracked-by () {
 
  43         (( CURRENT == 2 )) && __vcsh_repositories
 
  46 function _vcsh-rename () {
 
  47         (( CURRENT == 2 )) && __vcsh_repositories
 
  48         (( CURRENT == 3 )) && _message "new repository name"
 
  49         (( CURRENT > 3 )) && _nothing
 
  52 function _vcsh-run () {
 
  53         (( CURRENT == 2 )) && __vcsh_repositories
 
  54         if (( CURRENT >= 3 )); then
 
  55                 words=( "${(@)words[3,-1]}" )
 
  61 function _vcsh-upgrade () {
 
  62         (( CURRENT == 2 )) && __vcsh_repositories
 
  65 function _vcsh-version () {
 
  69 function _vcsh-which () {
 
  73 function _vcsh-write-gitignore () {
 
  74         (( CURRENT == 2 )) && __vcsh_repositories
 
  78         local curcontext="${curcontext}"
 
  79         local state vcshcommand
 
  80         local -a args subcommands
 
  83                 "clone:clone an existing repository"
 
  84                 "delete:delete an existing repository"
 
  85                 "enter:enter repository; spawn new <\$SHELL>"
 
  87                 "init:initialize an empty repository"
 
  88                 "list:list all local vcsh repositories"
 
  89                 "list-tracked:list all files tracked by vcsh"
 
  90                 "list-tracked-by:list files tracked by a repository"
 
  91                 "rename:rename a repository"
 
  92                 "run:run command with <\$GIT_DIR> and <\$GIT_WORK_TREE> set"
 
  93                 "upgrade:upgrade repository to currently recommended settings"
 
  94                 "version:print version information"
 
  95                 "which:find <substring> in name of any tracked file"
 
  96                 "write-gitignore:write .gitignore.d/<repo> via git ls-files"
 
 100                 '-c[source <file> prior to other configuration files]:config files:_path_files'
 
 101                 '-d[enable debug mode]'
 
 102                 '-v[enable verbose mode]'
 
 103                 '*:: :->subcommand_or_options_or_repo'
 
 106         _arguments -C ${args} && return
 
 108         if [[ ${state} == "subcommand_or_options_or_repo" ]]; then
 
 109                 if (( CURRENT == 1 )); then
 
 110                         _describe -t subcommands 'vcsh sub-commands' subcommands
 
 113                         vcshcommand="${words[1]}"
 
 114                         if ! (( ${+functions[_vcsh-$vcshcommand]} )); then
 
 115                                 # There is no handler function, so this is probably the name
 
 116                                 # of a repository. Act accordingly.
 
 117                                 _message "git sub-command"
 
 118                                 #TODO and now we need to complete on git subcommands
 
 120                                 curcontext="${curcontext%:*:*}:vcsh-${vcshcommand}:"
 
 121                                 _call_function ret _vcsh-${vcshcommand}