annotate src/vimtutor @ 34686:83875247fbc0 v9.1.0224

patch 9.1.0224: cursor may move too many lines over "right" & "below" virt text Commit: https://github.com/vim/vim/commit/515f734e687f28f7199b2a8042197624d9f3ec15 Author: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Date: Thu Mar 28 12:01:14 2024 +0100 patch 9.1.0224: cursor may move too many lines over "right" & "below" virt text Problem: If a line has "right" & "below" virtual text properties, where the "below" property may be stored first due to lack of ordering between them, then the line height is calculated to be 1 more and causes the cursor to far over the line. Solution: Remove some unnecessary setting of a `next_right_goes_below = TRUE` flag for "below" and "above" text properties. (Dylan Thacker-Smith) I modified a regression test I recently added to cover this case, leveraging the fact that "after", "right" & "below" text properties are being stored in the reverse of the order they are added in. The previous version of this regression test was crafted to workaround this issue so it can be addressed by this separate patch. closes: #14317 Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 28 Mar 2024 12:15:03 +0100
parents d4faa2c5211b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25700
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
1 #!/bin/sh
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 # Start Vim on a copy of the tutor file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4
1582
73c5752b957d updated for version 7.1-295
vimboss
parents: 1316
diff changeset
5 # Usage: vimtutor [-g] [xx]
73c5752b957d updated for version 7.1-295
vimboss
parents: 1316
diff changeset
6 # Where optional argument -g starts vimtutor in gvim (GUI) instead of vim.
73c5752b957d updated for version 7.1-295
vimboss
parents: 1316
diff changeset
7 # and xx is a language code like "es" or "nl".
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 # When an argument is given, it tries loading that tutor.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 # When this fails or no argument was given, it tries using 'v:lang'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 # When that also fails, it uses the English version.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11
1582
73c5752b957d updated for version 7.1-295
vimboss
parents: 1316
diff changeset
12 # Vim could be called "vim" or "vi". Also check for "vimN", for people who
73c5752b957d updated for version 7.1-295
vimboss
parents: 1316
diff changeset
13 # have Vim installed with its version number.
10214
3a6b2d4c71d6 commit https://github.com/vim/vim/commit/bbe917d9d465a66a29e38879c7f66df51b0b0dc3
Christian Brabandt <cb@256bit.org>
parents: 1582
diff changeset
14 # We anticipate up to a future Vim 8.1 version :-).
3a6b2d4c71d6 commit https://github.com/vim/vim/commit/bbe917d9d465a66a29e38879c7f66df51b0b0dc3
Christian Brabandt <cb@256bit.org>
parents: 1582
diff changeset
15 seq="vim vim81 vim80 vim8 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
25700
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
16 if test "$1" = "-g"; then
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
17 # Try to use the GUI version of Vim if possible, it will fall back
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
18 # on Vim if Gvim is not installed.
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
19 seq="gvim gvim81 gvim80 gvim8 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
20 shift
1582
73c5752b957d updated for version 7.1-295
vimboss
parents: 1316
diff changeset
21 fi
73c5752b957d updated for version 7.1-295
vimboss
parents: 1316
diff changeset
22
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 xx=$1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 export xx
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 # We need a temp file for the copy. First try using a standard command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 tmp="${TMPDIR-/tmp}"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 TUTORCOPY=`mktemp $tmp/tutorXXXXXX || tempfile -p tutor || echo none`
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 # If the standard commands failed then create a directory to put the copy in.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 # That is a secure way to make a temp file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 if test "$TUTORCOPY" = none; then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 tmpdir=$tmp/vimtutor$$
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 OLD_UMASK=`umask`
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 umask 077
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 getout=no
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 mkdir $tmpdir || getout=yes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 umask $OLD_UMASK
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 if test $getout = yes; then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 echo "Could not create directory for tutor copy, exiting."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 exit 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 fi
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 TUTORCOPY=$tmpdir/tutorcopy
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 touch $TUTORCOPY
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 TODELETE=$tmpdir
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 TODELETE=$TUTORCOPY
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 fi
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 export TUTORCOPY
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 # remove the copy of the tutor on exit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 trap "rm -rf $TODELETE" 0 1 2 3 9 11 13 15
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54
1316
469c42f90fda updated for version 7.1-030
vimboss
parents: 7
diff changeset
55 for i in $seq; do
25700
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
56 testvim=$(which $i 2>/dev/null)
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
57 if test -f "$testvim"; then
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
58 VIM=$i
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
59 break
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
60 fi
1316
469c42f90fda updated for version 7.1-030
vimboss
parents: 7
diff changeset
61 done
469c42f90fda updated for version 7.1-030
vimboss
parents: 7
diff changeset
62
469c42f90fda updated for version 7.1-030
vimboss
parents: 7
diff changeset
63 # When no Vim version was found fall back to "vim", you'll get an error message
469c42f90fda updated for version 7.1-030
vimboss
parents: 7
diff changeset
64 # below.
469c42f90fda updated for version 7.1-030
vimboss
parents: 7
diff changeset
65 if test -z "$VIM"; then
25700
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
66 VIM=vim
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 fi
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 # Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 # The script tutor.vim tells Vim which file to copy
1582
73c5752b957d updated for version 7.1-295
vimboss
parents: 1316
diff changeset
71 $VIM -f -u NONE -c 'so $VIMRUNTIME/tutor/tutor.vim'
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72
13662
5eac31544dd0 patch 8.0.1703: in the tutor 'showcmd' is not set
Christian Brabandt <cb@256bit.org>
parents: 10214
diff changeset
73 # Start vim without any .vimrc, set 'nocompatible' and 'showcmd'
25700
d4faa2c5211b Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 13662
diff changeset
74 $VIM -f -u NONE -c "set nocp showcmd" "$TUTORCOPY"