Add the vimtutor shell script
authorCurtis Rueden <ctrueden@wisc.edu>
Thu, 19 Jun 2014 20:47:41 +0000 (19 15:47 -0500)
committerCurtis Rueden <ctrueden@wisc.edu>
Thu, 19 Jun 2014 20:59:58 +0000 (19 15:59 -0500)
This is the exact same vimtutor from the vim source repository:

  https://vim.googlecode.com/hg/src/vimtutor

It works as is in MSYS, although there are a couple of warnings:

  /bin/vimtutor: line 28: mktemp: command not found
  /bin/vimtutor: line 28: tempfile: command not found

Since these utilities are not present.

However, the script has a contingency for that scenario, and manages to
create a temporary copy of the tutor file anyway, so all is well.

Signed-off-by: Curtis Rueden <ctrueden@wisc.edu>
bin/vimtutor [new file with mode: 0644]

diff --git a/bin/vimtutor b/bin/vimtutor
new file mode 100644 (file)
index 0000000..70d9ec7
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+
+# Start Vim on a copy of the tutor file.
+
+# Usage: vimtutor [-g] [xx]
+# Where optional argument -g starts vimtutor in gvim (GUI) instead of vim.
+# and xx is a language code like "es" or "nl".
+# When an argument is given, it tries loading that tutor.
+# When this fails or no argument was given, it tries using 'v:lang'
+# When that also fails, it uses the English version.
+
+# Vim could be called "vim" or "vi".  Also check for "vimN", for people who
+# have Vim installed with its version number.
+# We anticipate up to a future Vim 8 version :-).
+seq="vim vim8 vim75 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
+if test "$1" = "-g"; then 
+  # Try to use the GUI version of Vim if possible, it will fall back
+  # on Vim if Gvim is not installed.
+  seq="gvim gvim8 gvim75 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
+  shift
+fi
+
+xx=$1
+export xx
+
+# We need a temp file for the copy.  First try using a standard command.
+tmp="${TMPDIR-/tmp}"
+TUTORCOPY=`mktemp $tmp/tutorXXXXXX || tempfile -p tutor || echo none`
+
+# If the standard commands failed then create a directory to put the copy in.
+# That is a secure way to make a temp file.
+if test "$TUTORCOPY" = none; then
+       tmpdir=$tmp/vimtutor$$
+       OLD_UMASK=`umask`
+       umask 077
+       getout=no
+       mkdir $tmpdir || getout=yes
+       umask $OLD_UMASK
+       if test $getout = yes; then
+               echo "Could not create directory for tutor copy, exiting."
+               exit 1
+       fi
+       TUTORCOPY=$tmpdir/tutorcopy
+       touch $TUTORCOPY
+       TODELETE=$tmpdir
+else
+       TODELETE=$TUTORCOPY
+fi
+
+export TUTORCOPY
+
+# remove the copy of the tutor on exit
+trap "rm -rf $TODELETE" 0 1 2 3 9 11 13 15
+
+for i in $seq; do
+       testvim=`which $i 2>/dev/null`
+       if test -f "$testvim"; then
+               VIM=$i
+               break
+       fi
+done
+
+# When no Vim version was found fall back to "vim", you'll get an error message
+# below.
+if test -z "$VIM"; then
+       VIM=vim
+fi
+
+# Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
+# The script tutor.vim tells Vim which file to copy
+$VIM -f -u NONE -c 'so $VIMRUNTIME/tutor/tutor.vim'
+
+# Start vim without any .vimrc, set 'nocompatible'
+$VIM -f -u NONE -c "set nocp" $TUTORCOPY