X-Git-Url: http://git.iain.cx/?p=profile.git;a=blobdiff_plain;f=.profile.d%2Fp4.bashrc;h=081e89b549162f043e6dd09819cac4baf4b96a2e;hp=285095169f10c0172aa3c448ab732df58691145f;hb=a8e823fa2005ab190af0461c967f353b7dbb5a51;hpb=3bbd083d605c075a4c7735ae0c836a76e6a77873 diff --git a/.profile.d/p4.bashrc b/.profile.d/p4.bashrc index 2850951..081e89b 100644 --- a/.profile.d/p4.bashrc +++ b/.profile.d/p4.bashrc @@ -8,18 +8,47 @@ fi export P4CONFIG=.p4config eval $(alias diff 2>/dev/null | sed 's/^alias diff/P4DIFF/') export P4DIFF="${P4DIFF:-diff} -u" -P4EDITOR=vim +eval $(alias vim 2>/dev/null | sed 's/^alias vim/p4vim/') +p4vim=${p4vim:-vim} +P4EDITOR="$p4vim" p4script=$(find_target_profile ".vim/script/p4") -[ -n "$p4script" ] && P4EDITOR="vim -S '$p4script'" +[ -n "$p4script" ] && P4EDITOR="$p4vim -S '$p4script'" export P4EDITOR if [ -z "$DISPLAY" ]; then p4script=$(find_target_profile ".vim/script/merge") if [ -n "$p4script" ]; then - export P4MERGE="vim -S '$p4script'" + export P4MERGE="$p4vim -S '$p4script'" else - export P4MERGE="vim -o -c '3wincmd j' -c 'wincmd L'" + export P4MERGE="$p4vim -o -c '3wincmd j' -c 'wincmd L'" fi else export P4MERGE="p4merge" fi -unset p4script +unset p4script p4vim + +# p4: Wrapper around p4 to add some other features. +function p4() { + if [ -z "$P4OPTSTRING" -a ! "${P4OPTSTRING+xxx}" = "xxx" ]; then + local p4=$(which p4) + P4OPTSTRING="$(strings $p4 | grep H:)" + fi + + local opts= + OPTIND=1 + if [ -n "$P4OPTSTRING" ]; then + while getopts "$P4OPTSTRING" opt; do + [ "$opt" = "?" ] && continue + opts="$opts -$opt $OPTARG" + done + shift $((OPTIND-1)) + fi + + command="$1"; shift + custom=${PROFILE_HOME:-~}/opt/p4/p4-"$command" + + if [ -x "$custom" ]; then + "$custom" $opts "$command" ${1+"$@"} + else + ( exec p4 $opts "$command" ${1+"$@"} ) + fi +}