about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Completion/Unix/Command/_perforce115
2 files changed, 102 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 8996a6c58..64e6e6dd6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2004-09-21  Peter Stephenson  <pws@csr.com>
 
+	* unposted: Completion/Unix/Command/_perforce: updated for
+	Perforce release 2004.2.
+
 	* 20398: Src/Zle/zle_main.c: allow clean exit from within
 	a zle widget function.
 
diff --git a/Completion/Unix/Command/_perforce b/Completion/Unix/Command/_perforce
index b7b429c17..13c247183 100644
--- a/Completion/Unix/Command/_perforce
+++ b/Completion/Unix/Command/_perforce
@@ -1,6 +1,7 @@
 #compdef p4 -value-,P4CLIENT,-default- -value-,P4PORT,-default- -value-,P4MERGE,-default- -value-,P4USER,-default-
 
 # Increasingly loosely based on _cvs version 1.17.
+# Completions currently based on Perforce release 2004.2.
 
 # Styles, tags and contexts
 # =========================
@@ -1351,9 +1352,11 @@ _perforce_cmd_admin() {
 
 (( $+functions[_perforce_cmd_annotate] )) ||
 _perforce_cmd_annotate() {
-  # If you don't have this, it's new in release 2002.2.
+  # New in release 2002.2.
+  # -c was new in about 2003.2.
   _arguments -s : \
     '-a[all, show both added and deleted lines]' \
+    '-c[output change numbers instead of revisions]' \
     '-q[quiet, suppress one-line file header]' \
     '*::file:_perforce_files -tR'
 }
@@ -1396,6 +1399,7 @@ _perforce_cmd_change() {
 _perforce_cmd_changes() {
   _arguments -s : \
     '-i[include integrated changes]' \
+    '-t[output time as well as date]' \
     '-l[long output]' \
     '-c+[select by client]:client:_perforce_clients' \
     '-m+[most recent N changes]:max changes: ' \
@@ -1408,7 +1412,7 @@ _perforce_cmd_changes() {
 (( $+functions[_perforce_cmd_client] )) ||
 _perforce_cmd_client() {
   _arguments -s : \
-    '-f[force modification by superuser]' \
+    '(-o)-f[force modification by superuser]' \
     '-t[use template]:template client:_perforce_clients' \
     '(-o -i -t)-d[delete client]' \
     '(-d -i -f)-o[print to standard output]' \
@@ -1480,7 +1484,7 @@ _perforce_cmd_diff() {
   local limit
   [[ ${words[(I)-(f|sd|se)]} -eq 0 ]] && limit=" -to"
   _arguments -s : \
-    '-d-[select diff option]:diff option:((b\:ignore\ blanks c\:context n\:RCS s\:summary u\:unified w\:ignore\ all\ whitespace))' \
+    '-d-[select diff option]:diff option:((b\:ignore\ blanks c\:context l\:ignore\ line\ endings n\:RCS s\:summary u\:unified w\:ignore\ all\ whitespace))' \
     '-f[diff every file]' \
     '(-sd -se -sr)-sa[opened files, different or missing]' \
     '(-sa -se -sr)-sd[unopened files, missing]' \
@@ -1575,13 +1579,16 @@ _perforce_cmd_flush() {
 (( $+functions[_perforce_cmd_fstat] )) ||
 _perforce_cmd_fstat() {
   _arguments -s : \
-    '-c+[select by change]:change:_perforce_changes -ts' \
-    '-C[select mapped files]' \
-    '-H[select synced files]' \
-    '-W[select opened files]' \
-    '-l[include fileSize, possibly slow]' \
-    '-P[output clientFile in full Perforce syntax]' \
-    '-s[shorten, no client-related data]' \
+    '-c+[affected since change]:change:_perforce_changes -ts' \
+    '-e+[affected by change]:change:_perforce_changes -ts' \
+    '-C[select mapped files (-Rc)]' \
+    '-H[select synced files (-Rh)]' \
+    '-W[select opened files (-Ro)]' \
+    '-l[include fileSize, possibly slow (-Ol)]' \
+    '-O-[select output type]:output type:((l\:fileSize p\:client\ path\ format r\:pending\ integrations s\:exclude\ local\ path))' \
+    '-P[output clientFile in full Perforce syntax (-Op)]' \
+    '-R-[restrict selected files]:restriction:((c\:mapped\ in\ client h\:synced\ to\ client n\:not\ synced\ to\ head o\:opened r\:resolved u\:unresolved))' \
+    '-s[shorten, no client-related data (-Os)]' \
     '*::file:_perforce_files'
 }
 
@@ -1643,12 +1650,19 @@ _perforce_cmd_integrate() {
     '-b[select branch]:branch:_perforce_branches' \
     '-c[select change for integration]:change:_perforce_changes -tp' \
     '-f[force reintegration]' \
-    '-d[reintegrated deleted files]' \
+    '-d[reintegrate deleted files]' \
+    '-D-[specify allowed deletions]:deletion type:((
+t\:rebranch\ on\ deleted\ file
+s\:delete\ modified\ target\ file
+i\:ignore\ readded\ source\ file
+))' \
     '-h[integrate to revision had on client]' \
     '-i[integrate if no common file base]' \
+    '-I[same as -i from 2004.2]' \
     '-n[no action, dummy run]' \
+    '-o[display base file name for subsequent resolve]' \
     '-r[reverse direction of integration with branch]' \
-    '-s[select source]:source file:_perforce_files -tR' \
+    '-s[select source with -b]:source file:_perforce_files -tR' \
     '-t[propagate type changes]' \
     '-v[leave newly branched files uncopied till sync]' \
     "1:file:_perforce_files$range" \
@@ -1658,7 +1672,10 @@ _perforce_cmd_integrate() {
 
 (( $+functions[_perforce_cmd_integrated] )) ||
 _perforce_cmd_integrated() {
-  _perforce_files -ti
+  _arguments -s : \
+    '-r[reverse mapping in branch view with -b]' \
+    '-b[select files integrated via branch]:branch:_perforce_branches' \
+    '*::file:_perforce_files -ti'
 }
 
 
@@ -1680,8 +1697,8 @@ _perforce_cmd_jobs() {
     '-i[included integrated changes]' \
     '-l[long output, full job descriptions]' \
     '-r[reverse order of job names]' \
-    '-m[limit to most recent N jobs]:most recent jobs: ' \
-    '(-e -i -l -m)-R[]' \
+    '-m[limit to most recent N jobs]:number of most recent jobs: ' \
+    '(-e -i -l -m)-R[rebuild jobs table on upgrade]' \
     '*::file:_perforce_files -tR'
 }
 
@@ -1740,6 +1757,52 @@ _perforce_cmd_logger() {
 }
 
 
+
+(( $+functions[_perforce_cmd_login] )) ||
+_perforce_cmd_login() {
+  _arguments -s : \
+    '-a[ticket valid on all machines]' \
+    '-p[display ticket, do not store]' \
+    '-s[show status of ticket]' \
+    '(-s)1::user:_perforce_users'
+}
+
+
+(( $+functions[_perforce_cmd_logout] )) ||
+_perforce_cmd_logout() {
+  _arguments -s : \
+    '-a[invalidate ticket on server]'
+}
+
+
+(( $+functions[_perforce_cmd_monitor] )) ||
+_perforce_cmd_monitor() {
+  if (( CURRENT > 2 )); then
+    case $words[2] in
+      (show)
+      shift words
+      (( CURRENT-- ))
+      _arguments -s : \
+        '-a[show command arguments]' \
+        '-e[show command environment]' \
+        '-l[long output format]'
+      ;;
+
+      (terminate|clear)
+      _message "process ID"
+      ;;
+
+      (*)
+      _message "no such monitor command: $words[1]"
+      ;;
+    esac
+  else
+    local expl
+    _wanted monitor-command expl 'monitor command' compadd show terminate clear
+  fi
+}
+
+
 (( $+functions[_perforce_cmd_obliterate] )) ||
 _perforce_cmd_obliterate() {
   _message "obliterate is dangerous: you're on your own here."
@@ -1798,6 +1861,7 @@ _perforce_cmd_resolve() {
     '-d-[select diff option]:diff option:((b\:ignore\ blanks w\:ignore\ all\ whitespace))' \
     '-f[force re-resolution]' \
     '-n[no action, just list]' \
+    '-o[display base file name and revision for merge]' \
     '-t[force textual merge on binary files]' \
     '-v[verbose, mark all changes]' \
     '*::file:_perforce_files -to'
@@ -1806,7 +1870,9 @@ _perforce_cmd_resolve() {
 
 (( $+functions[_perforce_cmd_resolved] )) ||
 _perforce_cmd_resolved() {
-  _perforce_files -tr
+  _arguments -s : \
+    '-o[report revision used as base for resolve]' \
+    '*::file:_perforce_files -tr'
 }
 
 
@@ -1866,6 +1932,16 @@ _perforce_cmd_sync() {
 }
 
 
+(( $+functions[_perforce_cmd_tag] )) ||
+_perforce_cmd_tag() {
+  _arguments -s : \
+    '-d[delete association between label and files]' \
+    '-n[show what files would be tagged]' \
+    '-l[specify label]:label:_perforce_labels' \
+    '*::file:_perforce_files -tR'
+}
+
+
 (( $+functions[_perforce_cmd_triggers] )) ||
 _perforce_cmd_triggers() {
   _arguments -s : \
@@ -1874,6 +1950,13 @@ _perforce_cmd_triggers() {
 }
 
 
+(( $+functions[_perforce_cmd_tickets] )) ||
+_perforce_cmd_tickets() {
+  # No arguments.
+  _arguments -s :
+}
+
+
 (( $+functions[_perforce_cmd_typemap] )) ||
 _perforce_cmd_typemap() {
   _arguments -s : \