-# $Id: p4.bashrc 151 2008-11-20 13:59:19Z iain $
+# profile-required: vim.bashrc
if [ ! -z "$SUDO_USER" ]; then
export P4USER=$SUDO_USER
export P4TICKETS=/tmp/.p4tickets.$SUDO_USER
export P4USER=$USER
fi
export P4CONFIG=.p4config
-export P4DIFF="diff -u"
-export P4EDITOR="vim -S '$HOME/.vim/script/p4'"
+eval $(alias diff 2>/dev/null | sed 's/^alias diff/P4DIFF/')
+export P4DIFF="${P4DIFF:-diff} -u"
+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
- export P4MERGE="vim -o -c '3wincmd j' -c 'wincmd L'"
+ p4script=$(find_target_profile ".vim/script/merge")
+ if [ -n "$p4script" ]; then
+ export P4MERGE="$p4vim -S '$p4script'"
+ else
+ 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
+}