From 3417d483e33bb2bec1eddbc4a56f74e136477186 Mon Sep 17 00:00:00 2001 From: Kazuki Sakamoto Date: Tue, 2 May 2017 10:24:05 -0700 Subject: [PATCH] Add mvim script for MacVim.app/Contents/bin/mvim --- src/MacVim/mvim.sh | 77 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 src/MacVim/mvim.sh diff --git a/src/MacVim/mvim.sh b/src/MacVim/mvim.sh new file mode 100755 index 0000000000..d4fda6ca34 --- /dev/null +++ b/src/MacVim/mvim.sh @@ -0,0 +1,77 @@ +#!/bin/sh +# +# This shell script passes all its arguments to the binary inside the +# MacVim.app application bundle. If you make links to this script as view, +# gvim, etc., then it will peek at the name used to call it and set options +# appropriately. +# +# Based on a script by Wout Mertens and suggestions from Laurent Bihanic. This +# version is the fault of Benji Fisher, 16 May 2005 (with modifications by Nico +# Weber and Bjorn Winckler, Aug 13 2007). +# + +# Find Vim executable +if [ -L $0 ]; then + # readlink -f + curdir=`pwd -P` + self_path=$0 + cd `dirname $self_path` + while [ -L $self_path ]; do + self_path=`readlink $self_path` + cd `dirname $self_path` + self_path=`basename $self_path` + done + binary="`pwd -P`/../MacOS/Vim" + cd $curdir +else + binary="`dirname "$0"`/../MacOS/Vim" +fi +if ! [ -x $binary ]; then + echo "Sorry, cannot find Vim executable." + exit 1 +fi + +# Next, peek at the name used to invoke this script, and set options +# accordingly. + +name="`basename "$0"`" +gui= +opts= + +# GUI mode, implies forking +case "$name" in m*|g*|rm*|rg*) gui=true ;; esac + +# Logged in over SSH? No gui. +if [ -n "${SSH_CONNECTION}" ]; then + gui= +fi + +# Restricted mode +case "$name" in r*) opts="$opts -Z";; esac + +# vimdiff, view, and ex mode +case "$name" in + *vimdiff) + opts="$opts -dO" + ;; + *view) + opts="$opts -R" + ;; + *ex) + opts="$opts -e" + ;; +esac + +# Last step: fire up vim. +# The program should fork by default when started in GUI mode, but it does +# not; we work around this when this script is invoked as "gvim" or "rgview" +# etc., but not when it is invoked as "vim -g". +if [ "$gui" ]; then + # Note: this isn't perfect, because any error output goes to the + # terminal instead of the console log. + # But if you use open instead, you will need to fully qualify the + # path names for any filenames you specify, which is hard. + exec "$binary" -g $opts ${1:+"$@"} +else + exec "$binary" $opts ${1:+"$@"} +fi