X-Git-Url: http://git.iain.cx/?p=profile.git;a=blobdiff_plain;f=.profile.d%2Fp4.bashrc;h=081e89b549162f043e6dd09819cac4baf4b96a2e;hp=b4134c084630b0ea0cecc9f65c40f33dd6f0b564;hb=a8e823fa2005ab190af0461c967f353b7dbb5a51;hpb=f1c41dc95f2d4fe411e00c35b0b7571178a149a1 diff --git a/.profile.d/p4.bashrc b/.profile.d/p4.bashrc index b4134c0..081e89b 100644 --- a/.profile.d/p4.bashrc +++ b/.profile.d/p4.bashrc @@ -1,3 +1,4 @@ +# profile-required: vim.bashrc if [ ! -z "$SUDO_USER" ]; then export P4USER=$SUDO_USER export P4TICKETS=/tmp/.p4tickets.$SUDO_USER @@ -7,17 +8,47 @@ fi export P4CONFIG=.p4config eval $(alias diff 2>/dev/null | sed 's/^alias diff/P4DIFF/') export P4DIFF="${P4DIFF:-diff} -u" -if [ -e "$HOME/.vim/script/p4" ]; then - export P4EDITOR="vim -S '$HOME/.vim/script/p4'" -else - export P4EDITOR=vim -fi +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="$p4vim -S '$p4script'" +export P4EDITOR if [ -z "$DISPLAY" ]; then - if [ -e "$HOME/.vim/script/p4" ]; then - export P4MERGE="vim -S '$HOME/.vim/script/p4'" + p4script=$(find_target_profile ".vim/script/merge") + if [ -n "$p4script" ]; then + 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 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 +}