about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-01-05 13:30:16 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-01-05 13:30:16 +0000
commit4a7b67c55a0f3a30866dafa6e26faf14ab53941b (patch)
tree82d5255f58950746cdecad23a98e1a72c446cec8
parent870350b116523e9d8d2dbbccc6c6bbc5ae433456 (diff)
downloadzsh-4a7b67c55a0f3a30866dafa6e26faf14ab53941b.tar.gz
zsh-4a7b67c55a0f3a30866dafa6e26faf14ab53941b.tar.xz
zsh-4a7b67c55a0f3a30866dafa6e26faf14ab53941b.zip
zsh-workers/9216
-rw-r--r--Completion/User/.distfiles2
-rw-r--r--Completion/User/_prcs203
-rw-r--r--Src/Zle/computil.c4
3 files changed, 206 insertions, 3 deletions
diff --git a/Completion/User/.distfiles b/Completion/User/.distfiles
index 1235db937..c3f78d24d 100644
--- a/Completion/User/.distfiles
+++ b/Completion/User/.distfiles
@@ -5,7 +5,7 @@ DISTFILES_SRC='
     _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
diff --git a/Completion/User/_prcs b/Completion/User/_prcs
new file mode 100644
index 000000000..30c76e791
--- /dev/null
+++ b/Completion/User/_prcs
@@ -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
diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c
index bfcaa4b22..021dff6bf 100644
--- a/Src/Zle/computil.c
+++ b/Src/Zle/computil.c
@@ -640,9 +640,9 @@ parse_cadef(char *nam, char **args)
 		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])