zsh_completion: complete merge tools for -t/--tool
authorAnton Shestakov <av6@dwimlabs.net>
Wed, 22 Aug 2018 08:20:51 +0800
changeset 39377 b4e7e1f09c09
parent 39376 5f8282f368b2
child 39378 0f549da54379
zsh_completion: complete merge tools for -t/--tool Differential Revision: https://phab.mercurial-scm.org/D4362
contrib/zsh_completion
--- a/contrib/zsh_completion	Wed Jun 06 01:46:37 2018 +0200
+++ b/contrib/zsh_completion	Wed Aug 22 08:20:51 2018 +0800
@@ -281,6 +281,18 @@
     (( $#items )) && _describe -t config 'config item' items
 }
 
+_hg_internal_merge_tools=(
+  \\:dump \\:fail \\:forcedump \\: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'
@@ -416,7 +428,7 @@
   '--nodates[omit dates from diff headers]')
 
 _hg_mergetool_opts=(
-  '(--tool -t)'{-t+,--tool=}'[specify merge tool]:merge tool'
+  '(--tool -t)'{-t+,--tool=}'[specify merge tool]:merge tool:_hg_merge_tools'
 )
 
 _hg_dryrun_opts=(