-
-
Notifications
You must be signed in to change notification settings - Fork 680
/
mvim
executable file
·73 lines (64 loc) · 1.9 KB
/
mvim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/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. The
# early versions were not under version control. The last few versions before
# the git history are the work of Benji Fisher (16 May 2005) and Nico Weber and
# Bjorn Winckler (Aug 13 2007).
# Find Vim executable
orig_path="$(pwd -P)"
self_path="$0"
while [ -L "$self_path" ]; do # dereference links
link="$(basename "$self_path")"
cd "$(dirname "$self_path")"
self_path="$(readlink "$link")"
done
cd "$(dirname "$self_path")"
binary="$(dirname "$(pwd -P)")/MacOS/Vim"
cd "$orig_path"
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