1#! /bin/sh
2
3# Start Vim on a copy of the tutor file.
4
5# Usage: vimtutor [-g] [xx]
6# Where optional argument -g starts vimtutor in gvim (GUI) instead of vim.
7# and xx is a language code like "es" or "nl".
8# When an argument is given, it tries loading that tutor.
9# When this fails or no argument was given, it tries using 'v:lang'
10# When that also fails, it uses the English version.
11
12# Vim could be called "vim" or "vi".  Also check for "vimN", for people who
13# have Vim installed with its version number.
14# We anticipate up to a future Vim 8 version :-).
15seq="vim vim8 vim75 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
16if test "$1" = "-g"; then 
17  # Try to use the GUI version of Vim if possible, it will fall back
18  # on Vim if Gvim is not installed.
19  seq="gvim gvim8 gvim75 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
20  shift
21fi
22
23xx=$1
24export xx
25
26# We need a temp file for the copy.  First try using a standard command.
27tmp="${TMPDIR-/tmp}"
28TUTORCOPY=`mktemp $tmp/tutorXXXXXX || tempfile -p tutor || echo none`
29
30# If the standard commands failed then create a directory to put the copy in.
31# That is a secure way to make a temp file.
32if test "$TUTORCOPY" = none; then
33	tmpdir=$tmp/vimtutor$$
34	OLD_UMASK=`umask`
35	umask 077
36	getout=no
37	mkdir $tmpdir || getout=yes
38	umask $OLD_UMASK
39	if test $getout = yes; then
40		echo "Could not create directory for tutor copy, exiting."
41		exit 1
42	fi
43	TUTORCOPY=$tmpdir/tutorcopy
44	touch $TUTORCOPY
45	TODELETE=$tmpdir
46else
47	TODELETE=$TUTORCOPY
48fi
49
50export TUTORCOPY
51
52# remove the copy of the tutor on exit
53trap "rm -rf $TODELETE" 0 1 2 3 9 11 13 15
54
55for i in $seq; do
56	testvim=`which $i 2>/dev/null`
57	if test -f "$testvim"; then
58		VIM=$i
59		break
60	fi
61done
62
63# When no Vim version was found fall back to "vim", you'll get an error message
64# below.
65if test -z "$VIM"; then
66	VIM=vim
67fi
68
69# Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
70# The script tutor.vim tells Vim which file to copy
71$VIM -f -u NONE -c 'so $VIMRUNTIME/tutor/tutor.vim'
72
73# Start vim without any .vimrc, set 'nocompatible'
74$VIM -f -u NONE -c "set nocp" $TUTORCOPY
75