summaryrefslogtreecommitdiff
path: root/Completion/Unix
diff options
context:
space:
mode:
authorNikolai Weibull <pcppopper@users.sourceforge.net>2011-07-21 09:05:57 +0000
committerNikolai Weibull <pcppopper@users.sourceforge.net>2011-07-21 09:05:57 +0000
commit6502b3827722b1acfb4610367324b56a847bf403 (patch)
tree2af75be6f6459ebfd18904981c6cb98d0febf8dd /Completion/Unix
parenta8657c4b40c74416b1e2cd0ed85d114d0d99cd4b (diff)
downloadzsh-6502b3827722b1acfb4610367324b56a847bf403.tar.gz
zsh-6502b3827722b1acfb4610367324b56a847bf403.zip
29272: Completion/Unix/Command/_git: Use return values correctly accross all
completion functions.
Diffstat (limited to 'Completion/Unix')
-rw-r--r--Completion/Unix/Command/_git395
1 files changed, 235 insertions, 160 deletions
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index 29071d1b2..8f9f6d454 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -36,7 +36,7 @@
(( $+functions[_git-add] )) ||
_git-add () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
local ignore_missing=
@@ -75,6 +75,8 @@ _git-add () {
$ignored_files_alternatives && ret=0
;;
esac
+
+ return ret
}
(( $+functions[_git-am] )) ||
@@ -109,12 +111,12 @@ _git-am () {
'--patch-format=-[specify format patches are in]:patch format:((mbox\:"mbox format"
stgit-series\:"StGit patch series"
stgit\:"stgit format"))' \
- '*:mbox file:_files' && ret=0
+ '*:mbox file:_files'
}
(( $+functions[_git-archive] )) ||
_git-archive () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
declare -a backend_args
@@ -155,6 +157,8 @@ _git-archive () {
__git_tree_files ${PREFIX:-.} $line[1] && ret=0
;;
esac
+
+ return ret
}
(( $+functions[_git-applymbox] )) ||
@@ -166,14 +170,14 @@ _git-applymbox () {
'-u[encode commit information in UTF-8]' \
'(1)-c[restart command after fixing an unclean patch]:patch:_files -g ".dotest/0*"' \
':mbox file:_files' \
- '::signoff file:__git_signoff_file' && ret=0
+ '::signoff file:__git_signoff_file'
}
(( $+functions[_git-bisect] )) ||
_git-bisect () {
# TODO: next subcommand is undocumented. Git-bisect.sh mentions that the
# subcommand might be removed from the UI level.
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -C \
@@ -256,6 +260,8 @@ _git-bisect () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-branch] )) ||
@@ -316,12 +322,12 @@ _git-branch () {
$dependent_modification_args \
"($l $c $m -D)-d[delete a fully merged branch]" \
"($l $c $m -d)-D[delete a branch]" \
- $dependent_deletion_args && ret=0
+ $dependent_deletion_args
}
(( $+functions[_git-bundle] )) ||
_git-bundle () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -C \
@@ -369,6 +375,8 @@ _git-bundle () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-checkout] )) ||
@@ -381,7 +389,7 @@ _git-checkout () {
new_branch_reflog_opt="(--patch)-l[create the new branch's reflog]"
fi
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -w -C -s \
@@ -430,7 +438,7 @@ _git-checkout () {
$tree_ish_arg \
$file_arg && ret=0
elif [[ -n ${opt_args[(I)-b|-B|-t|--track|--orphan]} ]]; then
- _nothing && ret=0
+ _nothing
elif [[ -n $line[1] ]] && __git_is_treeish $line[1]; then
__git_ignore_line __git_tree_files ${PREFIX:-.} $line[1] && ret=0
else
@@ -438,6 +446,8 @@ _git-checkout () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-cherry-pick] )) ||
@@ -449,7 +459,7 @@ _git-cherry-pick () {
'(-n --no-commit --ff)'{-n,--no-commit}'[do not make the actually commit]' \
'(-s --signoff --ff)'{-s,--signoff}'[add Signed-off-by line at the end of the commit message]' \
'(-e --edit -x -n --no-commit -s --signoff)--ff[fast forward, if possible]' \
- ': :__git_revisions' && ret=0
+ ': :__git_revisions'
}
(( $+functions[_git-citool] )) ||
@@ -459,7 +469,7 @@ _git-citool () {
(( $+functions[_git-clean] )) ||
_git-clean () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -w -C -S -s \
@@ -509,11 +519,13 @@ _git-clean () {
$other_files_alt && ret=0
;;
esac
+
+ return ret
}
(( $+functions[_git-clone] )) ||
_git-clone () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
# TODO: Argument to -o should be a remote name.
@@ -548,6 +560,8 @@ _git-clone () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-commit] )) ||
@@ -599,7 +613,7 @@ _git-commit () {
{-F,--file=}'[read commit message from given file]: :_files' \
{-m,--message=}'[use the given message as the commit message]:message' \
{-t,--template=}'[use file as a template commit message]:template:_files' \
- $amend_opt && ret=0
+ $amend_opt
}
(( $+functions[_git-describe] )) ||
@@ -616,12 +630,12 @@ _git-describe () {
'(--abbrev)--long[always show full format, even for exact matches]' \
'--match=[only consider tags matching glob pattern]:pattern' \
'--always[show uniquely abbreviated commit object as fallback]' \
- '*: :__git_committishs' && ret=0
+ '*: :__git_committishs'
}
(( $+functions[_git-diff] )) ||
_git-diff () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
local -a diff_options
@@ -699,11 +713,13 @@ _git-diff () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-fetch] )) ||
_git-fetch () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
local -a fetch_options
@@ -727,11 +743,13 @@ _git-fetch () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-format-patch] )) ||
_git-format-patch () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
local -a diff_options
@@ -780,6 +798,8 @@ _git-format-patch () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-gc] )) ||
@@ -789,7 +809,7 @@ _git-gc () {
'--auto[check whether housekeeping is required]' \
'( --no-prune)--prune=[prune loose objects older than given date]: :__git_datetimes' \
'(--prune )--no-prune[do not prune any loose objects]' \
- '--quiet[suppress all progress reports]' && ret=0
+ '--quiet[suppress all progress reports]'
}
(( $+functions[_git-grep] )) ||
@@ -804,7 +824,7 @@ _git-grep () {
'--not[the following pattern must not match]')
fi
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
# TODO: Need to implement -<num> as a shorthand for -C<num>
@@ -881,17 +901,19 @@ _git-grep () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-gui] )) ||
_git-gui () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -C \
'--version[display version information]' \
': :->command' \
- '*:: :->arg'
+ '*:: :->arg' && ret=0
case $state in
(command)
@@ -910,7 +932,7 @@ _git-gui () {
case $line[1] in
(blame)
- _git-blame
+ _git-blame && ret=0
;;
(browser)
_arguments -C \
@@ -924,7 +946,7 @@ _git-gui () {
esac
;;
(citool)
- _git-citool
+ _git-citool && ret=0
;;
(version)
_nothing
@@ -935,6 +957,8 @@ _git-gui () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-init] )) ||
@@ -944,12 +968,12 @@ _git-init () {
'--bare[create a bare repository]' \
'--template=[directory to use as a template for the object database]: :_directories' \
'--shared=[share repository amongst several users]:: :__git_repository_permissions' \
- ':: :_directories' && ret=0
+ ':: :_directories'
}
(( $+functions[_git-log] )) ||
_git-log () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
local -a log_options revision_options
@@ -988,6 +1012,8 @@ _git-log () {
;;
esac
esac
+
+ return ret
}
(( $+functions[_git-merge] )) ||
@@ -1000,12 +1026,12 @@ _git-merge () {
'-m[set the commit message to be used for the merge commit]:merge message' \
'( --no-rerere-autoupdate)--rerere-autoupdate[allow the rerere mechanism to update the index]' \
'(--rerere-autoupdate )--no-rerere-autoupdate[do not allow the rerere mechanism to update the index]' \
- '*: :__git_commits' && ret=0
+ '*: :__git_commits'
}
(( $+functions[_git-mv] )) ||
_git-mv () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -w -C -S -s \
@@ -1022,11 +1048,13 @@ _git-mv () {
'directories:destination directory:_directories' && ret=0
;;
esac
+
+ return ret
}
(( $+functions[_git-notes] )) ||
_git-notes () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -C \
@@ -1092,6 +1120,8 @@ _git-notes () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-pull] )) ||
@@ -1106,7 +1136,7 @@ _git-pull () {
'(--rebase )--no-rebase[do not perform a rebase after fetching]' \
$fetch_options \
': :__git_any_repositories' \
- '*: :__git_ref_specs' && ret=0
+ '*: :__git_ref_specs'
}
(( $+functions[_git-push] )) ||
@@ -1132,7 +1162,7 @@ _git-push () {
'(-q --quiet -v --verbose)'{-v,--verbose}'[output additional information]' \
'(-q --quiet)--progress[output progress information]' \
':: :__git_any_repositories' \
- '*: :__git_ref_specs' && ret=0
+ '*: :__git_ref_specs'
}
(( $+functions[_git-rebase] )) ||
@@ -1167,12 +1197,12 @@ _git-rebase () {
'--no-ff[cherry-pick all rebased commits with --interactive, otherwise synonymous to --force-rebase]' \
'--onto[start new branch with HEAD equal to given revision]:newbase:__git_revisions' \
':upstream branch:__git_revisions' \
- '::working branch:__git_branch_names' && ret=0
+ '::working branch:__git_branch_names'
}
(( $+functions[_git-reset] )) ||
_git-reset () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
typeset -A opt_args
_arguments -w -C -s \
@@ -1196,6 +1226,8 @@ _git-reset () {
__git_tree_files ${PREFIX:-.} $commit && ret=0
;;
esac
+
+ return ret
}
(( $+functions[_git-revert] )) ||
@@ -1206,12 +1238,12 @@ _git-revert () {
'(-e --edit)--no-edit[do not edit the commit message]' \
'(-n --no-commit)'{-n,--no-commit}'[do not commit the reversion]' \
'(-s --signoff)'{-s,--signoff}'[add Signed-off-by line at the end of the commit message]' \
- ': :__git_commits' && ret=0
+ ': :__git_commits'
}
(( $+functions[_git-rm] )) ||
_git-rm () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -w -C -S -s \
@@ -1232,11 +1264,13 @@ _git-rm () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-shortlog] )) ||
_git-shortlog () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
local -a revision_options
@@ -1268,11 +1302,13 @@ _git-shortlog () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-show] )) ||
_git-show () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
typeset -A opt_args
local -a log_options revision_options
@@ -1293,11 +1329,13 @@ _git-show () {
'blobs::__git_blobs' && ret=0
;;
esac
+
+ return ret
}
(( $+functions[_git-stash] )) ||
_git-stash () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -C \
@@ -1378,6 +1416,8 @@ _git-stash () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-status] )) ||
@@ -1397,12 +1437,12 @@ _git-status () {
all\:"also show untracked files in untracked directories (default)"))' \
'--ignore-submodules[ignore changes to submodules]:: :__git_ignore_submodules_whens' \
'(--porcelain)-z[use NUL termination on output]' \
- '*: :__git_ignore_line_inside_arguments _files' && ret=0
+ '*: :__git_ignore_line_inside_arguments _files'
}
(( $+functions[_git-submodule] )) ||
_git-submodule () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -C -A '-*' \
@@ -1503,6 +1543,8 @@ _git-submodule () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-tag] )) ||
@@ -1534,7 +1576,7 @@ _git-tag () {
'::pattern' \
- verification \
'-v[verifies gpg signutare of tags]' \
- '*:: :__git_ignore_line_inside_arguments __git_tags' && ret=0
+ '*:: :__git_ignore_line_inside_arguments __git_tags'
}
# Ancillary Commands (Manipulators)
@@ -1542,7 +1584,7 @@ _git-tag () {
(( $+functions[_git-config] )) ||
_git-config () {
local name_arg value_arg
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
if (( words[(I)--get-regexp] )); then
@@ -1965,7 +2007,7 @@ _git-config () {
case $state in
(section)
- __git_config_sections -b '(|)' '^' section-names 'section name' $*
+ __git_config_sections -b '(|)' '^' section-names 'section name' $* && ret=0
;;
(is-a-tty)
declare -a values
@@ -1973,7 +2015,7 @@ _git-config () {
true
false
auto)
- _describe -t values 'stdout is a tty' values
+ _describe -t values 'stdout is a tty' values && ret=0
;;
(option)
local label=option
@@ -2155,7 +2197,7 @@ _git-config () {
;;
(gettable-option)
_describe -t git-options option \
- ${${${(0)"$(_call_program gettable-options git config -z --list)"}%%$'\n'*}//:/\\:}
+ ${${${(0)"$(_call_program gettable-options git config -z --list)"}%%$'\n'*}//:/\\:} && ret=0
;;
(gettable-colorbool-option)
__git_config_sections -b '(|)' -a '(|)' '^color\.[^.]+$' gettable-colorbool-options option && ret=0
@@ -2188,7 +2230,7 @@ _git-config () {
# TODO: Should really only complete unique remotes, that is, not the same
# remote more than once in the list.
__git_remotes -S $suffix -q && ret=0
- return
+ return ret
;;
esac
local z=$'\0'
@@ -2197,7 +2239,7 @@ _git-config () {
if (( $#parts < 2 )) && [[ $line[1] == [^.]##.*.[^.]## ]]; then
parts=("${(S@0)${git_options_static[(r)(#i)${line[1]%%.*}.\*.${line[1]##*.}:*]}//(#b)(*[^\\]|):/$match[1]$z}")
fi
- (( $#parts > 0 )) || return
+ (( $#parts > 0 )) || return ret
case $parts[4] in
('->'*)
case ${parts[4]#->} in
@@ -2463,6 +2505,8 @@ _git-config () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-fast-export] )) ||
@@ -2484,7 +2528,7 @@ _git-fast-export () {
'--fake-missing-tagger=[fake a tagger when tags lack them]' \
'--no-data[do not output blocb objects, instead referring to them via their SHA-1 hash]' \
'--full-tree[output full tree for each commit]' \
- '*: :__git_commit_ranges' && ret=0
+ '*: :__git_commit_ranges'
}
(( $+functions[_git-fast-import] )) ||
@@ -2504,7 +2548,7 @@ _git-fast-import () {
'*--no-relative-marks[paths for export/import are not relative to internal directory in current repository]' \
'--export-pack-edges=-[list packfiles and last commit on branches in them in given file]: :_files' \
'--quiet[disable all non-fatal output]' \
- '--stats[display statistics about object created]' && ret=0
+ '--stats[display statistics about object created]'
}
(( $+functions[_git-filter-branch] )) ||
@@ -2526,7 +2570,7 @@ _git-filter-branch () {
'--original[namespace where original commits will be stored]:namespace:_directories' \
'-d[temporary directory used for rewriting]: :_directories' \
'(-f --force)'{-f,--force}'[force operation]' \
- '*: :__git_commit_ranges' && ret=0
+ '*: :__git_commit_ranges'
}
(( $+functions[_git-mergetool] )) ||
@@ -2536,7 +2580,7 @@ _git-mergetool () {
'(-t --tool)'{-t,--tool=}'[merge resolution program to use]: :__git_mergetools' \
'(-y --no-prompt --prompt)'{-y,--no-prompt}'[do not prompt before invocation of merge resolution program]' \
'(-y --no-prompt)--prompt[prompt before invocation of merge resolution program]' \
- '*:conflicted file:_files' && ret=0
+ '*:conflicted file:_files'
}
(( $+functions[_git-pack-refs] )) ||
@@ -2545,7 +2589,7 @@ _git-pack-refs () {
'( --no-all)--all[pack all refs]' \
'(--all )--no-all[do not pack all refs]' \
'( --no-prune)--prune[remove loose refs after packing them]' \
- '(--prune )--no-prune[do not remove loose refs after packing them]' && ret=0
+ '(--prune )--no-prune[do not remove loose refs after packing them]'
}
(( $+functions[_git-prune] )) ||
@@ -2554,7 +2598,7 @@ _git-prune () {
'(-n --dry-run)'{-n,--dry-run}'[do not remove anything; just report what would be removed]' \
'(-v --verbose)'{-v,--rerbose}'[report all removed objects]' \
'--expire[only expire loose objects older than given date]: :__git_datetimes' \
- '*:: :__git_heads' && ret=0
+ '*:: :__git_heads'
}
(( $+functions[_git-reflog] )) ||
@@ -2565,9 +2609,9 @@ _git-reflog () {
if [[ $words[2] == --* ]]; then
_arguments -S \
$revision_options \
- ':: :__git_references' && ret=0
+ ':: :__git_references'
else
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
# TODO: -h is undocumented.
@@ -2626,6 +2670,8 @@ _git-reflog () {
;;
esac
esac
+
+ return ret
fi
}
@@ -2637,12 +2683,12 @@ _git-relink () {
'--help[display help]' \
': :_directories' \
': :_directories' \
- '*: :_directories' && ret=0
+ '*: :_directories'
}
(( $+functions[_git-remote] )) ||
_git-remote () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -C \
@@ -2735,6 +2781,8 @@ _git-remote () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-repack] )) ||
@@ -2752,7 +2800,7 @@ _git-repack () {
'--window=-[number of objects to consider when doing delta compression]: :__git_guard_number "number of objects"' \
'--depth=-[maximum delta depth]: :__git_guard_number "maximum delta depth"' \
'--window-memory=-[scale window size dynamically to not use more than N bytes of memory]: :__git_guard_bytes' \
- '--max-pack-size=-[maximum size of each output packfile]:maximum pack size:__git_guard_bytes' && ret=0
+ '--max-pack-size=-[maximum size of each output packfile]:maximum pack size:__git_guard_bytes'
}
(( $+functions[_git-replace] )) ||
@@ -2763,14 +2811,14 @@ _git-replace () {
'(- : *)-l[list replace refs]:pattern' \
': :__git_objects' \
':replacement:__git_objects' \
- '*: :__git_objects' && ret=0
+ '*: :__git_objects'
}
# Ancillary Commands (Interrogators)
(( $+functions[_git-blame] )) ||
_git-blame () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
declare -a revision_options
@@ -2814,6 +2862,8 @@ _git-blame () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-cherry] )) ||
@@ -2824,13 +2874,13 @@ _git-cherry () {
'--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length' \
':upstream commit:__git_commits' \
'::head commit:__git_commits' \
- '::limit commit:__git_commits' && ret=0
+ '::limit commit:__git_commits'
}
(( $+functions[_git-count-objects] )) ||
_git-count-objects () {
_arguments \
- '(-v --verbose)'{-v,--verbose}'[also report number of in-pack objects and objects that can be removed]' && ret=0
+ '(-v --verbose)'{-v,--verbose}'[also report number of in-pack objects and objects that can be removed]'
}
(( $+functions[_git-difftool] )) ||
@@ -2857,7 +2907,7 @@ _git-fsck () {
'--strict[do strict checking]' \
'(-v --verbose)'{-v,--verbose}'[output additional information]' \
'--lost-found[write dangling objects into .git/lost-found]' \
- '*: :__git_objects' && ret=0
+ '*: :__git_objects'
}
(( $+functions[_git-get-tar-commit-id] )) ||
@@ -2872,12 +2922,12 @@ _git-help () {
'(-a --all -m --man -w --web)'{-i,--info}'[show all available commands]' \
'(-a --all -i --info -w --web)'{-m,--man}'[show all available commands]' \
'(-a --all -i --info -m --man )'{-w,--web}'[show all available commands]' \
- ': :__git_aliases_and_commands' && ret=0
+ ': :__git_aliases_and_commands'
}
(( $+functions[_git-instaweb] )) ||
_git-instaweb () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -w -C -S -s \
@@ -2903,6 +2953,8 @@ _git-instaweb () {
_describe -t commands command commands && ret=0
;;
esac
+
+ return ret
}
(( $+functions[_git-merge-tree] )) ||
@@ -2910,12 +2962,12 @@ _git-merge-tree () {
_arguments \
':base-tree:__git_tree_ishs' \
':branch 1:__git_tree_ishs' \
- ':branch 2:__git_tree_ishs' && ret=0
+ ':branch 2:__git_tree_ishs'
}
(( $+functions[_git-rerere] )) ||
_git-rerere () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
# TODO: --rerere-autoupdate is undocumented.
@@ -2934,6 +2986,8 @@ _git-rerere () {
'gc[prune old records of conflicted merges]' && ret=0
;;
esac
+
+ return ret
}
(( $+functions[_git-rev-parse] )) ||
@@ -2951,6 +3005,8 @@ _git-rev-parse () {
quiet_opts=({-q,--quiet}'[do not output error messages]')
fi
+ local ret=0
+
if (( words[(I)--parseopt] )); then
if (( words[(I)--] )); then
_message 'argument'
@@ -3001,11 +3057,13 @@ _git-rev-parse () {
'(--until --before)'{--until=-,--before=-}'[show --min-age= parameter corresponding given date string]:datestring' \
'*: :__git_objects' && ret=0
fi
+
+ return ret
}
(( $+functions[_git-show-branch] )) ||
_git-show-branch () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -w -C -S -s -A '-*' \
@@ -3041,6 +3099,8 @@ _git-show-branch () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-verify-tag] )) ||
@@ -3048,7 +3108,7 @@ _git-verify-tag () {
# TODO: -v and --verbose are undocumented.
_arguments -w -S -s \
'(-v --verbose)'{-v,--verbose}'[output additional information]' \
- '*: :__git_tags' && ret=0
+ '*: :__git_tags'
}
(( $+functions[_git-whatchanged] )) ||
@@ -3059,7 +3119,7 @@ _git-whatchanged () {
_arguments -S \
$revision_options \
'1:: :__git_commits' \
- '*: :__git_cached_files' && ret=0
+ '*: :__git_cached_files'
}
# Interacting With Others
@@ -3077,7 +3137,7 @@ _git-archimport () {
'-D[attempt to import trees that have been merged from]: :__git_guard_number depth' \
'-a[auto-register archives at http://mirrors.sourcecontrol.net]' \
'-t[use given directory as temporary directory]: :_directories' \
- '*:archive/branch' && ret=0
+ '*:archive/branch'
}
(( $+functions[_git-cvsexportcommit] )) ||
@@ -3098,7 +3158,7 @@ _git-cvsexportcommit () {
'-v[verbose output]' \
'-h[display usage]' \
':: :__git_commits' \
- ': :__git_commits' && ret=0
+ ': :__git_commits'
}
(( $+functions[_git-cvsimport] )) ||
@@ -3125,7 +3185,7 @@ _git-cvsimport () {
'-A[specify author-conversion file]:author-conversion file:_files' \
'-R[generate cvs-revisions file mapping CVS revision numbers to commit IDs]' \
'-h[display usage information]' \
- ':cvsmodule' && ret=0
+ ':cvsmodule'
}
(( $+functions[_git-cvsserver] )) ||
@@ -3137,7 +3197,7 @@ _git-cvsserver () {
'(- * -V --version)'{-V,--version}'[display version information]' \
'(- * -h --help)'{-h,-H,--help}'[display usage information]' \
'::type:(pserver server)' \
- '*: :_directories' && ret=0
+ '*: :_directories'
}
(( $+functions[_git-imap-send] )) ||
@@ -3150,7 +3210,7 @@ _git-quiltimport () {
_arguments -S \
'(-n --dry-run)'{-n,--dry-run}'[check patches and warn if they cannot be imported]' \
'--author[default author name and email address to use for patches]: :_email_addresses' \
- '--patches[set directory containing patches]:patch directory:_directories' && ret=0
+ '--patches[set directory containing patches]:patch directory:_directories'
}
(( $+functions[_git-request-pull] )) ||
@@ -3200,12 +3260,12 @@ _git-send-email () {
'( --no-validate)--validate[perform sanity checks on patches]' \
'(--validate )--validate[do not perform sanity checks on patches]' \
'--force[send emails even if safetiy checks would prevent it]' \
- '*: :_files' && ret=0
+ '*: :_files'
}
(( $+functions[_git-svn] )) ||
_git-svn () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -C \
@@ -3448,6 +3508,8 @@ _git-svn () {
esac
;;
esac
+
+ return ret
}
# LOW-LEVEL COMMANDS (PLUMBING)
@@ -3478,7 +3540,7 @@ _git-apply () {
'--inaccurate-eof[work around missing-new-line-at-EOF bugs]' \
'(-v --verbose)'{-v,--verbose}'[display progress on stderr]' \
'--recount[do not trust line counts in hunk headers]' \
- '*:patch:_files' && ret=0
+ '*:patch:_files'
}
(( $+functions[_git-checkout-index] )) ||
@@ -3500,7 +3562,7 @@ _git-checkout-index () {
'--temp[write content to temporary files]' \
'(-a --all *)--stdin[read list of paths from the standard input]' \
$z_opt \
- '*: :__git_cached_files' && ret=0
+ '*: :__git_cached_files'
}
(( $+functions[_git-commit-tree] )) ||
@@ -3508,11 +3570,11 @@ _git-commit-tree () {
if (( CURRENT == 2 )); then
_arguments \
'-h[display usage]' \
- ': :__git_trees' && ret=0
+ ': :__git_trees'
elif [[ $words[CURRENT-1] == -p ]]; then
local expl
_description commits expl 'parent commit'
- __git_objects $expl && ret=0
+ __git_objects $expl
else
compadd - '-p'
fi
@@ -3530,7 +3592,7 @@ _git-hash-object () {
'(: --stdin --path)--stdin-paths[read file names from standard input instead of from command line]' \
'( --no-filters)--path=[hash object as if it were located at given path]: :_files' \
'(--path )--no-filters[hash contents as is, ignoring any input filters]' \
- '(--stdin --stdin-paths):file:_files' && ret=0
+ '(--stdin --stdin-paths):file:_files'
}
(( $+functions[_git-index-pack] )) ||
@@ -3551,7 +3613,7 @@ _git-index-pack () {
'--stdin[read pack from stdin and instead write to specified file]' \
$stdin_opts \
'--strict[die if the pack contains broken objects or links]' \
- ':pack file:_files -g "*.pack"' && ret=0
+ ':pack file:_files -g "*.pack"'
}
(( $+functions[_git-merge-file] )) ||
@@ -3580,7 +3642,7 @@ _git-merge-file () {
'--diff3[undocumented]' \
':current file:_files' \
':base file:_files' \
- ':other file:_files' && ret=0
+ ':other file:_files'
}
(( $+functions[_git-merge-index] )) ||
@@ -3588,7 +3650,7 @@ _git-merge-index () {
if (( CURRENT > 2 )) && [[ $words[CURRENT-1] != -[oq] ]]; then
_arguments -S \
'(:)-a[run merge against all files in index that need merging]' \
- '*: :__git_cached_files' && ret=0
+ '*: :__git_cached_files'
else
declare -a arguments
@@ -3596,7 +3658,7 @@ _git-merge-index () {
(( CURRENT == 2 || CURRENT == 3 )) && arguments+='(-o)-q[do not complain about failed merges]'
(( 2 <= CURRENT && CURRENT <= 4 )) && arguments+='*:merge program:_files -g "*(*)"'
- _arguments -S $arguments && ret=0
+ _arguments -S $arguments
fi
}
@@ -3610,7 +3672,7 @@ _git-mktree () {
_arguments -w -S -s \
'-z[read NUL-terminated ls-tree -z output]' \
'--missing[allow missing objects]' \
- '--batch[allow creation of more than one tree]' && ret=0
+ '--batch[allow creation of more than one tree]'
}
(( $+functions[_git-pack-objects] )) ||
@@ -3652,14 +3714,14 @@ _git-pack-objects () {
'--keep-true-parents[pack parents hidden by grafts]' \
'( --unpack-unreachable)--keep-unreachable[undocumented]' \
'(--keep-unreachable )--unpack-unreachable[undocumented]' \
- ':base-name:_files' && ret=0
+ ':base-name:_files'
}
(( $+functions[_git-prune-packed] )) ||
_git-prune-packed () {
_arguments -w -S -s \
'(-n --dry-run)'{-n,--dry-run}'[only list objects that would be removed]' \
- '(-q --quiet)'{-q,--quiet}'[do not display progress on standard error]' && ret=0
+ '(-q --quiet)'{-q,--quiet}'[do not display progress on standard error]'
}
(( $+functions[_git-read-tree] )) ||
@@ -3698,7 +3760,7 @@ _git-read-tree () {
'--no-sparse-checkout[display sparse checkout support]' \
'1:first tree-ish to be read/merged:__git_tree_ishs' \
'2::second tree-ish to be read/merged:__git_tree_ishs' \
- '3::third tree-ish to be read/merged:__git_tree_ishs' && ret=0
+ '3::third tree-ish to be read/merged:__git_tree_ishs'
}
(( $+functions[_git-symbolic-ref] )) ||
@@ -3707,7 +3769,7 @@ _git-symbolic-ref () {
'(-q --quiet)'{-q,--quiet}'[do not issue error if specified name is not a symbolic ref]' \
'-m[update reflog for specified name with specied reason]:reason for update' \
':symbolic reference:__git_heads' \
- ':: :__git_references' && ret=0
+ ':: :__git_references'
}
(( $+functions[_git-unpack-objects] )) ||
@@ -3716,7 +3778,7 @@ _git-unpack-objects () {
'-n[only list the objects that would be unpacked]' \
'-q[run quietly]' \
'-r[try recovering objects from corrupt packs]' \
- '--strict[do not write objects with broken content or links]' && ret=0
+ '--strict[do not write objects with broken content or links]'
}
(( $+functions[_git-update-index] )) ||
@@ -3754,7 +3816,7 @@ _git-update-index () {
'(: -)--stdin[read list of paths from standard input]' \
'--verbose[report what is being added and removed from the index]' \
$z_opt \
- '*:: :_files' && ret=0
+ '*:: :_files'
}
(( $+functions[_git-update-ref] )) ||
@@ -3765,7 +3827,7 @@ _git-update-ref () {
'--no-deref[overwrite ref itself, not what it points to]' \
':symbolic reference:__git_revisions' \
':new reference:__git_revisions' \
- '::old reference:__git_revisions' && ret=0
+ '::old reference:__git_revisions'
}
(( $+functions[_git-write-tree] )) ||
@@ -3773,7 +3835,7 @@ _git-write-tree () {
# NOTE: --ignore-cache-tree is only used for debugging.
_arguments -w -S -s \
'--missing-ok[ignore objects in index that are missing in object database]' \
- '--prefix=[write tree representing given sub-directory]:sub-directory:_directories -r ""' && ret=0
+ '--prefix=[write tree representing given sub-directory]:sub-directory:_directories -r ""'
}
# Interrogation commands
@@ -3789,7 +3851,7 @@ _git-cat-file () {
'(- :)--batch[print SHA1, type, size, and contents of each object provided on stdin]' \
'(- :)--batch-check[print SHA1, type, and size of each object provided on stdin]' \
'(-):object type:(blob commit tag tree)' \
- ': :__git_objects' && ret=0
+ ': :__git_objects'
}
(( $+functions[_git-diff-files] )) ||
@@ -3801,7 +3863,7 @@ _git-diff-files () {
$revision_options \
': :__git_changed-in-working-tree_files' \
': :__git_changed-in-working-tree_files' \
- '*: :__git_changed-in-working-tree_files' && ret=0
+ '*: :__git_changed-in-working-tree_files'
}
(( $+functions[_git-diff-index] )) ||
@@ -3818,12 +3880,12 @@ _git-diff-index () {
'--cached[do not consider the work tree at all]' \
'-m[flag non-checked-out files as up-to-date]' \
': :__git_tree_ishs' \
- '*: :__git_cached_files' && ret=0
+ '*: :__git_cached_files'
}
(( $+functions[_git-diff-tree] )) ||
_git-diff-tree () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
declare -a revision_options
@@ -3868,6 +3930,8 @@ _git-diff-tree () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-for-each-ref] )) ||
@@ -3883,7 +3947,7 @@ _git-for-each-ref () {
'(-s --shell -p --perl --python --tcl)'{-p,--perl}'[use string literals suitable for Perl]' \
'(-s --shell -p --perl --tcl)'--python'[use string literals suitable for Python]' \
'(-s --shell -p --perl --python )'--tcl'[use string literals suitable for Tcl]' \
- ':: :_guard "([^-]?#|)" pattern' && ret=0
+ ':: :_guard "([^-]?#|)" pattern'
}
(( $+functions[_git-ls-files] )) ||
@@ -3918,7 +3982,7 @@ _git-ls-files () {
'-v[identify each files status (hmrck?)]' \
'--full-name[force paths to be output relative to the project top directory]' \
'--abbrev=[set minimum SHA1 display-length]: :__git_guard_number length' \
- '*:: :_files' && ret=0
+ '*:: :_files'
}
(( $+functions[_git-ls-remote] )) ||
@@ -3929,12 +3993,12 @@ _git-ls-remote () {
'(-t --tags)'{-t,--tags}'[show only refs under refs/tags]' \
'(-u --upload-pack)'{-u,--upload-pack=-}'[specify path to git-upload-pack on remote side]:remote path' \
': :__git_any_repositories' \
- '*: :__git_references' && ret=0
+ '*: :__git_references'
}
(( $+functions[_git-ls-tree] )) ||
_git-ls-tree () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -w -C -S -s \
@@ -3955,6 +4019,8 @@ _git-ls-tree () {
__git_ignore_line __git_tree_files ${PREFIX:-.} $line[1] && ret=0
;;
esac
+
+ return ret
}
(( $+functions[_git-merge-base] )) ||
@@ -3964,7 +4030,7 @@ _git-merge-base () {
'--octopus[compute best common ancestors of all supplied commits]' \
'(-)--independent[display minimal subset of supplied commits with same ancestors]' \
': :__git_commits' \
- '*: :__git_commits' && ret=0
+ '*: :__git_commits'
}
(( $+functions[_git-name-rev] )) ||
@@ -3977,7 +4043,7 @@ _git-name-rev () {
'--name-only[display only name of commits]' \
'--no-undefined[die with non-zero return when a reference is undefined]' \
'--always[show uniquely abbreviated commit object as fallback]' \
- '(--stdin --all)*: :__git_commits' && ret=0
+ '(--stdin --all)*: :__git_commits'
}
(( $+functions[_git-pack-redundant] )) ||
@@ -3986,12 +4052,12 @@ _git-pack-redundant () {
'(:)--all[process all packs]' \
'--alt-odb[do not require objects to be present in local packs]' \
'--verbose[output some statistics to standard error]' \
- '(--all)*::packs:_files -g "*.pack"' && ret=0
+ '(--all)*::packs:_files -g "*.pack"'
}
(( $+functions[_git-rev-list] )) ||
_git-rev-list () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
declare -a revision_options
@@ -4018,6 +4084,8 @@ _git-rev-list () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-show-index] )) ||
@@ -4039,14 +4107,14 @@ _git-show-ref () {
'(-q --quiet)'{-q,--quiet}'[do not print any results]' \
'*: :_guard "([^-]?#|)" pattern' \
- exclude \
- '--exclude-existing=-[filter out existing refs from stdin]:: :_guard "([^-]?#|)" pattern' && ret=0
+ '--exclude-existing=-[filter out existing refs from stdin]:: :_guard "([^-]?#|)" pattern'
}
(( $+functions[_git-unpack-file] )) ||
_git-unpack-file () {
_arguments -A '-*' \
'(:)-h[display usage information]' \
- '(-): :__git_blobs' && ret=0
+ '(-): :__git_blobs'
}
(( $+functions[_git-var] )) ||
@@ -4056,7 +4124,7 @@ _git-var () {
'(-):variable:((GIT_AUTHOR_IDENT\:"name and email of author" \
GIT_COMMITTER_IDENT\:"name and email of committer" \
GIT_EDITOR\:"text editor used by git commands" \
- GIT_PAGER\:"text viewer used by git commands"))' && ret=0
+ GIT_PAGER\:"text viewer used by git commands"))'
}
(( $+functions[_git-verify-pack] )) ||
@@ -4064,7 +4132,7 @@ _git-verify-pack () {
_arguments -w -S -s \
'(-v --verbose)'{-v,--verbose}'[show objects contained in pack]' \
'(-s --stat-only)'{-s,--stat-only}'[do not verify pack contents; only display histogram of delta chain length]' \
- '*:index file:_files -g "*.idx"' && ret=0
+ '*:index file:_files -g "*.idx"'
}
# Synching Repositories
@@ -4098,7 +4166,7 @@ _git-daemon () {
'--disable=-[disable site-wide service]: :__git_daemon_service' \
'--allow-override[allow overriding site-wide service]: :__git_daemon_service' \
'--forbid-override[forbid overriding site-wide service]: :__git_daemon_service' \
- '*:repository:_directories' && ret=0
+ '*:repository:_directories'
}
(( $+functions[_git-fetch-pack] )) ||
@@ -4115,7 +4183,7 @@ _git-fetch-pack () {
'--no-progress[do not display progress]' \
'-v[produce verbose output]' \
': :__git_any_repositories' \
- '*: :__git_references' && ret=0
+ '*: :__git_references'
}
(( $+functions[_git-http-backend] )) ||
@@ -4139,13 +4207,13 @@ _git-send-pack () {
'--stateless-rpc[undocumented]' \
'--helper-status[undocumented]' \
': :__git_any_repositories' \
- '*: :__git_remote_references' && ret=0
+ '*: :__git_remote_references'
}
(( $+functions[_git-update-server-info] )) ||
_git-update-server-info () {
_arguments -w -S -s \
- '(-f --force)'{-f,--force}'[update the info files from scratch]' && ret=0
+ '(-f --force)'{-f,--force}'[update the info files from scratch]'
}
(( $+functions[_git-http-fetch] )) ||
@@ -4159,7 +4227,7 @@ _git-http-fetch () {
'--recover[recover from a failed fetch]' \
'(1)--stdin[read commit ids and refs from standard input]' \
': :__git_commits' \
- ': :_urls' && ret=0
+ ': :_urls'
}
(( $+functions[_git-http-push] )) ||
@@ -4172,7 +4240,7 @@ _git-http-push () {
'( -D)-d[remove refs from remote repository]' \
'(-d )-D[forcefully remove refs from remote repository]' \
': :_urls' \
- '*: :__git_remote_references' && ret=0
+ '*: :__git_remote_references'
}
# NOTE: git-parse-remote isn’t a user command.
@@ -4184,12 +4252,12 @@ _git-receive-pack () {
_arguments -A '-*' \
'--advertise-refs[undocumented]' \
'--stateless-rpc[undocumented]' \
- ':directory to sync into:_directories' && ret=0
+ ':directory to sync into:_directories'
}
(( $+functions[_git-shell] )) ||
_git-shell () {
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
_arguments -C \
@@ -4227,13 +4295,15 @@ _git-shell () {
esac
;;
esac
+
+ return ret
}
(( $+functions[_git-upload-archive] )) ||
_git-upload-archive () {
_arguments \
- ':directory to get tar archive from:_directories' && ret=0
+ ':directory to get tar archive from:_directories'
}
(( $+functions[_git-upload-pack] )) ||
@@ -4245,7 +4315,7 @@ _git-upload-pack () {
'--timeout=-[interrupt transfer after given number of seconds of inactivity]: :__git_guard_number "inactivity timeout"' \
'--advertise-refs[undocumented]' \
'--stateless-rpc[undocumented]' \
- ': :_directories' && ret=0
+ ': :_directories'
}
# Internal Helper Commands
@@ -4254,7 +4324,7 @@ _git-upload-pack () {
_git-check-attr () {
local z_opt=
- local curcontext=$curcontext state line
+ local curcontext=$curcontext state line ret=1
declare -A opt_args
if (( words[(I)--stdin] )); then
@@ -4290,6 +4360,8 @@ _git-check-attr () {
fi
;;
esac
+
+ return ret
}
(( $+functions[_git-check-ref-format] )) ||
@@ -4298,7 +4370,7 @@ _git-check-ref-format () {
'-h[display usage information]' \
'--print[display canonicalized name of hypothetical reference of given name]' \
'--branch[expand previous branch syntax]' \
- ': :__git_references' && ret=0
+ ': :__git_references'
}
(( $+functions[_git-fmt-merge-msg] )) ||
@@ -4307,7 +4379,7 @@ _git-fmt-merge-msg () {
'( --no-log)--log[display one-line descriptions from actual commits being merged]' \
'(--log )--no-log[do not display one-line descriptions from actual commits being merged]' \
'(-m --message)'{-m+,--message=}'[use given message instead of branch names for first line in log message]:message' \
- '(-F --file)'{-F,--file}'[specify list of merged objects from file]: :_files' && ret=0
+ '(-F --file)'{-F,--file}'[specify list of merged objects from file]: :_files'
}
(( $+functions[_git-mailinfo] )) ||
@@ -4322,7 +4394,7 @@ _git-mailinfo () {
'(--scissors )--no-scissors[do not remove everything in body before a scissors line]' \
'--no-inbody-headers[undocumented]' \
':message file:_files' \
- ':patch file:_files' && ret=0
+ ':patch file:_files'
}
(( $+functions[_git-mailsplit] )) ||
@@ -4333,7 +4405,7 @@ _git-mailsplit () {
'-d-[specify number of leading zeros]: :__git_guard_number precision' \
'-f-[skip the first N numbers]: :__git_guard_number' \
'--keep-cr[do not remove CR from lines ending with CR+LF]' \
- '*::mbox file:_files' && ret=0
+ '*::mbox file:_files'
}
(( $+functions[_git-merge-one-file] )) ||
@@ -4351,7 +4423,7 @@ _git-patch-id () {
(( $+functions[_git-stripspace] )) ||
_git-stripspace () {
_arguments \
- '(-s --strip-comments)'{-s,--strip-comments}'[also strip lines starting with #]' && ret=0
+ '(-s --strip-comments)'{-s,--strip-comments}'[also strip lines starting with #]'
}
# INTERNAL GIT COMPLETION FUNCTIONS
@@ -4602,6 +4674,7 @@ _git_commands () {
stripspace:'filter out empty lines')
integer ret=1
+
# TODO: Is this the correct way of doing it?
# TODO: Should we be chaining them together with || instead?
_describe -t main-porcelain-commands 'main porcelain command' main_porcelain_commands && ret=0
@@ -4613,15 +4686,18 @@ _git_commands () {
_describe -t plumbing-sync-commands 'plumbing sync command' plumbing_sync_commands && ret=0
_describe -t plumbing-sync-helper-commands 'plumbing sync helper command' plumbing_sync_helper_commands && ret=0
_describe -t plumbing-internal-helper-commands 'plumbing internal helper command' plumbing_internal_helper_commands && ret=0
+
local -a addons
local a
for a in $_git_third_party; do
(( ${+commands[git-${a%%:*}]} )) && addons+=( $a )
done
_describe -t third-party-addons 'third party addon' addons && ret=0
+
local -a user_commands
zstyle -a ":completion:${curcontext}:" user-commands user_commands || user_commands=()
_describe -t user-specific-commands 'user specific command' user_commands && ret=0
+
return ret
}
@@ -4640,6 +4716,7 @@ __git_aliases_and_commands () {
'aliases::__git_aliases' \
'commands::_git_commands'
}
+
(( $+functions[__git_date_formats] )) ||
__git_date_formats () {
declare -a date_formats
@@ -4670,7 +4747,7 @@ __git_merge_strategies () {
local -a merge_strategies
merge_strategies=(${=${${(M)${(f)"$(_call_program merge-strategies "git merge -s '' 2>&1")"}:#[Aa]vailable (custom )#strategies are: *}#[Aa]vailable (custom )#strategies are: }%.})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted merge-strategies expl 'merge strategy' compadd $* - $merge_strategies
}
@@ -4834,7 +4911,7 @@ __git_reflog_entries () {
declare -a reflog_entries
reflog_entries=(${${${(f)"$(_call_program reflog-entries git reflog 2>/dev/null)"}#* }%%:*})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
if compset -P '*@'; then
reflog_entries=(${${(M)reflog_entries:#$IPREFIX*}#$IPREFIX})
@@ -4895,7 +4972,7 @@ __git_stashes () {
declare -a stashes
stashes=(${${(f)"$(_call_program stashes git stash list 2>/dev/null)"}/: */})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted stashes expl stash compadd $* - $stashes
}
@@ -4934,7 +5011,7 @@ __git_branch_names () {
declare -a branch_names
branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted branch-names expl branch-name compadd $* - $branch_names
}
@@ -4945,7 +5022,7 @@ __git_remote_branch_names () {
declare -a branch_names
branch_names=(${${(f)"$(_call_program remote-branch-refs git for-each-ref --format='"%(refname)"' refs/remotes 2>/dev/null)"}#refs/remotes/})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted remote-branch-names expl 'remote branch name' compadd $* - $branch_names
}
@@ -5065,7 +5142,7 @@ __git_submodules () {
declare -a submodules
submodules=(${${(f)"$(_call_program submodules git submodule 2>/dev/null)"}#* })
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted submodules expl submodule compadd $* - $submodules
}
@@ -5078,7 +5155,7 @@ __git_tags () {
declare -a tags
tags=(${${(f)"$(_call_program tagrefs git for-each-ref --format='"%(refname)"' refs/tags 2>/dev/null)"}#refs/tags/})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted tags expl tag compadd $* - $tags
}
@@ -5101,15 +5178,11 @@ __git_tags_of_type () {
type=$1; shift
tags=(${${(M)${(f)"$(_call_program $type-tag-refs "git for-each-ref --format='%(*objecttype)%(objecttype) %(refname)' refs/tags 2>/dev/null")"}:#$type(tag|) *}#$type(tag|) refs/tags/})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted $type-tags expl "$type tag" compadd $* - $tags
}
-(( $+functions[__git_tag_ids] )) ||
-__git_tag_ids () {
-}
-
# Reference Argument Types
(( $+functions[__git_references] )) ||
@@ -5126,7 +5199,7 @@ __git_references () {
# TODO: deal with GIT_DIR
if [[ $_git_refs_cache_pwd != $PWD ]]; then
_git_refs_cache=(${${${(f)"$(_call_program references git ls-remote ./. 2>/dev/null)"}#*$'\t'}#refs/(heads|tags)/})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_git_refs_cache_pwd=$PWD
fi
@@ -5139,7 +5212,7 @@ __git_local_references () {
if [[ $_git_local_refs_cache_pwd != $PWD ]]; then
_git_local_refs_cache=(${${${(f)"$(_call_program references git ls-remote ./. 2>/dev/null)"}#*$'\t'}#refs/})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_git_local_refs_cache_pwd=$PWD
fi
@@ -5156,7 +5229,7 @@ __git_local_references () {
local references expl
references=(${${(M)${${(f)"$(_call_program references git ls-remote ./. 2>/dev/null)"}#*$'\t'}:#refs/notes/*}#refs/notes/})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted references expl reference compadd - $references
}
@@ -5166,9 +5239,9 @@ __git_notes_refs () {
declare -a notes_refs
notes_refs=(${${(f)"$(_call_program notes-refs git for-each-ref --format='"%(refname)"' refs/notes 2>/dev/null)"}#$type refs/notes/})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
- _wanted notes-refs expl "notes ref" compadd $* - $notes_refs
+ _wanted notes-refs expl 'notes ref' compadd $* - $notes_refs
}
# File Argument Types
@@ -5178,7 +5251,7 @@ __git_files_relative () {
local files file f_parts prefix p_parts tmp
prefix=$(_call_program gitprefix git rev-parse --show-prefix 2>/dev/null)
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
if (( $#prefix == 0 )); then
print $1
@@ -5215,10 +5288,10 @@ __git_files () {
tag=$1 description=$2; shift 2
gitcdup=$(_call_program gitcdup git rev-parse --show-cdup 2>/dev/null)
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
gitprefix=$(_call_program gitprefix git rev-parse --show-prefix 2>/dev/null)
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
# TODO: --directory should probably be added to $opts when --others is given.
@@ -5274,9 +5347,9 @@ __git_changed-in-index_files () {
local files expl
files=$(_call_program files git diff-index -z --name-only --no-color --cached HEAD 2>/dev/null)
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
files=(${(0)"$(__git_files_relative $files)"})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted changed-in-index-files expl 'changed in index file' _multi_parts $@ - / files
}
@@ -5286,9 +5359,9 @@ __git_changed-in-working-tree_files () {
local files expl
files=$(_call_program changed-in-working-tree-files git diff -z --name-only --no-color 2>/dev/null)
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
files=(${(0)"$(__git_files_relative $files)"})
- __git_command_successful $pipestatus || return
+ __git_command_successful $pipestatus || return 1
_wanted changed-in-working-tree-files expl 'changed in working tree file' _multi_parts $@ -f - / files
}
@@ -5429,7 +5502,7 @@ __git_guard_branch-name () {
__git_guard_diff-stat-width () {
if [[ $PREFIX == *,* ]]; then
compset -P '*,'
- __git_guard_number "filename width"
+ __git_guard_number 'filename width'
else
compset -S ',*'
__git_guard_number width
@@ -5442,7 +5515,7 @@ __git_guard_number () {
zparseopts -K -D -A opts M: J: V: 1 2 n F: X:
- _guard "[[:digit:]]#" ${1:-number}
+ _guard '[[:digit:]]#' ${1:-number}
}
(( $+functions[__git_guard_bytes] )) ||
@@ -5453,17 +5526,17 @@ __git_guard_bytes () {
(( $+functions[__git_datetimes] )) ||
__git_datetimes () {
# TODO: Use this in more places.
- _guard "*" 'time specification'
+ _guard '*' 'time specification'
}
(( $+functions[__git_stages] )) ||
__git_stages () {
- __git_guard $* "[[:digit:]]#" 'stage'
+ __git_guard $* '[[:digit:]]#' 'stage'
}
(( $+functions[__git_svn_revision_numbers] )) ||
__git_svn_revision_numbers () {
- __git_guard_number "revision number"
+ __git_guard_number 'revision number'
}
# _arguments Helpers
@@ -6014,7 +6087,8 @@ _git() {
unset git_aliases aliases
fi
- local ret=1
+ integer ret=1
+
if [[ $service == git ]]; then
local curcontext=$curcontext state line
declare -A opt_args
@@ -6035,6 +6109,7 @@ _git() {
'--no-replace-objects[do not use replacement refs to replace git objects]' \
'(-): :->command' \
'(-)*:: :->option-or-argument' && return
+
case $state in
(command)
__git_aliases_and_commands && ret=0
@@ -6043,18 +6118,18 @@ _git() {
curcontext=${curcontext%:*:*}:git-$words[1]:
if (( ${+functions[_git-$words[1]]} )); then
- _git-$words[1]
+ _call_function ret _git-$words[1]
elif zstyle -T ":completion:${curcontext}:" use-fallback; then
- _path_files
- ret=$?
+ _path_files && ret=0
else
- _message 'Unknown sub-command'
+ _message 'unknown sub-command'
fi
;;
esac
else
_call_function ret _$service
fi
+
return ret
}