3 # Zsh completion script for mercurial. Rename this file to _hg and copy |
3 # Zsh completion script for mercurial. Rename this file to _hg and copy |
4 # it into your zsh function path (/usr/share/zsh/site-functions for |
4 # it into your zsh function path (/usr/share/zsh/site-functions for |
5 # instance) |
5 # instance) |
6 # |
6 # |
7 # Copyright (C) 2005 Steve Borho |
7 # Copyright (C) 2005 Steve Borho |
8 # Copyright (C) 2006 Brendan Cully |
8 # Copyright (C) 2006 Brendan Cully <brendan@kublai.com> |
9 # |
9 # |
10 # This is free software; you can redistribute it and/or modify it under |
10 # This is free software; you can redistribute it and/or modify it under |
11 # the terms of the GNU General Public License as published by the Free |
11 # the terms of the GNU General Public License as published by the Free |
12 # Software Foundation; either version 2 of the License, or (at your |
12 # Software Foundation; either version 2 of the License, or (at your |
13 # option) any later version. |
13 # option) any later version. |
14 # |
14 # |
15 |
15 |
16 local curcontext="$curcontext" state line |
16 local curcontext="$curcontext" state line |
17 local repos newFiles addedFiles commitMessage |
|
18 typeset -A _hg_cmd_globals |
17 typeset -A _hg_cmd_globals |
19 |
18 |
20 _hg() { |
19 _hg() { |
21 local cmd |
20 local cmd |
22 integer i=2 |
21 integer i=2 |
113 done |
112 done |
114 } |
113 } |
115 |
114 |
116 _hg_commands() { |
115 _hg_commands() { |
117 (( $#_hg_cmd_list )) || _hg_get_commands |
116 (( $#_hg_cmd_list )) || _hg_get_commands |
118 _describe -t hg-commands 'mercurial command' _hg_cmd_list |
117 _describe -t commands 'mercurial command' _hg_cmd_list |
119 } |
118 } |
120 |
119 |
121 _hg_tags() { |
120 _hg_tags() { |
122 typeset -a tags |
121 typeset -a tags |
123 local tag rev |
122 local tag rev |
124 |
123 |
125 _hg_cmd tags 2> /dev/null | while read tag rev |
124 _hg_cmd tags 2> /dev/null | while read tag rev |
126 do |
125 do |
127 tags+=($tag) |
126 tags+=($tag) |
128 done |
127 done |
129 (( $#tags )) && _describe -t hg-tags 'tags' tags |
128 (( $#tags )) && _describe -t tags 'tags' tags |
130 } |
129 } |
131 |
130 |
132 _hg_status() { |
131 _hg_status() { |
133 status_files=(${(ps:\0:)"$(_hg_cmd status -0n$1 .)"}) |
132 status_files=(${(ps:\0:)"$(_hg_cmd status -0n$1 .)"}) |
134 } |
133 } |
135 |
134 |
136 _hg_unknown() { |
135 _hg_unknown() { |
137 typeset -a status_files |
136 typeset -a status_files |
138 _hg_status u |
137 _hg_status u |
139 (( $#status_files )) && _describe -t hg-unknown-files 'unknown files' status_files |
138 (( $#status_files )) && _describe -t files 'unknown files' status_files |
140 } |
139 } |
141 |
140 |
142 _hg_missing() { |
141 _hg_missing() { |
143 typeset -a status_files |
142 typeset -a status_files |
144 _hg_status d |
143 _hg_status d |
145 (( $#status_files )) && _describe -t hg-missing-files 'missing files' status_files |
144 (( $#status_files )) && _describe -t files 'missing files' status_files |
146 } |
145 } |
147 |
146 |
148 _hg_addremove() { |
147 _hg_addremove() { |
149 _alternative "unknown files:unknown files:_hg_unknown" \ |
148 _alternative 'files:unknown files:_hg_unknown' \ |
150 "missing files:missing files:_hg_missing" |
149 'files:missing files:_hg_missing' |
151 } |
150 } |
152 |
151 |
153 _hg_paths() { |
152 _hg_paths() { |
154 typeset -a paths pnames |
153 typeset -a paths pnames |
155 _hg_cmd paths 2> /dev/null | while read -A pnames |
154 _hg_cmd paths 2> /dev/null | while read -A pnames |
156 do |
155 do |
157 paths+=($pnames[1]) |
156 paths+=($pnames[1]) |
158 done |
157 done |
159 (( $#paths )) && _describe -t hg-paths 'repository aliases' paths |
158 (( $#paths )) && _describe -t urls 'repository aliases' paths |
160 } |
159 } |
161 |
160 |
162 _hg_remote() { |
161 _hg_remote() { |
163 _alternative 'repository aliases:repository aliases:_hg_paths' \ |
162 _alternative 'urls:repository alias:_hg_paths' \ |
164 'directory:directory:_files -/' |
163 'directories:directory:_files -/' |
165 } |
164 } |
166 |
165 |
167 # Common options |
166 # Common options |
168 _hg_global_opts=( |
167 _hg_global_opts=( |
169 '(--repository -R)'{-R+,--repository}'[repository root directory]:repository:_files -/' |
168 '(--repository -R)'{-R+,--repository}'[repository root directory]:repository:_files -/' |