monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-devel] addition to zsh completion


From: Bruce Stephens
Subject: [Monotone-devel] addition to zsh completion
Date: Thu, 21 Sep 2006 22:23:24 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

The attached adds a _mtn_tags, to complete tag names (presuming they
don't contain spaces), and _mtn_public_keys (presuming they're likely
also to be author names), and uses those (and _mtn_branches) to
complete selectors (_mtn_selectors).

_mtn_selector_or_revision combines _mtn_selectors and _mtn_revisions,
and the patch changes all uses of _mtn_revisions to use
_mtn_selector_or_revision.

# 
# old_revision [06656f9d10c99cbb9e5c01af5bfad4e26402091d]
# 
# patch "contrib/monotone.zsh_completion"
#  from [883593971ede89e65a9348bed7ab5ec5453925fe]
#    to [9a48dedae6e15e7e93f0f7c80d93f34e9466f687]
# 
============================================================
--- contrib/monotone.zsh_completion     883593971ede89e65a9348bed7ab5ec5453925fe
+++ contrib/monotone.zsh_completion     9a48dedae6e15e7e93f0f7c80d93f34e9466f687
@@ -1,4 +1,4 @@
-#compdef mtn # -*-sh-*-
+#compdef mtn
 #
 # ZSH Completion for Monotone
 #
@@ -87,7 +87,7 @@ _mtn_annotate() {
 (( $+functions[_mtn_annotate] )) ||
 _mtn_annotate() {
     _arguments -s : \
-       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_revisions'\
+       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_selector_or_revision'\
        '--brief[print a brief version of the normal output]'\
        '(*)*:file to annotate:_mtn_files_known'
 }
@@ -96,7 +96,7 @@ _mtn_approve() {
 _mtn_approve() {
     _arguments -s : \
        {'(--branch)-b+','(-b)--branch='}'[select branch cert for 
operation]:branch:_mtn_branches'\
-       '(*)*:revision:_mtn_revisions'
+       '(*)*:revision:_mtn_selector_or_revision'
 }
 
 (( $+functions[_mtn_attr] )) ||
@@ -126,14 +126,14 @@ _mtn_cat() {
 (( $+functions[_mtn_cat] )) ||
 _mtn_cat() {
     _arguments -s : \
-       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_revisions'\
+       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_selector_or_revision'\
        '*:file to cat:_mtn_files_known'
 }
 
 (( $+functions[_mtn_cert] )) ||
 _mtn_cert() {
     _arguments -s : \
-       '1:revision:_mtn_revisions'\
+       '1:revision:_mtn_selector_or_revision'\
        '2:certname: '\
        '3:certval: '
 }
@@ -142,7 +142,7 @@ _mtn_checkout() {
 _mtn_checkout() {
     _arguments -s : \
        {'(--branch)-b+','(-b)--branch='}'[select branch cert for 
operation]:branch:_mtn_branches'\
-       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_revisions'\
+       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_selector_or_revision'\
        '(*)*:directory for checkout: '
 }
 
@@ -164,7 +164,7 @@ _mtn_comment() {
 (( $+functions[_mtn_comment] )) ||
 _mtn_comment() {
     _arguments -s : \
-       '1:revision:_mtn_revisions'\
+       '1:revision:_mtn_selector_or_revision'\
        '2:comment: '
 }
 
@@ -205,7 +205,7 @@ _mtn_diff() {
 (( $+functions[_mtn_diff] )) ||
 _mtn_diff() {
     _arguments -s : \
-       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_revisions'\
+       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_selector_or_revision'\
        '--depth=[limit the number of levels of directories to descend]:depth: 
'\
        '--exclude=[leave out anything described by its 
argument]:file:_mtn_files_known'\
        {'(--unified)-u','(-u)--unified'}'[use unified diff format]'\
@@ -220,7 +220,7 @@ _mtn_disapprove() {
 _mtn_disapprove() {
     _arguments -s : \
        {'(--branch)-b+','(-b)--branch='}'[select branch cert for 
operation]:branch:_mtn_branches'\
-       '(*)*:revision to disapprove:_mtn_revisions'
+       '(*)*:revision to disapprove:_mtn_selector_or_revision'
 }
 
 (( $+functions[_mtn_drop] )) ||
@@ -240,8 +240,8 @@ _mtn_explicit_merge() {
 (( $+functions[_mtn_explicit_merge] )) ||
 _mtn_explicit_merge() {
     _arguments -s : \
-       '1:left revision:_mtn_revisions'\
-       '2:right revision:_mtn_revisions'\
+       '1:left revision:_mtn_selector_or_revision'\
+       '2:right revision:_mtn_selector_or_revision'\
        '3:dest branch:_mtn_branches'
 }
 
@@ -254,7 +254,7 @@ _mtn_log() {
 (( $+functions[_mtn_log] )) ||
 _mtn_log() {
     _arguments -s : \
-       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_revisions'\
+       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_selector_or_revision'\
        '--last=[limit log output to the last number of entries]:last: ' \
        '--next=[limit log output to the next number of entries]:next: ' \
        '--brief[print a brief version of the normal output]'\
@@ -358,16 +358,16 @@ _mtn_sync() {
 }
 
 (( $+functions[_mtn_tag] )) ||
-q_mtn_tag() {
+_mtn_tag() {
     _arguments -s : \
-       '1:revision to tag:_mtn_revisions'\
+       '1:revision to tag:_mtn_selector_or_revision'\
        '(1)*:tagname: '
 }
 
 (( $+functions[_mtn_result] )) ||
 _mtn_testresult() {
     _arguments -s : \
-       '1:revision:_mtn_revisions'\
+       '1:revision:_mtn_selector_or_revision'\
        '2:result:(pass fail true false yes no 1 0)'
 }
 
@@ -375,7 +375,7 @@ _mtn_update() {
 _mtn_update() {
     _arguments -s : \
        {'(--branch)-b+','(-b)--branch='}'[select branch cert for 
operation]:branch:_mtn_branches'\
-       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_revisions'
+       {'(--revision)-r+','(-r)--revision='}'[select revision id for 
operation]:revision:_mtn_selector_or_revision'
 }
 
 # define completion functions for files maintained by monotone.
@@ -411,6 +411,16 @@ _mtn_branches() {
     compadd -- $(mtn ls branches 2>/dev/null)
 }
 
+(( $+functions[_mtn_tags] )) ||
+_mtn_tags() {
+    compadd -- ${(u)${(f)"$(mtn ls tags 2>/dev/null)"}%% *}
+}
+
+(( $+functions[_mtn_public_keys] )) ||
+_mtn_public_keys() {
+    compadd -- ${${${(@M)${(f)"$(mtn ls keys 2>/dev/null)"}:address@hidden 
}%%* *}
+}
+
 (( $+functions[_mtn_keys] )) ||
 _mtn_keys() {
     if [[ -n $PREFIX ]]; then
@@ -427,6 +437,28 @@ _mtn_revisions() {
     fi
 }
 
+(( $+functions[_mtn_selectors] )) ||
+_mtn_selectors() {
+    local context state line
+    typeset -A val_args
+
+    _values -s / -S : selector \
+       '*b[branches]:branch:_mtn_branches' \
+       '*h[branch heads]:branch head:_mtn_branches' \
+       '*t[tags]:tag:_mtn_tags' \
+       '*a[authors]:author:_mtn_public_keys' \
+       '*d[date]:date:' \
+       '*e[earlier than]:date:' \
+       '*l[later than]:date:' \
+       '*i[revision id]:revision id:_mtn_revisions'
+}
+
+(( $+functions[_mtn_selector_or_revision] )) ||
+_mtn_selector_or_revision() {
+    _alternative 'selector:selector:_mtn_selectors' \
+       'revision:revision:_mtn_revisions'
+}
+
 # helper function, determines cwd relative to the root of the workspace
 
 (( $+functions[_mtn_rcwd] )) ||

reply via email to

[Prev in Thread] Current Thread [Next in Thread]