Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: new _prcs completion fonction
- X-seq: zsh-workers 9216
- From: Alexandre Duret-Lutz <duret_g@xxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: PATCH: new _prcs completion fonction
- Date: 05 Jan 2000 14:45:54 +0100
- In-reply-to: Tanaka Akira's message of "05 Jan 2000 02:30:59 +0900"
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
[ I have sent the following patch on zsh-workers in two mails on
`01 Jan 2000 19:37:22 +0100' and `01 Jan 2000 21:27:58 +0100'.
I have received today an `addresses had permanent fatal errors'
message, so I am sending this again. I'm a bit surprised of this
since a third mail sent `02 Jan 2000 01:51:27 +0100' has hit the
list... ]
The patch below add a completion fonction for the Project Revision Control
System. I'm not sure you will like the chunk on computil.c :
parse_cadef() was always skipping the first letter of any option name,
I just made it look at it: this allow _argument to handle `--' as
an option (this is used in the `execute' case of the _prcs function).
Index: Src/Zle/computil.c
--- Src/Zle/computil.c Tue, 04 Jan 2000 16:13:01 +0100 Alexandre
+++ Src/Zle/computil.c Wed, 05 Jan 2000 14:01:18 +0100 Alexandre
@@ -640,9 +640,9 @@
zerrnam(nam, "invalid argument: %s", *args, 0);
return NULL;
}
- /* Skip over the name. */
- for (p += 2; *p && *p != ':' && *p != '[' &&
+ /* Skip over the name. */
+ for (p++; *p && *p != ':' && *p != '[' &&
((*p != '-' && *p != '+' && *p != '=') ||
(p[1] != ':' && p[1] != '[')); p++)
if (*p == '\\' && p[1])
Index: Completion/User/.distfiles
--- Completion/User/.distfiles Fri, 31 Dec 1999 13:32:44 +0100 Alexandre
+++ Completion/User/.distfiles Wed, 05 Jan 2000 14:01:13 +0100 Alexandre
@@ -5,7 +5,7 @@
_gunzip _gv _gzip _hosts _ispell _killall _lynx _mailboxes _make _man
_mh _mount _mutt _my_accounts _netscape _nslookup _other_accounts
_pack _patch _pbm _pdf _perl_basepods _perl_builtin_funcs
- _perl_modules _perldoc _ports _prompt _ps _pspdf _rcs _rlogin _sh
+ _perl_modules _perldoc _ports _prcs _prompt _ps _pspdf _rcs _rlogin _sh
_socket _ssh _strip _stty _su _sudo _tar _tar_archive _telnet _tex _tiff
_uncompress _unpack _urls _use_lo _user_at_host _users _users_on
_webbrowser _wget _whereis _whois _xargs _yodl _yp _zdump
Index: Completion/User/_prcs
--- Completion/User/_prcs Wed, 05 Jan 2000 14:29:04 +0100 Alexandre
+++ Completion/User/_prcs Wed, 05 Jan 2000 14:26:46 +0100 Alexandre
@@ -0,0 +1,203 @@
+#compdef prcs
+
+# lookup project names in the repository
+# (this does not handle subprojects)
+
+(( $+functions[_prcs_projects] )) ||
+_prcs_projects() {
+ compadd $@ - ${opt_args[-R]:-${opt_args[--repository]:-${PRCS_REPOSITORY:-$HOME/PRCS}}}/*(/:t)
+}
+
+# standard options for all subcommands
+
+(( $+functions[_prcs_arguments] )) ||
+_prcs_arguments() {
+ _arguments -s \
+ '(-f)--force[resolve interactive queries in some fixed way]' \
+ '(--force)-f[resolve interactive queries in some fixed way]' \
+ '(-h -H)--help[print out help]' \
+ '(--help -H)-h[print out help]' \
+ '(--help -h)-H[print out help]' \
+ '(-j)--jobs=[spawn many child processes at once]:number:' \
+ '(--jobs)-j[spawn many child processes at once]:number:' \
+ '(-l)--long-format[long format]' \
+ '(--long-format)-l[long format]' \
+ '(-L)--long-long-format[long format]' \
+ '(--long-long-format)-L[longer format]' \
+ '(-n)--no-action[no action]' \
+ '(--no-action)-n[no action]' \
+ '(-q)--quiet[suppress normal informational messages]' \
+ '(--quiet)-q[suppress normal informational messages]' \
+ "--plain-format[don't break lines at screen width]" \
+ '(-R)--repository=[set the repository directory]:directory:_files -/' \
+ '(--repository)-R[set the repository directory]:directory:_files -/' \
+ '(-v)--version[print PRCS version and exits]' \
+ '(--version)-v[print PRCS version and exits]' \
+ $@
+}
+
+if (( CURRENT == 2 )); then
+ _arguments \
+ ':prcs command:((
+ admin\:"admin subcommand"
+ checkin\:"checkin project revision"
+ checkout\:"checkout project revision"
+ config\:"verify configuration"
+ delete\:"delete named revision of project"
+ depopulate\:"remove named files from project descriptor"
+ diff\:"show differences between two revisions"
+ execute\:"execute a command for each file in a project"
+ info\:"print information about versions of project"
+ merge\:"reconcile differences between working files and another revision"
+ package\:"package the project and all its revisions into packagefile"
+ populate\:"add named files to project descriptor"
+ rekey\:"set keywords in selected files"
+ unpackage\:"unpackage project in packagefile"))'
+else
+ shift words
+ (( --CURRENT ))
+ case "$words[1]" in
+ admin)
+ if (( CURRENT == 2 )); then
+ _arguments \
+ ':admin subcommand:((
+ access\:"set the access permissions on the repository"
+ compress\:"instruct PRCS to save disk space for project"
+ init\:"create a repository entry"
+ pdelete\:"delete a repository entry"
+ prename\:"rename a repository entry"
+ rebuild\:"reconstruct PRCS data files in the repository"
+ uncompress\:"instruct PRCS to save time in processing project"))'
+ else
+ shift words
+ (( --CURRENT ))
+ case "$words[1]" in
+ access|compress|init|pdelete|prename|rebuild)
+ _prcs_arguments ':project name:_prcs_projects'
+ ;;
+ uncompress)
+ _prcs_arguments \
+ '-i[expand the entire project immediately]' \
+ ':project name:_prcs_projects'
+ ;;
+ esac
+ fi
+ ;;
+ checkin)
+ _prcs_arguments \
+ '(-r)--revison=[version of the project]:revision:' \
+ '(--revison)-r[version of the project]:revision:' \
+ '(-s)--skilled-merge[turn off most of the safety features of merge]' \
+ '(--skilled-merge)-s[turn off most of the safety features of merge]' \
+ ':project name:_prcs_projects' \
+ '*:file or directory:_files'
+ ;;
+ checkout)
+ _prcs_arguments \
+ '(-r)--revison=[version of the project]:revision:' \
+ '(--revison)-r[version of the project]:revision:' \
+ '(-p)--preserve[preserve permissions on files that are checked out]' \
+ '(--preserve)-p[preserve permissions on files that are checked out]' \
+ "(-u)--unlink[don't overwrite symbolic link references]" \
+ "(--unlink)-u[don't overwrite symbolic link references]" \
+ "(-P)--exclude-project-file[don't checkout the project file]" \
+ "(--exclude-project-file)-P[don't checkout the project file]" \
+ ':project name:_prcs_projects' \
+ '*:file or directory:_files'
+ ;;
+ config)
+ _prcs_arguments
+ ;;
+ delete)
+ _prcs_arguments \
+ '(-r)--revison=[version of the project]:reversion:' \
+ '(--revison)-r[version of the project]:reversion:' \
+ ':project name:_prcs_projects'
+ ;;
+ depopulate)
+ _prcs_arguments \
+ ':project name:_prcs_projects' \
+ '*:file or directory:_files'
+ ;;
+ diff)
+#
+# FIXME: when there will be a _diff completion function,
+# we should complete with diff options after `--' :
+# prcs diff [OPTION ...] [PROJECT [FILE-OR-DIR ...]] [-- [DIFF-OPTION ...]]
+#
+ _prcs_arguments \
+ '*--revison=[version of the project]:revision:' \
+ '*-r[version of the project]:revision:' \
+ '(-k)--keywords[compare keywords too]' \
+ '(--keywords)-k[compare keywords too]' \
+ '(-N)--new[compare new files against empty files]' \
+ '(--new)-N[compare new files against empty files]' \
+ "(-P)--exclude-project-file[don't diff the project file]" \
+ "(--exclude-project-file)-P[don't diff the project file]" \
+ ':project name:_prcs_projects' \
+ '*:file or directory:_files'
+ ;;
+ execute)
+ _prcs_arguments \
+ '(-r)--revison=[version of the project]:reversion:' \
+ '(--revison)-r[version of the project]:reversion:' \
+ '--pre[list directories first]' \
+ '(--pipe)--all[execute command once, with all files as arguments]' \
+ '(--all)--pipe[supply file contents as the standard input]' \
+ '--match[execute command on files matching a pattern]:pattern:' \
+ '--not[execute command on files not matching a pattern]:pattern:' \
+ '--:command: _command_names -e:*::arguments: _normal' \
+ ':project name:_prcs_projects' \
+ '*:file or directory:_files'
+ ;;
+ info)
+ _prcs_arguments \
+ '(-r)--revison=[version of the project]:revision:' \
+ '(--revison)-r[version of the project]:revision:' \
+ '--sort=[set sorting type]:sorting type:(version date)' \
+ ':project name:_prcs_projects' \
+ '*:file or directory:_files'
+ ;;
+ merge)
+ _prcs_arguments \
+ '(-r)--revison=[version of the project]:revision:' \
+ '(--revison)-r[version of the project]:revision:' \
+ '(-s)--skilled-merge[turn off most of the safety features of merge]' \
+ '(--skilled-merge)-s[turn off most of the safety features of merge]' \
+ "(-u)--unlink[don't overwrite symbolic link references]" \
+ "(--unlink)-u[don't overwrite symbolic link references]" \
+ ':project name:_prcs_projects' \
+ '*:file or directory:_files'
+ ;;
+ package)
+ _prcs_arguments \
+ '(-r)--revison=[version of the project]:revision:' \
+ '(--revison)-r[version of the project]:revision:' \
+ '(-z)--compress=[compress the output]' \
+ '(--compress)-z[compress the output]' \
+ ':project name:_prcs_projects' \
+ ':file:_files'
+ ;;
+ populate)
+ _prcs_arguments \
+ '(-d)--delete=[perform optional deletions]' \
+ '(--delete)-d[perform optional deletions]' \
+ ':project name:_prcs_projects' \
+ '*:file or directory:_files'
+ ;;
+ rekey)
+ _prcs_arguments \
+ "(-u)--unlink[don't overwrite symbolic link references]" \
+ "(--unlink)-u[don't overwrite symbolic link references]" \
+ ':project name:_prcs_projects'
+ ;;
+ unpackage)
+ _prcs_arguments \
+ ':file:_files' \
+ ':project name:_prcs_projects'
+ ;;
+ *)
+ _message "unknown prcs command: $words[2]"
+ ;;
+ esac
+fi
--
Alexandre Duret-Lutz
Messages sorted by:
Reverse Date,
Date,
Thread,
Author