xref: /vim-8.2.3635/src/vimtutor (revision 1315349f)
1071d4279SBram Moolenaar#! /bin/sh
2071d4279SBram Moolenaar
3071d4279SBram Moolenaar# Start Vim on a copy of the tutor file.
4071d4279SBram Moolenaar
5071d4279SBram Moolenaar# Usage: vimtutor [xx], where xx is a language code like "es" or "nl".
6071d4279SBram Moolenaar# When an argument is given, it tries loading that tutor.
7071d4279SBram Moolenaar# When this fails or no argument was given, it tries using 'v:lang'
8071d4279SBram Moolenaar# When that also fails, it uses the English version.
9071d4279SBram Moolenaar
10071d4279SBram Moolenaarxx=$1
11071d4279SBram Moolenaarexport xx
12071d4279SBram Moolenaar
13071d4279SBram Moolenaar# We need a temp file for the copy.  First try using a standard command.
14071d4279SBram Moolenaartmp="${TMPDIR-/tmp}"
15071d4279SBram MoolenaarTUTORCOPY=`mktemp $tmp/tutorXXXXXX || tempfile -p tutor || echo none`
16071d4279SBram Moolenaar
17071d4279SBram Moolenaar# If the standard commands failed then create a directory to put the copy in.
18071d4279SBram Moolenaar# That is a secure way to make a temp file.
19071d4279SBram Moolenaarif test "$TUTORCOPY" = none; then
20071d4279SBram Moolenaar	tmpdir=$tmp/vimtutor$$
21071d4279SBram Moolenaar	OLD_UMASK=`umask`
22071d4279SBram Moolenaar	umask 077
23071d4279SBram Moolenaar	getout=no
24071d4279SBram Moolenaar	mkdir $tmpdir || getout=yes
25071d4279SBram Moolenaar	umask $OLD_UMASK
26071d4279SBram Moolenaar	if test $getout = yes; then
27071d4279SBram Moolenaar		echo "Could not create directory for tutor copy, exiting."
28071d4279SBram Moolenaar		exit 1
29071d4279SBram Moolenaar	fi
30071d4279SBram Moolenaar	TUTORCOPY=$tmpdir/tutorcopy
31071d4279SBram Moolenaar	touch $TUTORCOPY
32071d4279SBram Moolenaar	TODELETE=$tmpdir
33071d4279SBram Moolenaarelse
34071d4279SBram Moolenaar	TODELETE=$TUTORCOPY
35071d4279SBram Moolenaarfi
36071d4279SBram Moolenaar
37071d4279SBram Moolenaarexport TUTORCOPY
38071d4279SBram Moolenaar
39071d4279SBram Moolenaar# remove the copy of the tutor on exit
40071d4279SBram Moolenaartrap "rm -rf $TODELETE" 0 1 2 3 9 11 13 15
41071d4279SBram Moolenaar
42*1315349fSBram Moolenaar# Vim could be called "vim" or "vi".  Also check for "vimN", for people who
43*1315349fSBram Moolenaar# have Vim installed with its version number.
44*1315349fSBram Moolenaar# We anticipate up to a future Vim 8 version :-).
45*1315349fSBram Moolenaarseq="vim vim8 vim75 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
46*1315349fSBram Moolenaarfor i in $seq; do
47*1315349fSBram Moolenaar	testvim=`which $i 2>/dev/null`
48071d4279SBram Moolenaar	if test -f "$testvim"; then
49*1315349fSBram Moolenaar		VIM=$i
50*1315349fSBram Moolenaar		break
51071d4279SBram Moolenaar	fi
52*1315349fSBram Moolenaardone
53*1315349fSBram Moolenaar
54*1315349fSBram Moolenaar# When no Vim version was found fall back to "vim", you'll get an error message
55*1315349fSBram Moolenaar# below.
56*1315349fSBram Moolenaarif test -z "$VIM"; then
57*1315349fSBram Moolenaar	VIM=vim
58071d4279SBram Moolenaarfi
59071d4279SBram Moolenaar
60071d4279SBram Moolenaar# Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
61071d4279SBram Moolenaar# The script tutor.vim tells Vim which file to copy
62071d4279SBram Moolenaar$VIM -u NONE -c 'so $VIMRUNTIME/tutor/tutor.vim'
63071d4279SBram Moolenaar
64071d4279SBram Moolenaar# Start vim without any .vimrc, set 'nocompatible'
65071d4279SBram Moolenaar$VIM -u NONE -c "set nocp" $TUTORCOPY
66