summaryrefslogtreecommitdiff
path: root/completions/p4
diff options
context:
space:
mode:
Diffstat (limited to 'completions/p4')
-rw-r--r--completions/p458
1 files changed, 58 insertions, 0 deletions
diff --git a/completions/p4 b/completions/p4
new file mode 100644
index 00000000..59b02c1d
--- /dev/null
+++ b/completions/p4
@@ -0,0 +1,58 @@
+# Perforce completion by Frank Cusack <frank@google.com>
+
+have p4 &&
+_p4()
+{
+ local cur prev words cword p4commands p4filetypes
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev words cword
+
+ # rename isn't really a command
+ p4commands="$( p4 help commands | awk 'NF>3 {print $1}' )"
+ p4filetypes="ctext cxtext ktext kxtext ltext tempobj ubinary \
+ uresource uxbinary xbinary xltext xtempobj xtext \
+ text binary resource"
+
+ if [ $cword -eq 1 ]; then
+ COMPREPLY=( $( compgen -W "$p4commands" -- "$cur" ) )
+ elif [ $cword -eq 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 -gt 2 ]; then
+ case $prev in
+ -t)
+ case ${words[$cword-2]} in
+ add|edit|reopen)
+ COMPREPLY=( $( compgen -W "$p4filetypes" -- "$cur") )
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ fi
+
+ return 0
+} &&
+complete -F _p4 -o default p4 g4
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh