summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command/_hg
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_hg')
-rw-r--r--Completion/Unix/Command/_hg395
1 files changed, 245 insertions, 150 deletions
diff --git a/Completion/Unix/Command/_hg b/Completion/Unix/Command/_hg
index 8eaa457c8..4b88ce4ea 100644
--- a/Completion/Unix/Command/_hg
+++ b/Completion/Unix/Command/_hg
@@ -82,7 +82,7 @@ _hg() {
if [[ -z "$cmd" ]]
then
- _arguments -s -w : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
':mercurial command:_hg_commands'
return
fi
@@ -119,7 +119,7 @@ _hg() {
_hg_cmd_${cmd}
else
# complete unknown commands normally
- _arguments -s -w : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'*:files:_hg_files'
fi
}
@@ -282,6 +282,18 @@ _hg_config() {
(( $#items )) && _describe -t config 'config item' items
}
+_hg_internal_merge_tools=(
+ \\:dump \\:fail \\:local \\:merge \\:merge-local \\:merge-other \\:merge3
+ \\:other \\:prompt \\:tagmerge \\:union
+)
+
+_hg_merge_tools() {
+ typeset -a external_tools
+ _describe -t internal_tools 'internal merge tools' _hg_internal_merge_tools
+ external_tools=(${(f)"$(_hg_cmd showconfig merge-tools | cut -d . -f 2)"})
+ (( $#external_tools )) && _describe -t external_tools 'external merge tools' external_tools
+}
+
_hg_addremove() {
_alternative 'files:unknown files:_hg_unknown' \
'files:missing files:_hg_missing'
@@ -359,22 +371,22 @@ _hg_clone_dest() {
# Common options
_hg_global_opts=(
- '(--repository -R)'{-R+,--repository=}'[repository root directory]:repository:_files -/'
- '--cwd[change working directory]:new working directory:_files -/'
- '(--noninteractive -y)'{-y,--noninteractive}'[do not prompt, assume yes for any required answers]'
+ '(--repository -R)'{-R+,--repository=}'[repository root directory or name of overlay bundle file]:repository:_files -/'
+ '--cwd=[change working directory]:new working directory:_files -/'
+ '(--noninteractive -y)'{-y,--noninteractive}'[do not prompt, automatically pick the first choice for all prompts]'
'(--verbose -v)'{-v,--verbose}'[enable additional output]'
'*--config[set/override config option]:defined config items:_hg_config'
'(--quiet -q)'{-q,--quiet}'[suppress output]'
'(--help -h)'{-h,--help}'[display help and exit]'
- '--debug[debug mode]'
+ '--debug[enable debugging output]'
'--debugger[start debugger]'
- '--encoding[set the charset encoding (default: UTF8)]'
- '--encodingmode[set the charset encoding mode (default: strict)]'
- '--lsprof[print improved command execution profile]'
- '--traceback[print traceback on exception]'
+ '--encoding=[set the charset encoding]:encoding'
+ '--encodingmode=[set the charset encoding mode]:encoding mode'
+ '--traceback[always print a traceback on exception]'
'--time[time how long the command takes]'
- '--profile[profile]'
+ '--profile[print command execution profile]'
'--version[output version information and exit]'
+ '--hidden[consider hidden changesets]'
)
_hg_pat_opts=(
@@ -384,14 +396,19 @@ _hg_pat_opts=(
_hg_diff_opts=(
'(--text -a)'{-a,--text}'[treat all files as text]'
'(--git -g)'{-g,--git}'[use git extended diff format]'
- "--nodates[don't include dates in diff headers]")
+ '--nodates[omit dates from diff headers]'
+)
+
+_hg_mergetool_opts=(
+ '(--tool -t)'{-t+,--tool=}'[specify merge tool]:merge tool:_hg_merge_tools'
+)
_hg_dryrun_opts=(
'(--dry-run -n)'{-n,--dry-run}'[do not perform actions, just print output]')
-_hg_style_opts=(
- '--style[display using template map file]:'
- '--template[display with template]:')
+_hg_template_opts=(
+ '--template[display with template]:template'
+)
_hg_commit_opts=(
'(-m --message -l --logfile --edit -e)'{-e,--edit}'[edit commit message]'
@@ -399,8 +416,14 @@ _hg_commit_opts=(
'(-e --edit -m --message --logfile -l)'{-l+,--logfile=}'[read the commit message from <file>]:log file:_files')
_hg_remote_opts=(
- '(--ssh -e)'{-e+,--ssh=}'[specify ssh command to use]:'
- '--remotecmd[specify hg command to run on the remote side]:')
+ '(--ssh -e)'{-e+,--ssh=}'[specify ssh command to use]:command'
+ '--remotecmd=[specify hg command to run on the remote side]:remote command'
+ '--insecure[do not verify server certificate (ignoring web.cacerts config)]'
+)
+
+_hg_subrepos_opts=(
+ '(--subrepos -S)'{-S,--subrepos}'[recurse into subrepositories]'
+)
_hg_cmd() {
_call_program hg hg --config ui.verbose=0 --config defaults."$1"= \
@@ -408,51 +431,54 @@ _hg_cmd() {
}
_hg_cmd_add() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts $_hg_subrepos_opts \
'*:unknown files:_hg_unknown'
}
_hg_cmd_addremove() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
- '(--similarity -s)'{-s+,--similarity=}'[guess renamed files by similarity (0<=s<=100)]:' \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts $_hg_subrepos_opts \
+ '(--similarity -s)'{-s+,--similarity=}'[guess renamed files by similarity (0<=s<=100)]:similarity' \
'*:unknown or missing files:_hg_addremove'
}
_hg_cmd_annotate() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts \
'(--rev -r)'{-r+,--rev=}'[annotate the specified revision]:revision:_hg_tags' \
- '(--follow -f)'{-f,--follow}'[follow file copies and renames]' \
+ "--no-follow[don't follow copies and renames]" \
'(--text -a)'{-a,--text}'[treat all files as text]' \
- '(--user -u)'{-u,--user}'[list the author]' \
- '(--date -d)'{-d,--date}'[list the date]' \
+ '(--user -u)'{-u,--user}'[list the author (long with -v)]' \
+ '(--file -f)'{-f,--file}'[list the filename]' \
+ '(--date -d)'{-d,--date}'[list the date (short with -q)]' \
'(--number -n)'{-n,--number}'[list the revision number (default)]' \
'(--changeset -c)'{-c,--changeset}'[list the changeset]' \
+ '(--line-number -l)'{-l,--line-number}'[show line number at the first appearance]' \
'*:files:_hg_files'
}
_hg_cmd_archive() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_subrepos_opts \
'--no-decode[do not pass files through decoders]' \
- '(--prefix -p)'{-p+,--prefix=}'[directory prefix for files in archive]:' \
+ '(--prefix -p)'{-p+,--prefix=}'[directory prefix for files in archive]:prefix' \
'(--rev -r)'{-r+,--rev=}'[revision to distribute]:revision:_hg_tags' \
'(--type -t)'{-t+,--type=}'[type of distribution to create]:archive type:(files tar tbz2 tgz uzip zip)' \
'*:destination:_files'
}
_hg_cmd_backout() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_mergetool_opts $_hg_pat_opts \
'--merge[merge with old dirstate parent after backout]' \
- '(--date -d)'{-d+,--date=}'[record datecode as commit date]:date code:' \
+ '(--date -d)'{-d+,--date=}'[record the specified date as commit date]:date' \
'--parent[parent to choose when backing out merge]' \
- '(--user -u)'{-u+,--user=}'[record user as commiter]:user:' \
+ '(--user -u)'{-u+,--user=}'[record the specified user as committer]:user' \
'(--rev -r)'{-r+,--rev=}'[revision]:revision:_hg_tags' \
'(--message -m)'{-m+,--message=}'[specify commit message]:text' \
'(--logfile -l)'{-l+,--logfile=}'[read commit message from specified file]:log file:_files'
}
_hg_cmd_bisect() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(-)'{-r,--reset}'[reset bisect state]' \
+ '(--extend -e)'{-e,--extend}'[extend the bisect range]' \
'(--good -g --bad -b --skip -s --reset -r)'{-g,--good}'[mark changeset good]'::revision:_hg_tags \
'(--good -g --bad -b --skip -s --reset -r)'{-b,--bad}'[mark changeset bad]'::revision:_hg_tags \
'(--good -g --bad -b --skip -s --reset -r)'{-s,--skip}'[skip testing changeset]' \
@@ -461,97 +487,115 @@ _hg_cmd_bisect() {
}
_hg_cmd_bookmarks() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--force -f)'{-f,--force}'[force]' \
- '(--rev -r)'{-r+,--rev=}'[set bookmark at revision]:revision:_hg_tags' \
- '(--delete -d)'{-d,--delete}'[delete a given bookmark]' \
- '(--rename -m)'{-m+,--rename=}'[rename given bookmark]:bookmark:_hg_bookmarks_internal' \
+ '(--rev -r --delete -d --rename -m)'{-r+,--rev=}'[set bookmark at revision]:revision:_hg_tags' \
+ '(--rev -r --delete -d --rename -m)'{-d,--delete}'[delete a given bookmark]' \
+ '(--rev -r --delete -d --rename -m)'{-m+,--rename=}'[rename given bookmark]:bookmark:_hg_bookmarks_internal' \
'(--inactive -i)'{-i,--inactive}'[mark a bookmark inactive]' \
':bookmark:_hg_bookmarks_internal'
}
_hg_cmd_branch() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--force -f)'{-f,--force}'[set branch name even if it shadows an existing branch]' \
'(--clean -C)'{-C,--clean}'[reset branch name to parent branch name]'
}
_hg_cmd_branches() {
- _arguments -s : $_hg_global_opts \
- '(--active -a)'{-a,--active}'[show only branches that have unmerge heads]'
+ _arguments -s -S : $_hg_global_opts \
+ '(--closed -c)'{-c,--closed}'[show normal and closed branches]'
}
_hg_cmd_bundle() {
- _arguments -s : $_hg_global_opts $_hg_remote_opts \
- '(--force -f)'{-f,--force}'[run even when remote repository is unrelated]' \
- '(2)*--base[a base changeset to specify instead of a destination]:revision:_hg_tags' \
+ _arguments -s -S : $_hg_global_opts $_hg_remote_opts \
+ '(--force -f)'{-f,--force}'[run even when the destination is unrelated]' \
+ '(2)*--base[a base changeset assumed to be available at the destination]:revision:_hg_tags' \
+ '*'{-b+,--branch=}'[a specific branch you would like to bundle]:branch:_hg_branches_internal' \
+ '*'{-r+,--rev=}'[a changeset intended to be added to the destination]:revision:_hg_tags' \
+ '--all[bundle all changesets in the repository]' \
+ '--type[bundle compression type to use (default: bzip2)]:bundle type' \
':output file:_files' \
':destination repository:_files -/'
}
_hg_cmd_cat() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
- '(--output -o)'{-o+,--output=}'[print output to file with formatted name]:filespec:' \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts \
+ '(--output -o)'{-o+,--output=}'[print output to file with formatted name]:format string' \
'(--rev -r)'{-r+,--rev=}'[revision]:revision:_hg_tags' \
+ '--decode[apply any matching decode filter]' \
'*:file:_hg_files'
}
_hg_cmd_clone() {
- _arguments -s : $_hg_global_opts $_hg_remote_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_remote_opts \
'(--noupdate -U)'{-U,--noupdate}'[do not update the new working directory]' \
- '(--rev -r)'{-r+,--rev=}'[a changeset you would like to have after cloning]:' \
+ '(--rev -r)'{-r+,--rev=}'[include the specified changeset]:revision' \
'--uncompressed[use uncompressed transfer (fast over LAN)]' \
':source repository:_hg_remote' \
':destination:_hg_clone_dest'
}
_hg_cmd_commit() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_subrepos_opts \
'(--addremove -A)'{-A,--addremove}'[mark new/missing files as added/removed before committing]' \
'(--message -m)'{-m+,--message=}'[specify commit message]:text' \
'(--logfile -l)'{-l+,--logfile=}'[read commit message from specified file]:log file:_files' \
- '(--date -d)'{-d+,--date=}'[record datecode as commit date]:date code:' \
- '(--user -u)'{-u+,--user=}'[record user as commiter]:user:' \
+ '(--date -d)'{-d+,--date=}'[record the specified date as commit date]:date' \
+ '(--user -u)'{-u+,--user=}'[record the specified user as committer]:user' \
+ '--amend[amend the parent of the working directory]' \
+ '--close-branch[mark a branch head as closed]' \
+ '(--interactive -i)'{-i,--interactive}'[use interactive mode]' \
+ '(--secret -s)'{-s,--secret}'[use the secret phase for committing]' \
'*:file:_hg_committable'
}
_hg_cmd_copy() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
'(--after -A)'{-A,--after}'[record a copy that has already occurred]' \
'(--force -f)'{-f,--force}'[forcibly copy over an existing managed file]' \
'*:file:_hg_files'
}
_hg_cmd_diff() {
+ local context state state_descr line ret=1
typeset -A opt_args
- _arguments -s : $_hg_global_opts $_hg_pat_opts $_hg_diff_opts \
+
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_diff_opts $_hg_subrepos_opts \
'*'{-r+,--rev=}'[revision]:revision:_hg_revrange' \
'(--show-function -p)'{-p,--show-function}'[show which function each change is in]' \
'(--ignore-all-space -w)'{-w,--ignore-all-space}'[ignore white space when comparing lines]' \
'(--ignore-space-change -b)'{-b,--ignore-space-change}'[ignore changes in the amount of white space]' \
'(--ignore-blank-lines -B)'{-B,--ignore-blank-lines}'[ignore changes whose lines are all blank]' \
- '*:file:->diff_files'
+ '*:file:->diff_files' && ret=0
if [[ $state == 'diff_files' ]]
then
if [[ -n $opt_args[-r] ]]
then
- _hg_files
+ _hg_files && ret=0
else
- _hg_modified
+ _hg_modified && ret=0
fi
fi
+
+ return ret
}
_hg_cmd_export() {
- _arguments -s : $_hg_global_opts $_hg_diff_opts \
- '(--outout -o)'{-o+,--output}'[print output to file with formatted name]:filespec:' \
+ _arguments -s -S : $_hg_global_opts $_hg_diff_opts \
+ '(--output -o)'{-o+,--output=}'[print output to file with formatted name]:format string' \
'--switch-parent[diff against the second parent]' \
'*:revision:_hg_tags'
}
+_hg_cmd_forget() {
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts \
+ '*:file:_hg_files'
+}
+
_hg_cmd_grep() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts \
'(--print0 -0)'{-0,--print0}'[end filenames with NUL]' \
'--all[print all revisions with matches]' \
'(--follow -f)'{-f,--follow}'[follow changeset or file history]' \
@@ -565,247 +609,296 @@ _hg_cmd_grep() {
}
_hg_cmd_heads() {
- _arguments -s : $_hg_global_opts $_hg_style_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_template_opts \
+ '(--topo -t)'{-t,--topo}'[show topological heads only]' \
+ '(--closed -c)'{-c,--closed}'[show normal and closed branch heads]' \
'(--rev -r)'{-r+,--rev=}'[show only heads which are descendants of rev]:revision:_hg_tags'
}
_hg_cmd_help() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
+ '(--extension -e)'{-e,--extension}'[show only help for extensions]' \
+ '(--command -c)'{-c,--command}'[show only help for commands]' \
+ '(--keyword -k)'{-k,--keyword}'[show topics matching keyword]' \
'*:mercurial command:_hg_commands'
}
_hg_cmd_identify() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--rev -r)'{-r+,--rev=}'[identify the specified rev]:revision:_hg_tags' \
- '(--num -n)'{-n+,--num=}'[show local revision number]' \
- '(--id -i)'{-i+,--id=}'[show global revision id]' \
- '(--branch -b)'{-b+,--branch=}'[show branch]' \
- '(--tags -t)'{-t+,--tags=}'[show tags]'
+ '(--num -n)'{-n,--num}'[show local revision number]' \
+ '(--id -i)'{-i,--id}'[show global revision id]' \
+ '(--branch -b)'{-b,--branch}'[show branch]' \
+ '(--tags -t)'{-t,--tags}'[show tags]' \
+ '(--bookmarks -B)'{-B,--bookmarks}'[show bookmarks]'
}
_hg_cmd_import() {
- _arguments -s : $_hg_global_opts \
- '(--strip -p)'{-p+,--strip=}'[directory strip option for patch (default: 1)]:count:' \
+ _arguments -s -S : $_hg_global_opts \
+ '(--strip -p)'{-p+,--strip=}'[directory strip option for patch (default: 1)]:count' \
'(--message -m)'{-m+,--message=}'[use <text> as commit message]:text:' \
'(--force -f)'{-f,--force}'[skip check for outstanding uncommitted changes]' \
+ '--bypass[apply patch without touching the working directory]' \
+ '--no-commit[do not commit, just update the working directory]' \
+ '--partial[commit even if some hunks fail]' \
+ '--exact[abort if patch would apply lossily]' \
+ '--import-branch[use any branch information in patch (implied by --exact)]' \
+ '(--date -d)'{-d+,--date=}'[record the specified date as commit date]:date' \
+ '(--user -u)'{-u+,--user=}'[record the specified user as committer]:user' \
+ '(--similarity -s)'{-s+,--similarity=}'[guess renamed files by similarity (0<=s<=100)]:similarity' \
'*:patch:_files'
}
_hg_cmd_incoming() {
- _arguments -s : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_remote_opts $_hg_template_opts $_hg_subrepos_opts \
'(--no-merges -M)'{-M,--no-merges}'[do not show merge revisions]' \
'(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \
'(--patch -p)'{-p,--patch}'[show patch]' \
- '(--rev -r)'{-r+,--rev=}'[a specific revision up to which you would like to pull]:revision:_hg_tags' \
+ '*'{-r+,--rev=}'[a remote changeset intended to be added]:revision:_hg_tags' \
'(--newest-first -n)'{-n,--newest-first}'[show newest record first]' \
'--bundle[file to store the bundles into]:bundle file:_files' \
':source:_hg_remote'
}
_hg_cmd_init() {
- _arguments -s : $_hg_global_opts $_hg_remote_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_remote_opts \
':dir:_files -/'
}
_hg_cmd_locate() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts \
'(--rev -r)'{-r+,--rev=}'[search repository as it stood at revision]:revision:_hg_tags' \
'(--print0 -0)'{-0,--print0}'[end filenames with NUL, for use with xargs]' \
- '(--fullpath -f)'{-f,--fullpath}'[print complete paths]' \
+ '(--fullpath -f)'{-f,--fullpath}'[print complete paths from the filesystem root]' \
'*:search pattern:_hg_files'
}
_hg_cmd_log() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts $_hg_style_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_template_opts \
'(--follow --follow-first -f)'{-f,--follow}'[follow changeset or history]' \
'(-f --follow)--follow-first[only follow the first parent of merge changesets]' \
'(--copies -C)'{-C,--copies}'[show copied files]' \
- '(--keyword -k)'{-k+,--keyword=}'[search for a keyword]:' \
- '(--limit -l)'{-l+,--limit=}'[limit number of changes displayed]:' \
- '*'{-r,--rev}'[show the specified revision or range]:revision:_hg_revrange' \
+ '*'{-k+,--keyword=}'[search for a keyword]:keyword' \
+ '(--limit -l)'{-l+,--limit=}'[limit number of changes displayed]:limit' \
+ '*'{-r+,--rev=}'[show the specified revision or revset]:revision:_hg_revrange' \
'(--no-merges -M)'{-M,--no-merges}'[do not show merges]' \
'(--only-merges -m)'{-m,--only-merges}'[show only merges]' \
'(--patch -p)'{-p,--patch}'[show patch]' \
- '(--prune -P)'{-P+,--prune=}'[do not display revision or any of its ancestors]:revision:_hg_tags' \
+ '*'{-P+,--prune=}'[do not display revision or any of its ancestors]:revision:_hg_tags' \
'*:files:_hg_files'
}
_hg_cmd_manifest() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
+ '--all[list files from all revisions]' \
':revision:_hg_tags'
}
_hg_cmd_merge() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_mergetool_opts \
'(--force -f)'{-f,--force}'[force a merge with outstanding changes]' \
- '(--rev -r 1)'{-r,--rev}'[revision to merge]:revision:_hg_mergerevs' \
+ '(--rev -r 1)'{-r+,--rev=}'[revision to merge]:revision:_hg_mergerevs' \
'(--preview -P)'{-P,--preview}'[review revisions to merge (no merge is performed)]' \
':revision:_hg_mergerevs'
}
_hg_cmd_outgoing() {
- _arguments -s : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_remote_opts $_hg_template_opts $_hg_subrepos_opts \
'(--no-merges -M)'{-M,--no-merges}'[do not show merge revisions]' \
'(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \
'(--patch -p)'{-p,--patch}'[show patch]' \
- '(--rev -r)'{-r+,--rev=}'[a specific revision you would like to push]' \
+ '*'{-r+,--rev=}'[a changeset intended to be included in the destination]:revision:_hg_tags' \
'(--newest-first -n)'{-n,--newest-first}'[show newest record first]' \
':destination:_hg_remote'
}
_hg_cmd_parents() {
- _arguments -s : $_hg_global_opts $_hg_style_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_template_opts \
'(--rev -r)'{-r+,--rev=}'[show parents of the specified rev]:revision:_hg_tags' \
':last modified file:_hg_files'
}
_hg_cmd_paths() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
':path:_hg_paths'
}
+_hg_cmd_phase() {
+ _arguments -s -S : $_hg_global_opts \
+ '(--public -p --draft -d --secret -s)'{-p,--public}'[set changeset phase to public]' \
+ '(--public -p --draft -d --secret -s)'{-d,--draft}'[set changeset phase to draft]' \
+ '(--public -p --draft -d --secret -s)'{-s,--secret}'[set changeset phase to secret]' \
+ '(--force -f)'{-f,--force}'[allow to move boundary backward]' \
+ '*'{-r+,--rev=}'[target revision]:revision:_hg_tags' \
+ '*:revision:_hg_tags'
+}
+
_hg_cmd_pull() {
- _arguments -s : $_hg_global_opts $_hg_remote_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_remote_opts \
'(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \
'(--update -u)'{-u,--update}'[update to new tip if changesets were pulled]' \
- '(--rev -r)'{-r+,--rev=}'[a specific revision up to which you would like to pull]:revision:' \
+ '(--rev -r)'{-r+,--rev=}'[a specific revision up to which you would like to pull]:revision' \
':source:_hg_remote'
}
_hg_cmd_push() {
- _arguments -s : $_hg_global_opts $_hg_remote_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_remote_opts \
'(--force -f)'{-f,--force}'[force push]' \
- '(--rev -r)'{-r+,--rev=}'[a specific revision you would like to push]:revision:_hg_tags' \
+ '*'{-r+,--rev=}'[a changeset intended to be included in the destination]:revision:_hg_tags' \
'*'{-B,--bookmark=}'[bookmark to push]:bookmark:_hg_bookmarks_internal' \
'*'{-b,--branch=}'[branch to push]:branch:_hg_branches_internal' \
- '--insecure[do not verify server certificate]' \
'--new-branch[allow pushing a new branch]' \
':destination:_hg_remote'
}
_hg_cmd_remove() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
- '(--after -A)'{-A,--after}'[record remove that has already occurred]' \
- '(--force -f)'{-f,--force}'[remove file even if modified]' \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_subrepos_opts \
+ '(--after -A)'{-A,--after}'[record delete for missing files]' \
+ '(--force -f)'{-f,--force}'[forget added files, delete modified files]' \
'*:file:_hg_files'
}
_hg_cmd_rename() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
'(--after -A)'{-A,--after}'[record a rename that has already occurred]' \
'(--force -f)'{-f,--force}'[forcibly copy over an existing managed file]' \
'*:file:_hg_files'
}
_hg_cmd_resolve() {
- local context state line
+ local context state state_descr line ret=1
typeset -A opt_args
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_mergetool_opts \
+ '(--all -a)'{-a,--all}'[select all unresolved files]' \
+ '(--no-status -n)'{-n,--no-status}'[hide status prefix]' \
'(--list -l --mark -m --unmark -u)'{-l,--list}'[list state of files needing merge]:*:merged files:->resolve_files' \
'(--mark -m --list -l --unmark -u)'{-m,--mark}'[mark files as resolved]:*:unresolved files:_hg_unresolved' \
- '(--unmark -u --list -l --mark -m)'{-u,--unmark}'[unmark files as resolved]:*:resolved files:_hg_resolved' \
- '*:file:_hg_unresolved'
+ '(--unmark -u --list -l --mark -m)'{-u,--unmark}'[mark files as unresolved]:*:resolved files:_hg_resolved' \
+ '*:file:_hg_unresolved' && ret=0
if [[ $state == 'resolve_files' ]]
then
_alternative 'files:resolved files:_hg_resolved' \
- 'files:unresolved files:_hg_unresolved'
+ 'files:unresolved files:_hg_unresolved' && ret=0
fi
+
+ return ret
}
_hg_cmd_revert() {
- local context state line
+ local context state state_descr line ret=1
typeset -A opt_args
- _arguments -s : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
'(--all -a :)'{-a,--all}'[revert all changes when no arguments given]' \
'(--rev -r)'{-r+,--rev=}'[revision to revert to]:revision:_hg_tags' \
- '--no-backup[do not save backup copies of files]' \
- '*:file:->diff_files'
+ '(--no-backup -C)'{-C,--no-backup}'[do not save backup copies of files]' \
+ '(--date -d)'{-d+,--date=}'[tipmost revision matching date]:date' \
+ '*:file:->diff_files' && ret=0
if [[ $state == 'diff_files' ]]
then
if [[ -n $opt_args[-r] ]]
then
- _hg_files
+ _hg_files && ret=0
else
typeset -a status_files
_hg_status mard
- _wanted files expl 'modified, added, removed or deleted file' _multi_parts / status_files
+ _wanted files expl 'modified, added, removed or deleted file' _multi_parts / status_files && ret=0
fi
fi
+
+ return ret
}
_hg_cmd_serve() {
- _arguments -s : $_hg_global_opts \
- '(--accesslog -A)'{-A+,--accesslog=}'[name of access log file]:log file:_files' \
- '(--errorlog -E)'{-E+,--errorlog=}'[name of error log file]:log file:_files' \
+ _arguments -s -S : $_hg_global_opts $_hg_subrepos_opts \
+ '(--accesslog -A)'{-A+,--accesslog=}'[name of access log file to write to]:log file:_files' \
+ '(--errorlog -E)'{-E+,--errorlog=}'[name of error log file to write to]:log file:_files' \
'(--daemon -d)'{-d,--daemon}'[run server in background]' \
- '(--port -p)'{-p+,--port=}'[listen port]:listen port:' \
- '(--address -a)'{-a+,--address=}'[interface address]:interface address:' \
- '(--name -n)'{-n+,--name=}'[name to show in web pages]:repository name:' \
- '(--templates -t)'{-t,--templates}'[web template directory]:template dir:_files -/' \
- '--style[web template style]:style' \
+ '(--port -p)'{-p+,--port=}'[port to listen on (default: 8000)]:listen port' \
+ '(--address -a)'{-a+,--address=}'[address to listen on (default: all interfaces)]:interface address' \
+ '--prefix[prefix path to serve from (default: server root)]:prefix' \
+ '(--name -n)'{-n+,--name=}'[name to show in web pages (default: working directory)]:repository name' \
+ '--web-conf=[name of the hgweb config file]:config file:_files' \
+ '--pid-file=[name of file to write process ID to]:pid file:_files' \
+ '--cmdserver[for remote clients]' \
+ '(--templates -t)'{-t+,--templates=}'[web template directory]:template dir:_files -/' \
+ '--style=[web template style]:style' \
'--stdio[for remote clients]' \
- '(--ipv6 -6)'{-6,--ipv6}'[use IPv6 in addition to IPv4]'
+ '(--ipv6 -6)'{-6,--ipv6}'[use IPv6 in addition to IPv4]' \
+ '--certificate=[SSL certificate file]:certificate file:_files'
}
_hg_cmd_showconfig() {
- _arguments -s : $_hg_global_opts \
- '(--untrusted -u)'{-u+,--untrusted=}'[show untrusted configuration options]' \
+ _arguments -s -S : $_hg_global_opts \
+ '(--untrusted -u)'{-u,--untrusted}'[show untrusted configuration options]' \
+ '(--edit -e)'{-e,--edit}'[edit user config]' \
+ '(--local -l --global -g)'{-l,--local}'[edit repository config]' \
+ '(--local -l --global -g)'{-g,--global}'[edit global config]' \
':config item:_hg_config'
}
_hg_cmd_status() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_subrepos_opts \
'(--all -A)'{-A,--all}'[show status of all files]' \
'(--modified -m)'{-m,--modified}'[show only modified files]' \
'(--added -a)'{-a,--added}'[show only added files]' \
'(--removed -r)'{-r,--removed}'[show only removed files]' \
'(--deleted -d)'{-d,--deleted}'[show only deleted (but tracked) files]' \
'(--clean -c)'{-c,--clean}'[show only files without changes]' \
- '(--unknown -u)'{-u,--unknown}'[show only unknown files]' \
+ '(--unknown -u)'{-u,--unknown}'[show only unknown (not tracked) files]' \
'(--ignored -i)'{-i,--ignored}'[show ignored files]' \
'(--no-status -n)'{-n,--no-status}'[hide status prefix]' \
'(--copies -C)'{-C,--copies}'[show source of copied files]' \
'(--print0 -0)'{-0,--print0}'[end filenames with NUL, for use with xargs]' \
- '--rev[show difference from revision]:revision:_hg_tags' \
+ '*--rev=[show difference from revision]:revision:_hg_tags' \
+ '--change=[list the changed files of a revision]:revision:_hg_tags' \
'*:files:_files'
}
+_hg_cmd_summary() {
+ _arguments -s -S : $_hg_global_opts \
+ '--remote[check for push and pull]'
+}
+
_hg_cmd_tag() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--local -l)'{-l,--local}'[make the tag local]' \
- '(--message -m)'{-m+,--message=}'[message for tag commit log entry]:message:' \
- '(--date -d)'{-d+,--date=}'[record datecode as commit date]:date code:' \
- '(--user -u)'{-u+,--user=}'[record user as commiter]:user:' \
+ '(--message -m)'{-m+,--message=}'[message for tag commit log entry]:message' \
+ '(--date -d)'{-d+,--date=}'[record the specified date as commit date]:date' \
+ '(--user -u)'{-u+,--user=}'[record the specified user as committer]:user' \
'(--rev -r)'{-r+,--rev=}'[revision to tag]:revision:_hg_tags' \
+ '(--force -f)'{-f,--force}'[force tag]' \
+ '--remove[remove a tag]' \
':tag name:'
}
_hg_cmd_tip() {
- _arguments -s : $_hg_global_opts $_hg_style_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_template_opts \
'(--patch -p)'{-p,--patch}'[show patch]'
}
_hg_cmd_unbundle() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--update -u)'{-u,--update}'[update to new tip if changesets were unbundled]' \
- ':files:_files'
+ '*:files:_files'
}
_hg_cmd_update() {
- _arguments -s : $_hg_global_opts \
- '(--clean -C)'{-C,--clean}'[overwrite locally modified files]' \
+ _arguments -s -S : $_hg_global_opts $_hg_mergetool_opts \
+ '(--clean -C)'{-C,--clean}'[discard uncommitted changes (no backup)]' \
+ '(--check -c)'{-c,--check}'[require clean working directory]' \
+ '(--date -d)'{-d+,--date=}'[tipmost revision matching date]:date' \
'(--rev -r)'{-r+,--rev=}'[revision]:revision:_hg_tags' \
':revision:_hg_tags'
}
# HGK
_hg_cmd_view() {
- _arguments -s : $_hg_global_opts \
- '(--limit -l)'{-l+,--limit=}'[limit number of changes displayed]:' \
+ _arguments -s -S : $_hg_global_opts \
+ '(--limit -l)'{-l+,--limit=}'[limit number of changes displayed]:limit' \
':revision range:_hg_tags'
}
@@ -859,35 +952,35 @@ _hg_qseries_opts=(
'(--summary -s)'{-s,--summary}'[print first line of patch header]')
_hg_cmd_qapplied() {
- _arguments -s : $_hg_global_opts $_hg_qseries_opts
+ _arguments -s -S : $_hg_global_opts $_hg_qseries_opts
}
_hg_cmd_qdelete() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--keep -k)'{-k,--keep}'[keep patch file]' \
'*'{-r+,--rev=}'[stop managing a revision]:applied patch:_hg_revrange' \
'*:unapplied patch:_hg_qdeletable'
}
_hg_cmd_qdiff() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts \
'*:pattern:_hg_files'
}
_hg_cmd_qfold() {
- _arguments -s : $_hg_global_opts $_h_commit_opts \
+ _arguments -s -S : $_hg_global_opts $_h_commit_opts \
'(--keep -k)'{-k,--keep}'[keep folded patch files]' \
'*:unapplied patch:_hg_qunapplied'
}
_hg_cmd_qgoto() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--force -f)'{-f,--force}'[overwrite any local changes]' \
':patch:_hg_qseries'
}
_hg_cmd_qguard() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--list -l)'{-l,--list}'[list all patches and guards]' \
'(--none -n)'{-n,--none}'[drop all guards]' \
':patch:_hg_qseries' \
@@ -895,12 +988,12 @@ _hg_cmd_qguard() {
}
_hg_cmd_qheader() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
':patch:_hg_qseries'
}
_hg_cmd_qimport() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--existing -e)'{-e,--existing}'[import file in patch dir]' \
'(--name -n 2)'{-n+,--name=}'[patch file name]:name:' \
'(--force -f)'{-f,--force}'[overwrite existing files]' \
@@ -909,17 +1002,17 @@ _hg_cmd_qimport() {
}
_hg_cmd_qnew() {
- _arguments -s : $_hg_global_opts $_hg_commit_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_commit_opts \
'(--force -f)'{-f,--force}'[import uncommitted changes into patch]' \
':patch:'
}
_hg_cmd_qnext() {
- _arguments -s : $_hg_global_opts $_hg_qseries_opts
+ _arguments -s -S : $_hg_global_opts $_hg_qseries_opts
}
_hg_cmd_qpop() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--all -a :)'{-a,--all}'[pop all patches]' \
'(--name -n)'{-n+,--name=}'[queue name to pop]:' \
'(--force -f)'{-f,--force}'[forget any local changes]' \
@@ -927,11 +1020,11 @@ _hg_cmd_qpop() {
}
_hg_cmd_qprev() {
- _arguments -s : $_hg_global_opts $_hg_qseries_opts
+ _arguments -s -S : $_hg_global_opts $_hg_qseries_opts
}
_hg_cmd_qpush() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--all -a :)'{-a,--all}'[apply all patches]' \
'(--list -l)'{-l,--list}'[list patch name in commit text]' \
'(--merge -m)'{-m+,--merge=}'[merge from another queue]:' \
@@ -941,20 +1034,20 @@ _hg_cmd_qpush() {
}
_hg_cmd_qrefresh() {
- _arguments -s : $_hg_global_opts $_hg_pat_opts $_hg_commit_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_pat_opts $_hg_commit_opts \
'(--git -g)'{-g,--git}'[use git extended diff format]' \
'(--short -s)'{-s,--short}'[short refresh]' \
'*:files:_hg_files'
}
_hg_cmd_qrename() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
':patch:_hg_qseries' \
':destination:'
}
_hg_cmd_qselect() {
- _arguments -s : $_hg_global_opts \
+ _arguments -s -S : $_hg_global_opts \
'(--none -n :)'{-n,--none}'[disable all guards]' \
'(--series -s :)'{-s,--series}'[list all guards in series file]' \
'--pop[pop to before first guarded applied patch]' \
@@ -963,24 +1056,26 @@ _hg_cmd_qselect() {
}
_hg_cmd_qseries() {
- _arguments -s : $_hg_global_opts $_hg_qseries_opts \
+ _arguments -s -S : $_hg_global_opts $_hg_qseries_opts \
'(--missing -m)'{-m,--missing}'[print patches not in series]'
}
_hg_cmd_qunapplied() {
- _arguments -s : $_hg_global_opts $_hg_qseries_opts
+ _arguments -s -S : $_hg_global_opts $_hg_qseries_opts
}
_hg_cmd_qtop() {
- _arguments -s : $_hg_global_opts $_hg_qseries_opts
+ _arguments -s -S : $_hg_global_opts $_hg_qseries_opts
}
_hg_cmd_strip() {
- _arguments -s : $_hg_global_opts \
- '(--force -f)'{-f,--force}'[force multi-head removal]' \
- '(--backup -b)'{-b,--backup}'[bundle unrelated changesets]' \
- '(--nobackup -n)'{-n,--nobackup}'[no backups]' \
- ':revision:_hg_tags'
+ _arguments -s -S : $_hg_global_opts \
+ '*'{-r+,--rev=}'[revision]:revision:_hg_tags' \
+ '(--force -f)'{-f,--force}'[force removal of changesets, discard uncommitted changes (no backup)]' \
+ '--no-backup[no backups]' \
+ '(--keep -k)'{-k,--keep}'[do not modify working directory during strip]' \
+ '*'{-B+,--bookmark=}'[remove revs only reachable from given bookmark]:bookmark:_hg_bookmarks_internal' \
+ '*:revision:_hg_tags'
}
_hg "$@"