summaryrefslogtreecommitdiffstats
path: root/completions/p4
diff options
context:
space:
mode:
Diffstat (limited to 'completions/p4')
-rw-r--r--completions/p451
1 files changed, 51 insertions, 0 deletions
diff --git a/completions/p4 b/completions/p4
new file mode 100644
index 0000000..ed5f20c
--- /dev/null
+++ b/completions/p4
@@ -0,0 +1,51 @@
+# Perforce completion -*- shell-script -*-
+# by Frank Cusack <frank@google.com>
+
+_p4()
+{
+ local cur prev words cword
+ _init_completion || return
+
+ local p4commands p4filetypes
+
+ # rename isn't really a command
+ p4commands="$(p4 help commands 2>/dev/null | awk 'NF>3 {print $1}')"
+ p4filetypes="ctext cxtext ktext kxtext ltext tempobj ubinary \
+ uresource uxbinary xbinary xltext xtempobj xtext \
+ text binary resource"
+
+ if ((cword == 1)); then
+ COMPREPLY=($(compgen -W "$p4commands" -- "$cur"))
+ elif ((cword == 2)); then
+ case $prev in
+ help)
+ COMPREPLY=($(compgen -W "simple commands environment
+ filetypes jobview revisions usage views $p4commands" \
+ -- "$cur"))
+ ;;
+ admin)
+ COMPREPLY=($(compgen -W "checkpoint stop" -- "$cur"))
+ ;;
+ *) ;;
+
+ esac
+ elif ((cword > 2)); then
+ case $prev in
+ -t)
+ case ${words[cword - 2]} in
+ add | edit | reopen)
+ COMPREPLY=($(compgen -W "$p4filetypes" -- "$cur"))
+ ;;
+ *) ;;
+
+ esac
+ ;;
+ *) ;;
+
+ esac
+ fi
+
+} &&
+ complete -F _p4 -o default p4 g4
+
+# ex: filetype=sh