complete-p4 822 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # - PERFORCE {{{ -
  2. _p4commands() {
  3. p4 help commands | sed -re "s/^\t+(\w+)\s+.+/\1/" | sed -re "s/^\s.*//"
  4. }
  5. _p4opened() {
  6. p4 opened 2>/dev/null | sed -rn 's/.*\/(.*\..*)#.*/\1/p'
  7. }
  8. _complete_p4(){
  9. local cur
  10. cur=${COMP_WORDS[COMP_CWORD]}
  11. prev=${COMP_WORDS[COMP_CWORD-1]}
  12. case "$prev" in
  13. p4|perf)
  14. COMPREPLY=( $(_p4commands | grep -E "^$cur") );;
  15. diff|revert|pd)
  16. COMPREPLY=( $(_p4opened | grep -E "^$cur") );;
  17. add|delete|edit|pe)
  18. #COMPREPLY=( $(ls | grep -v "$(p4opened | sed 's/\n/\|/')"));;
  19. COMPREPLY=( $(uniq -u \
  20. <( sort <(ls) <(_p4opened) ) \
  21. | grep -E "^$cur" ) );;
  22. *)
  23. COMPREPLY=( $( compgen -f ${COMP_WORDS[COMP_CWORD]} ) );;
  24. esac
  25. return 0
  26. }
  27. complete -F _complete_p4 p4 perf pe pd
  28. # - }}} -