From: Daniel Shahaf <d.s@daniel.shahaf.name>
To: zsh-workers@zsh.org
Subject: [PATCH 1/2] Complete 'svnadmin freeze' as a precommand.
Date: Fri, 29 Jul 2016 17:03:03 +0000 [thread overview]
Message-ID: <1469811784-5523-1-git-send-email-danielsh@tarsus.local2> (raw)
---
Completion/Unix/Command/_subversion | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/Completion/Unix/Command/_subversion b/Completion/Unix/Command/_subversion
index 08ba0e8..5bbc033 100644
--- a/Completion/Unix/Command/_subversion
+++ b/Completion/Unix/Command/_subversion
@@ -183,6 +183,9 @@ _svn () {
_svnadmin () {
local curcontext="$curcontext" state line ret=1
+ integer NORMARG
+ local context state_descr
+ typeset -A opt_args
_arguments -C \
'(-)--help[print help information]' \
@@ -214,11 +217,36 @@ _svnadmin () {
)
if [[ $usage == *REPOS_PATH* ]]; then
args+=( ":repository path:_files -/" )
+ case $cmd in
+ (freeze)
+ args+=( "*:arguments:->normal" )
+ ;;
+ esac
elif [[ $cmd = help ]]; then
args+=( "*:subcommand:_svnadmin_commands" )
fi
- _arguments "$args[@]" && ret=0
+ _arguments -n -s -S : "$args[@]" && ret=0
+
+ case $state in
+ # Test cases:
+ # svnadmin freeze . rsync --<TAB> offers --file
+ # svnadmin freeze -- . rsync -<TAB> offers rsync's options
+ #
+ # Note: the NORMARG calculations here include one positional argument
+ # (the '.') before the command.
+ (normal)
+ if (( ${words[(i)--]} < CURRENT )); then
+ words[1,NORMARG]=()
+ (( CURRENT -= NORMARG ))
+ _normal && ret=0
+ elif (( NORMARG+1 == CURRENT )); then
+ # ### don't allow --options in this case
+ # TODO: this should just use '_normal -F "(-*)"', but _normal ignores its arguments.
+ _command_names -e && ret=0
+ fi
+ ;;
+ esac
else
_message "unknown svnadmin command: $words[1]"
fi
next reply other threads:[~2016-07-29 17:03 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-29 17:03 Daniel Shahaf [this message]
2016-07-29 17:03 ` [PATCH 2/2] _svnadmin: Complete positional arguments for 'hotcopy', 'setlog', 'setrevprop', 'delrevprop' Daniel Shahaf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1469811784-5523-1-git-send-email-danielsh@tarsus.local2 \
--to=d.s@daniel.shahaf.name \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).