annotate src/testdir/test_scroll_opt.vim @ 32541:75e56c94316d v9.0.1602

patch 9.0.1602: stray character visible if marker on top of double-wide char Commit: https://github.com/vim/vim/commit/ecb87dd7d3f7b9291092a7dd8fae1e59b9903252 Author: zeertzjq <zeertzjq@outlook.com> Date: Sat Jun 3 19:45:06 2023 +0100 patch 9.0.1602: stray character visible if marker on top of double-wide char Problem: Stray character is visible if 'smoothscroll' marker is displayed on top of a double-wide character. Solution: When overwriting a double-width character with the 'smoothscroll' marker clear the second half. (closes #12469)
author Bram Moolenaar <Bram@vim.org>
date Sat, 03 Jun 2023 21:00:04 +0200
parents c89816c3e2d7
children ca42967a3253
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30610
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
1 " Test for reset 'scroll' and 'smoothscroll'
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
2
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
3 source check.vim
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
4 source screendump.vim
31154
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
5 source mouse.vim
12718
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 func Test_reset_scroll()
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 let scr = &l:scroll
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 setlocal scroll=1
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 setlocal scroll&
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 call assert_equal(scr, &l:scroll)
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 setlocal scroll=1
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 setlocal scroll=0
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 call assert_equal(scr, &l:scroll)
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 try
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 execute 'setlocal scroll=' . (winheight(0) + 1)
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 " not reached
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 call assert_false(1)
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 catch
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 call assert_exception('E49:')
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 endtry
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 split
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28 let scr = &l:scroll
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 setlocal scroll=1
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
31 setlocal scroll&
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 call assert_equal(scr, &l:scroll)
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34 setlocal scroll=1
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
35 setlocal scroll=0
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
36 call assert_equal(scr, &l:scroll)
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 quit!
f8f505ffc0a6 patch 8.0.1237: ":set scroll&" often gives an error
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
39 endfunc
21765
08940efa6b4e patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents: 12718
diff changeset
40
31954
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
41 func Test_scolloff_even_line_count()
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
42 new
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
43 resize 6
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
44 setlocal scrolloff=3
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
45 call setline(1, range(20))
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
46 normal 2j
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
47 call assert_equal(1, getwininfo(win_getid())[0].topline)
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
48 normal j
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
49 call assert_equal(1, getwininfo(win_getid())[0].topline)
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
50 normal j
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
51 call assert_equal(2, getwininfo(win_getid())[0].topline)
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
52 normal j
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
53 call assert_equal(3, getwininfo(win_getid())[0].topline)
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
54
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
55 bwipe!
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
56 endfunc
d8fdafc4b390 patch 9.0.1309: scrolling two lines with even line count and 'scrolloff' set
Bram Moolenaar <Bram@vim.org>
parents: 31849
diff changeset
57
30620
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
58 func Test_CtrlE_CtrlY_stop_at_end()
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
59 enew
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
60 call setline(1, ['one', 'two'])
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
61 set number
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
62 exe "normal \<C-Y>"
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
63 call assert_equal([" 1 one "], ScreenLines(1, 10))
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
64 exe "normal \<C-E>\<C-E>\<C-E>"
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
65 call assert_equal([" 2 two "], ScreenLines(1, 10))
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
66
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
67 bwipe!
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
68 set nonumber
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
69 endfunc
70d6345a2976 patch 9.0.0645: CTRL-Y does not stop at line 1
Bram Moolenaar <Bram@vim.org>
parents: 30610
diff changeset
70
30610
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
71 func Test_smoothscroll_CtrlE_CtrlY()
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
72 CheckScreendump
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
73
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
74 let lines =<< trim END
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
75 vim9script
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
76 setline(1, [
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
77 'line one',
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
78 'word '->repeat(20),
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
79 'line three',
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
80 'long word '->repeat(7),
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
81 'line',
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
82 'line',
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
83 'line',
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
84 ])
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
85 set smoothscroll
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
86 :5
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
87 END
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
88 call writefile(lines, 'XSmoothScroll', 'D')
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
89 let buf = RunVimInTerminal('-S XSmoothScroll', #{rows: 12, cols: 40})
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
90
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
91 call term_sendkeys(buf, "\<C-E>")
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
92 call VerifyScreenDump(buf, 'Test_smoothscroll_1', {})
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
93 call term_sendkeys(buf, "\<C-E>")
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
94 call VerifyScreenDump(buf, 'Test_smoothscroll_2', {})
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
95 call term_sendkeys(buf, "\<C-E>")
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
96 call VerifyScreenDump(buf, 'Test_smoothscroll_3', {})
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
97 call term_sendkeys(buf, "\<C-E>")
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
98 call VerifyScreenDump(buf, 'Test_smoothscroll_4', {})
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
99
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
100 call term_sendkeys(buf, "\<C-Y>")
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
101 call VerifyScreenDump(buf, 'Test_smoothscroll_5', {})
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
102 call term_sendkeys(buf, "\<C-Y>")
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
103 call VerifyScreenDump(buf, 'Test_smoothscroll_6', {})
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
104 call term_sendkeys(buf, "\<C-Y>")
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
105 call VerifyScreenDump(buf, 'Test_smoothscroll_7', {})
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
106 call term_sendkeys(buf, "\<C-Y>")
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
107 call VerifyScreenDump(buf, 'Test_smoothscroll_8', {})
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
108
30622
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
109 if has('folding')
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
110 call term_sendkeys(buf, ":set foldmethod=indent\<CR>")
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
111 " move the cursor so we can reuse the same dumps
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
112 call term_sendkeys(buf, "5G")
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
113 call term_sendkeys(buf, "\<C-E>")
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
114 call VerifyScreenDump(buf, 'Test_smoothscroll_1', {})
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
115 call term_sendkeys(buf, "\<C-E>")
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
116 call VerifyScreenDump(buf, 'Test_smoothscroll_2', {})
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
117 call term_sendkeys(buf, "7G")
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
118 call term_sendkeys(buf, "\<C-Y>")
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
119 call VerifyScreenDump(buf, 'Test_smoothscroll_7', {})
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
120 call term_sendkeys(buf, "\<C-Y>")
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
121 call VerifyScreenDump(buf, 'Test_smoothscroll_8', {})
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
122 endif
ffd6e3bd65b8 patch 9.0.0646: with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set
Bram Moolenaar <Bram@vim.org>
parents: 30620
diff changeset
123
30610
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
124 call StopVimInTerminal(buf)
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
125 endfunc
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
126
30635
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
127 func Test_smoothscroll_number()
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
128 CheckScreendump
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
129
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
130 let lines =<< trim END
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
131 vim9script
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
132 setline(1, [
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
133 'one ' .. 'word '->repeat(20),
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
134 'two ' .. 'long word '->repeat(7),
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
135 'line',
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
136 'line',
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
137 'line',
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
138 ])
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
139 set smoothscroll
32349
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
140 set splitkeep=topline
30635
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
141 set number cpo+=n
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
142 :3
30845
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
143
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
144 def g:DoRel()
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
145 set number relativenumber scrolloff=0
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
146 :%del
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
147 setline(1, [
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
148 'one',
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
149 'very long text '->repeat(12),
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
150 'three',
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
151 ])
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
152 exe "normal 2Gzt\<C-E>"
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
153 enddef
30635
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
154 END
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
155 call writefile(lines, 'XSmoothNumber', 'D')
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
156 let buf = RunVimInTerminal('-S XSmoothNumber', #{rows: 12, cols: 40})
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
157
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
158 call VerifyScreenDump(buf, 'Test_smooth_number_1', {})
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
159 call term_sendkeys(buf, "\<C-E>")
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
160 call VerifyScreenDump(buf, 'Test_smooth_number_2', {})
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
161 call term_sendkeys(buf, "\<C-E>")
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
162 call VerifyScreenDump(buf, 'Test_smooth_number_3', {})
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
163
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
164 call term_sendkeys(buf, ":set cpo-=n\<CR>")
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
165 call VerifyScreenDump(buf, 'Test_smooth_number_4', {})
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
166 call term_sendkeys(buf, "\<C-Y>")
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
167 call VerifyScreenDump(buf, 'Test_smooth_number_5', {})
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
168 call term_sendkeys(buf, "\<C-Y>")
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
169 call VerifyScreenDump(buf, 'Test_smooth_number_6', {})
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
170
32349
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
171 call term_sendkeys(buf, ":botright split\<CR>gg")
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
172 call VerifyScreenDump(buf, 'Test_smooth_number_7', {})
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
173 call term_sendkeys(buf, "\<C-E>")
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
174 call VerifyScreenDump(buf, 'Test_smooth_number_8', {})
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
175 call term_sendkeys(buf, "\<C-E>")
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
176 call VerifyScreenDump(buf, 'Test_smooth_number_9', {})
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
177 call term_sendkeys(buf, ":close\<CR>")
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
178
30845
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
179 call term_sendkeys(buf, ":call DoRel()\<CR>")
32349
8323e235ff44 patch 9.0.1506: line number not displayed when using 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31954
diff changeset
180 call VerifyScreenDump(buf, 'Test_smooth_number_10', {})
30845
fa3aba805a34 patch 9.0.0757: line number not visisble with 'smoothscroll', 'nu' and 'rnu'
Bram Moolenaar <Bram@vim.org>
parents: 30799
diff changeset
181
30635
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
182 call StopVimInTerminal(buf)
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
183 endfunc
604d7d7aa043 patch 9.0.0652: 'smoothscroll' not tested with 'number' and "n" in 'cpo'
Bram Moolenaar <Bram@vim.org>
parents: 30622
diff changeset
184
30847
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
185 func Test_smoothscroll_list()
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
186 CheckScreendump
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
187
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
188 let lines =<< trim END
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
189 vim9script
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
190 set smoothscroll scrolloff=0
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
191 set list
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
192 setline(1, [
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
193 'one',
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
194 'very long text '->repeat(12),
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
195 'three',
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
196 ])
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
197 exe "normal 2Gzt\<C-E>"
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
198 END
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
199 call writefile(lines, 'XSmoothList', 'D')
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
200 let buf = RunVimInTerminal('-S XSmoothList', #{rows: 8, cols: 40})
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
201
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
202 call VerifyScreenDump(buf, 'Test_smooth_list_1', {})
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
203
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
204 call term_sendkeys(buf, ":set listchars+=precedes:#\<CR>")
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
205 call VerifyScreenDump(buf, 'Test_smooth_list_2', {})
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
206
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
207 call StopVimInTerminal(buf)
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
208 endfunc
2c03ff81cbcb patch 9.0.0758: "precedes" from 'listchars' overwritten by <<<
Bram Moolenaar <Bram@vim.org>
parents: 30845
diff changeset
209
30673
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
210 func Test_smoothscroll_diff_mode()
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
211 CheckScreendump
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
212
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
213 let lines =<< trim END
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
214 vim9script
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
215 var text = 'just some text here'
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
216 setline(1, text)
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
217 set smoothscroll
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
218 diffthis
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
219 new
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
220 setline(1, text)
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
221 set smoothscroll
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
222 diffthis
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
223 END
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
224 call writefile(lines, 'XSmoothDiff', 'D')
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
225 let buf = RunVimInTerminal('-S XSmoothDiff', #{rows: 8})
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
226
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
227 call VerifyScreenDump(buf, 'Test_smooth_diff_1', {})
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
228 call term_sendkeys(buf, "\<C-Y>")
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
229 call VerifyScreenDump(buf, 'Test_smooth_diff_1', {})
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
230 call term_sendkeys(buf, "\<C-E>")
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
231 call VerifyScreenDump(buf, 'Test_smooth_diff_1', {})
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
232
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
233 call StopVimInTerminal(buf)
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
234 endfunc
53b826c4649f patch 9.0.0671: negative topline using CTRL-Y with 'smoothscroll' and 'diff'
Bram Moolenaar <Bram@vim.org>
parents: 30635
diff changeset
235
30675
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
236 func Test_smoothscroll_wrap_scrolloff_zero()
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
237 CheckScreendump
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
238
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
239 let lines =<< trim END
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
240 vim9script
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
241 setline(1, ['Line' .. (' with some text'->repeat(7))]->repeat(7))
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
242 set smoothscroll scrolloff=0
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
243 :3
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
244 END
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
245 call writefile(lines, 'XSmoothWrap', 'D')
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
246 let buf = RunVimInTerminal('-S XSmoothWrap', #{rows: 8, cols: 40})
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
247
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
248 call VerifyScreenDump(buf, 'Test_smooth_wrap_1', {})
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
249
30677
a345ad853b08 patch 9.0.0673: first line wong with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30675
diff changeset
250 " moving cursor down - whole bottom line shows
30675
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
251 call term_sendkeys(buf, "j")
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
252 call VerifyScreenDump(buf, 'Test_smooth_wrap_2', {})
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
253
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
254 call term_sendkeys(buf, "\<C-E>j")
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
255 call VerifyScreenDump(buf, 'Test_smooth_wrap_3', {})
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
256
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
257 call term_sendkeys(buf, "G")
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
258 call VerifyScreenDump(buf, 'Test_smooth_wrap_4', {})
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
259
32473
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
260 call term_sendkeys(buf, "4\<C-Y>G")
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
261 call VerifyScreenDump(buf, 'Test_smooth_wrap_4', {})
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
262
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
263 " moving cursor up right after the <<< marker - no need to show whole line
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
264 call term_sendkeys(buf, "2gj3l2k")
30677
a345ad853b08 patch 9.0.0673: first line wong with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30675
diff changeset
265 call VerifyScreenDump(buf, 'Test_smooth_wrap_5', {})
a345ad853b08 patch 9.0.0673: first line wong with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30675
diff changeset
266
32473
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
267 " moving cursor up where the <<< marker is - whole top line shows
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
268 call term_sendkeys(buf, "2j02k")
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
269 call VerifyScreenDump(buf, 'Test_smooth_wrap_6', {})
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
270
30675
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
271 call StopVimInTerminal(buf)
bc48f3752d8d patch 9.0.0672: line partly shows with 'smoothscroll' and 'scrolloff' zero
Bram Moolenaar <Bram@vim.org>
parents: 30673
diff changeset
272 endfunc
30610
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
273
30733
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
274 func Test_smoothscroll_wrap_long_line()
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
275 CheckScreendump
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
276
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
277 let lines =<< trim END
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
278 vim9script
31148
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
279 setline(1, ['one', 'two', 'Line' .. (' with lots of text'->repeat(30)) .. ' end', 'four'])
30733
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
280 set smoothscroll scrolloff=0
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
281 normal 3G10|zt
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
282 END
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
283 call writefile(lines, 'XSmoothWrap', 'D')
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
284 let buf = RunVimInTerminal('-S XSmoothWrap', #{rows: 6, cols: 40})
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
285 call VerifyScreenDump(buf, 'Test_smooth_long_1', {})
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
286
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
287 " scrolling up, cursor moves screen line down
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
288 call term_sendkeys(buf, "\<C-E>")
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
289 call VerifyScreenDump(buf, 'Test_smooth_long_2', {})
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
290 call term_sendkeys(buf, "5\<C-E>")
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
291 call VerifyScreenDump(buf, 'Test_smooth_long_3', {})
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
292
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
293 " scrolling down, cursor moves screen line up
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
294 call term_sendkeys(buf, "5\<C-Y>")
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
295 call VerifyScreenDump(buf, 'Test_smooth_long_4', {})
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
296 call term_sendkeys(buf, "\<C-Y>")
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
297 call VerifyScreenDump(buf, 'Test_smooth_long_5', {})
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
298
30745
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
299 " 'scrolloff' set to 1, scrolling up, cursor moves screen line down
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
300 call term_sendkeys(buf, ":set scrolloff=1\<CR>")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
301 call term_sendkeys(buf, "10|\<C-E>")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
302 call VerifyScreenDump(buf, 'Test_smooth_long_6', {})
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31829
diff changeset
303
30745
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
304 " 'scrolloff' set to 1, scrolling down, cursor moves screen line up
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
305 call term_sendkeys(buf, "\<C-E>")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
306 call term_sendkeys(buf, "gjgj")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
307 call term_sendkeys(buf, "\<C-Y>")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
308 call VerifyScreenDump(buf, 'Test_smooth_long_7', {})
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31829
diff changeset
309
30745
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
310 " 'scrolloff' set to 2, scrolling up, cursor moves screen line down
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
311 call term_sendkeys(buf, ":set scrolloff=2\<CR>")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
312 call term_sendkeys(buf, "10|\<C-E>")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
313 call VerifyScreenDump(buf, 'Test_smooth_long_8', {})
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31829
diff changeset
314
30745
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
315 " 'scrolloff' set to 2, scrolling down, cursor moves screen line up
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
316 call term_sendkeys(buf, "\<C-E>")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
317 call term_sendkeys(buf, "gj")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
318 call term_sendkeys(buf, "\<C-Y>")
fdc44acc3250 patch 9.0.0707: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30733
diff changeset
319 call VerifyScreenDump(buf, 'Test_smooth_long_9', {})
31148
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
320
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
321 " 'scrolloff' set to 0, move cursor down one line.
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
322 " Cursor should move properly, and since this is a really long line, it will
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
323 " be put on top of the screen.
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
324 call term_sendkeys(buf, ":set scrolloff=0\<CR>")
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
325 call term_sendkeys(buf, "0j")
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
326 call VerifyScreenDump(buf, 'Test_smooth_long_10', {})
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
327
31577
3c21865e8068 patch 9.0.1121: cursor positioning and display problems with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31333
diff changeset
328 " Test zt/zz/zb that they work properly when a long line is above it
32403
1b0ade08ec91 patch 9.0.1533: test for 'smoothscroll' is ineffective
Bram Moolenaar <Bram@vim.org>
parents: 32387
diff changeset
329 call term_sendkeys(buf, "zt")
31577
3c21865e8068 patch 9.0.1121: cursor positioning and display problems with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31333
diff changeset
330 call VerifyScreenDump(buf, 'Test_smooth_long_11', {})
3c21865e8068 patch 9.0.1121: cursor positioning and display problems with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31333
diff changeset
331 call term_sendkeys(buf, "zz")
3c21865e8068 patch 9.0.1121: cursor positioning and display problems with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31333
diff changeset
332 call VerifyScreenDump(buf, 'Test_smooth_long_12', {})
32403
1b0ade08ec91 patch 9.0.1533: test for 'smoothscroll' is ineffective
Bram Moolenaar <Bram@vim.org>
parents: 32387
diff changeset
333 call term_sendkeys(buf, "zb")
31577
3c21865e8068 patch 9.0.1121: cursor positioning and display problems with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31333
diff changeset
334 call VerifyScreenDump(buf, 'Test_smooth_long_13', {})
3c21865e8068 patch 9.0.1121: cursor positioning and display problems with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31333
diff changeset
335
31148
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
336 " Repeat the step and move the cursor down again.
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
337 " This time, use a shorter long line that is barely long enough to span more
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
338 " than one window. Note that the cursor is at the bottom this time because
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
339 " Vim prefers to do so if we are scrolling a few lines only.
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
340 call term_sendkeys(buf, ":call setline(1, ['one', 'two', 'Line' .. (' with lots of text'->repeat(10)) .. ' end', 'four'])\<CR>")
32423
667d85c09e9c patch 9.0.1543: display errors when making topline shorter
Bram Moolenaar <Bram@vim.org>
parents: 32403
diff changeset
341 " Currently visible lines were replaced, test that the lines and cursor
667d85c09e9c patch 9.0.1543: display errors when making topline shorter
Bram Moolenaar <Bram@vim.org>
parents: 32403
diff changeset
342 " are correctly displayed.
667d85c09e9c patch 9.0.1543: display errors when making topline shorter
Bram Moolenaar <Bram@vim.org>
parents: 32403
diff changeset
343 call VerifyScreenDump(buf, 'Test_smooth_long_14', {})
31148
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
344 call term_sendkeys(buf, "3Gzt")
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
345 call term_sendkeys(buf, "j")
32423
667d85c09e9c patch 9.0.1543: display errors when making topline shorter
Bram Moolenaar <Bram@vim.org>
parents: 32403
diff changeset
346 call VerifyScreenDump(buf, 'Test_smooth_long_15', {})
31148
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
347
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
348 " Repeat the step but this time start it when the line is smooth-scrolled by
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
349 " one line. This tests that the offset calculation is still correct and
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
350 " still end up scrolling down to the next line with cursor at bottom of
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
351 " screen.
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
352 call term_sendkeys(buf, "3Gzt")
69cea3380d9a patch 9.0.0908: with 'smoothscroll' cursor may end up in wrong position
Bram Moolenaar <Bram@vim.org>
parents: 31131
diff changeset
353 call term_sendkeys(buf, "\<C-E>j")
32423
667d85c09e9c patch 9.0.1543: display errors when making topline shorter
Bram Moolenaar <Bram@vim.org>
parents: 32403
diff changeset
354 call VerifyScreenDump(buf, 'Test_smooth_long_16', {})
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31829
diff changeset
355
30733
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
356 call StopVimInTerminal(buf)
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
357 endfunc
5bea8e583d28 patch 9.0.0701: with 'smoothscroll' cursor position not adjusted in long line
Bram Moolenaar <Bram@vim.org>
parents: 30677
diff changeset
358
30799
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
359 func Test_smoothscroll_one_long_line()
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
360 CheckScreendump
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
361
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
362 let lines =<< trim END
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
363 vim9script
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
364 setline(1, 'with lots of text '->repeat(7))
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
365 set smoothscroll scrolloff=0
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
366 END
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
367 call writefile(lines, 'XSmoothOneLong', 'D')
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
368 let buf = RunVimInTerminal('-S XSmoothOneLong', #{rows: 6, cols: 40})
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
369 call VerifyScreenDump(buf, 'Test_smooth_one_long_1', {})
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31829
diff changeset
370
30799
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
371 call term_sendkeys(buf, "\<C-E>")
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
372 call VerifyScreenDump(buf, 'Test_smooth_one_long_2', {})
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
373
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
374 call term_sendkeys(buf, "0")
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
375 call VerifyScreenDump(buf, 'Test_smooth_one_long_1', {})
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
376
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
377 call StopVimInTerminal(buf)
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
378 endfunc
ffa5492137c3 patch 9.0.0734: cursor position invalid when scrolling with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 30745
diff changeset
379
31127
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
380 func Test_smoothscroll_long_line_showbreak()
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
381 CheckScreendump
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
382
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
383 let lines =<< trim END
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
384 vim9script
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
385 # a line that spans four screen lines
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
386 setline(1, 'with lots of text in one line '->repeat(6))
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
387 set smoothscroll scrolloff=0 showbreak=+++\
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
388 END
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
389 call writefile(lines, 'XSmoothLongShowbreak', 'D')
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
390 let buf = RunVimInTerminal('-S XSmoothLongShowbreak', #{rows: 6, cols: 40})
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
391 call VerifyScreenDump(buf, 'Test_smooth_long_showbreak_1', {})
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31829
diff changeset
392
31127
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
393 call term_sendkeys(buf, "\<C-E>")
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
394 call VerifyScreenDump(buf, 'Test_smooth_long_showbreak_2', {})
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
395
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
396 call term_sendkeys(buf, "0")
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
397 call VerifyScreenDump(buf, 'Test_smooth_long_showbreak_1', {})
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
398
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
399 call StopVimInTerminal(buf)
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
400 endfunc
92b929203a4f patch 9.0.0898: with 'smoothscroll' cursor is one screen line too far down
Bram Moolenaar <Bram@vim.org>
parents: 31117
diff changeset
401
32541
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
402 " Check that 'smoothscroll' marker is drawn over double-width char correctly.
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
403 " Run with multiple encodings.
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
404 func Test_smoothscroll_marker_over_double_width()
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
405 " Run this in a separate Vim instance to avoid messing up.
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
406 let after =<< trim [CODE]
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
407 scriptencoding utf-8
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
408 call setline(1, 'a'->repeat(&columns) .. '口'->repeat(10))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
409 setlocal smoothscroll
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
410 redraw
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
411 exe "norm \<C-E>"
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
412 redraw
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
413 " Check the chars one by one. Don't check the whole line concatenated.
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
414 call assert_equal('<', screenstring(1, 1))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
415 call assert_equal('<', screenstring(1, 2))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
416 call assert_equal('<', screenstring(1, 3))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
417 call assert_equal(' ', screenstring(1, 4))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
418 call assert_equal('口', screenstring(1, 5))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
419 call assert_equal('口', screenstring(1, 7))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
420 call assert_equal('口', screenstring(1, 9))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
421 call assert_equal('口', screenstring(1, 11))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
422 call assert_equal('口', screenstring(1, 13))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
423 call assert_equal('口', screenstring(1, 15))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
424 call writefile(v:errors, 'Xresult')
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
425 qall!
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
426 [CODE]
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
427
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
428 let encodings = ['utf-8', 'cp932', 'cp936', 'cp949', 'cp950']
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
429 if !has('win32')
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
430 let encodings += ['euc-jp']
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
431 endif
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
432 for enc in encodings
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
433 let msg = 'enc=' .. enc
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
434 if RunVim([], after, $'--clean --cmd "set encoding={enc}"')
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
435 call assert_equal([], readfile('Xresult'), msg)
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
436 endif
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
437 call delete('Xresult')
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
438 endfor
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
439 endfunc
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
440
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
441 " Same as the test above, but check the text actually shown on screen.
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
442 " Only run with UTF-8 encoding.
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
443 func Test_smoothscroll_marker_over_double_width_dump()
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
444 CheckScreendump
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
445
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
446 let lines =<< trim END
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
447 call setline(1, 'a'->repeat(&columns) .. '口'->repeat(10))
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
448 setlocal smoothscroll
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
449 END
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
450 call writefile(lines, 'XSmoothMarkerOverDoubleWidth', 'D')
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
451 let buf = RunVimInTerminal('-S XSmoothMarkerOverDoubleWidth', #{rows: 6, cols: 40})
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
452 call VerifyScreenDump(buf, 'Test_smooth_marker_over_double_width_1', {})
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
453
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
454 call term_sendkeys(buf, "\<C-E>")
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
455 call VerifyScreenDump(buf, 'Test_smooth_marker_over_double_width_2', {})
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
456
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
457 call StopVimInTerminal(buf)
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
458 endfunc
75e56c94316d patch 9.0.1602: stray character visible if marker on top of double-wide char
Bram Moolenaar <Bram@vim.org>
parents: 32473
diff changeset
459
31329
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
460 func s:check_col_calc(win_col, win_line, buf_col)
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
461 call assert_equal(a:win_col, wincol())
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
462 call assert_equal(a:win_line, winline())
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
463 call assert_equal(a:buf_col, col('.'))
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
464 endfunc
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
465
31117
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
466 " Test that if the current cursor is on a smooth scrolled line, we correctly
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
467 " reposition it. Also check that we don't miscalculate the values by checking
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
468 " the consistency between wincol() and col('.') as they are calculated
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
469 " separately in code.
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
470 func Test_smoothscroll_cursor_position()
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
471 call NewWindow(10, 20)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
472 setl smoothscroll wrap
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
473 call setline(1, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
474
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
475 call s:check_col_calc(1, 1, 1)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
476 exe "normal \<C-E>"
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
477
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
478 " Move down another line to avoid blocking the <<< display
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
479 call s:check_col_calc(1, 2, 41)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
480 exe "normal \<C-Y>"
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
481 call s:check_col_calc(1, 3, 41)
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
482
32427
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
483 " Test "g0/g<Home>"
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
484 exe "normal gg\<C-E>"
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
485 norm $gkg0
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
486 call s:check_col_calc(1, 2, 21)
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
487
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
488 " Test moving the cursor behind the <<< display with 'virtualedit'
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
489 set virtualedit=all
32439
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
490 exe "normal \<C-E>3lgkh"
32427
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
491 call s:check_col_calc(3, 2, 23)
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
492 set virtualedit&
11bc7fa31c3b patch 9.0.1545: text not scrolled when cursor moved with "g0" and "h"
Bram Moolenaar <Bram@vim.org>
parents: 32423
diff changeset
493
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
494 normal gg3l
31117
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
495 exe "normal \<C-E>"
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
496
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
497 " Move down only 1 line when we are out of the range of the <<< display
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
498 call s:check_col_calc(4, 1, 24)
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
499 exe "normal \<C-Y>"
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
500 call s:check_col_calc(4, 2, 24)
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
501 normal ggg$
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
502 exe "normal \<C-E>"
31117
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
503 call s:check_col_calc(20, 1, 40)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
504 exe "normal \<C-Y>"
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
505 call s:check_col_calc(20, 2, 40)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
506 normal gg
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
507
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
508 " Test number, where we have indented lines
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
509 setl number
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
510 call s:check_col_calc(5, 1, 1)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
511 exe "normal \<C-E>"
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
512
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
513 " Move down only 1 line when the <<< display is on the number column
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
514 call s:check_col_calc(5, 1, 17)
31117
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
515 exe "normal \<C-Y>"
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
516 call s:check_col_calc(5, 2, 17)
31117
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
517 normal ggg$
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
518 exe "normal \<C-E>"
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
519 call s:check_col_calc(20, 1, 32)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
520 exe "normal \<C-Y>"
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
521 call s:check_col_calc(20, 2, 32)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
522 normal gg
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
523
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
524 setl numberwidth=1
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
525
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
526 " Move down another line when numberwidth is too short to cover the whole
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
527 " <<< display
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
528 call s:check_col_calc(3, 1, 1)
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
529 exe "normal \<C-E>"
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
530 call s:check_col_calc(3, 2, 37)
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
531 exe "normal \<C-Y>"
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
532 call s:check_col_calc(3, 3, 37)
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
533 normal ggl
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
534
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
535 " Only move 1 line down when we are just past the <<< display
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
536 call s:check_col_calc(4, 1, 2)
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
537 exe "normal \<C-E>"
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
538 call s:check_col_calc(4, 1, 20)
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
539 exe "normal \<C-Y>"
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
540 call s:check_col_calc(4, 2, 20)
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
541 normal gg
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
542 setl numberwidth&
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
543
31117
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
544 " Test number + showbreak, so test that the additional indentation works
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
545 setl number showbreak=+++
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
546 call s:check_col_calc(5, 1, 1)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
547 exe "normal \<C-E>"
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
548 call s:check_col_calc(8, 1, 17)
31117
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
549 exe "normal \<C-Y>"
31131
8de082110e2d patch 9.0.0900: cursor moves too far with 'smoothscroll'
Bram Moolenaar <Bram@vim.org>
parents: 31127
diff changeset
550 call s:check_col_calc(8, 2, 17)
31117
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
551 normal gg
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
552
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
553 " Test number + cpo+=n mode, where wrapped lines aren't indented
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
554 setl number cpo+=n showbreak=
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
555 call s:check_col_calc(5, 1, 1)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
556 exe "normal \<C-E>"
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
557 call s:check_col_calc(1, 2, 37)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
558 exe "normal \<C-Y>"
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
559 call s:check_col_calc(1, 3, 37)
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
560 normal gg
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
561
32439
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
562 " Test list + listchars "precedes", where there is always 1 overlap
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
563 " regardless of number and cpo-=n.
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
564 setl number list listchars=precedes:< cpo-=n
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
565 call s:check_col_calc(5, 1, 1)
32460
45c426cebfcd patch 9.0.1561: display wrong when moving cursor to above the top line
Bram Moolenaar <Bram@vim.org>
parents: 32439
diff changeset
566 exe "normal 3|\<C-E>h"
32439
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
567 call s:check_col_calc(6, 1, 18)
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
568 norm h
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
569 call s:check_col_calc(5, 2, 17)
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
570 normal gg
9d072cccc8fc patch 9.0.1551: position of marker for 'smoothscroll' not computed correctly
Bram Moolenaar <Bram@vim.org>
parents: 32427
diff changeset
571
31329
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
572 bwipe!
31117
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
573 endfunc
a5bf86083558 patch 9.0.0893: 'smoothscroll' cursor calculations wrong when 'number' is set
Bram Moolenaar <Bram@vim.org>
parents: 30847
diff changeset
574
31329
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
575 func Test_smoothscroll_cursor_scrolloff()
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
576 call NewWindow(10, 20)
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
577 setl smoothscroll wrap
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
578 setl scrolloff=3
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 31829
diff changeset
579
31329
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
580 " 120 chars are 6 screen lines
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
581 call setline(1, "abcdefghijklmnopqrstABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrstABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrstABCDEFGHIJKLMNOPQRST")
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
582 call setline(2, "below")
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
583
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
584 call s:check_col_calc(1, 1, 1)
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
585
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
586 " CTRL-E shows "<<<DEFG...", cursor move four lines down
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
587 exe "normal \<C-E>"
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
588 call s:check_col_calc(1, 4, 81)
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
589
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
590 " cursor on start of second line, "gk" moves into first line, skipcol doesn't
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
591 " change
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
592 exe "normal G0gk"
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
593 call s:check_col_calc(1, 5, 101)
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
594
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
595 " move cursor left one window width worth, scrolls one screen line
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
596 exe "normal 20h"
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
597 call s:check_col_calc(1, 5, 81)
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
598
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
599 " move cursor left one window width worth, scrolls one screen line
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
600 exe "normal 20h"
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
601 call s:check_col_calc(1, 4, 61)
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
602
31333
bfbcc148da58 patch 9.0.1000: with 'smoothscroll' skipcol may be reset unnecessarily
Bram Moolenaar <Bram@vim.org>
parents: 31329
diff changeset
603 " cursor on last line, "gk" should not cause a scroll
bfbcc148da58 patch 9.0.1000: with 'smoothscroll' skipcol may be reset unnecessarily
Bram Moolenaar <Bram@vim.org>
parents: 31329
diff changeset
604 set scrolloff=0
bfbcc148da58 patch 9.0.1000: with 'smoothscroll' skipcol may be reset unnecessarily
Bram Moolenaar <Bram@vim.org>
parents: 31329
diff changeset
605 normal G0
bfbcc148da58 patch 9.0.1000: with 'smoothscroll' skipcol may be reset unnecessarily
Bram Moolenaar <Bram@vim.org>
parents: 31329
diff changeset
606 call s:check_col_calc(1, 7, 1)
bfbcc148da58 patch 9.0.1000: with 'smoothscroll' skipcol may be reset unnecessarily
Bram Moolenaar <Bram@vim.org>
parents: 31329
diff changeset
607 normal gk
bfbcc148da58 patch 9.0.1000: with 'smoothscroll' skipcol may be reset unnecessarily
Bram Moolenaar <Bram@vim.org>
parents: 31329
diff changeset
608 call s:check_col_calc(1, 6, 101)
bfbcc148da58 patch 9.0.1000: with 'smoothscroll' skipcol may be reset unnecessarily
Bram Moolenaar <Bram@vim.org>
parents: 31329
diff changeset
609
31329
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
610 bwipe!
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
611 endfunc
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
612
5c83140aafc9 patch 9.0.0998: "gk" may reset skipcol when not needed
Bram Moolenaar <Bram@vim.org>
parents: 31154
diff changeset
613
31154
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
614 " Test that mouse picking is still accurate when we have smooth scrolled lines
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
615 func Test_smoothscroll_mouse_pos()
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
616 CheckNotGui
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
617 CheckUnix
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
618
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
619 let save_mouse = &mouse
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
620 let save_term = &term
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
621 let save_ttymouse = &ttymouse
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
622 set mouse=a term=xterm ttymouse=xterm2
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
623
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
624 call NewWindow(10, 20)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
625 setl smoothscroll wrap
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
626 " First line will wrap to 3 physical lines. 2nd/3rd lines are short lines.
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
627 call setline(1, ["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "line 2", "line 3"])
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
628
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
629 func s:check_mouse_click(row, col, buf_row, buf_col)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
630 call MouseLeftClick(a:row, a:col)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
631
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
632 call assert_equal(a:col, wincol())
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
633 call assert_equal(a:row, winline())
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
634 call assert_equal(a:buf_row, line('.'))
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
635 call assert_equal(a:buf_col, col('.'))
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
636 endfunc
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
637
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
638 " Check that clicking without scroll works first.
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
639 call s:check_mouse_click(3, 5, 1, 45)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
640 call s:check_mouse_click(4, 1, 2, 1)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
641 call s:check_mouse_click(4, 6, 2, 6)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
642 call s:check_mouse_click(5, 1, 3, 1)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
643 call s:check_mouse_click(5, 6, 3, 6)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
644
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
645 " Smooth scroll, and checks that this didn't mess up mouse clicking
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
646 exe "normal \<C-E>"
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
647 call s:check_mouse_click(2, 5, 1, 45)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
648 call s:check_mouse_click(3, 1, 2, 1)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
649 call s:check_mouse_click(3, 6, 2, 6)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
650 call s:check_mouse_click(4, 1, 3, 1)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
651 call s:check_mouse_click(4, 6, 3, 6)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
652
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
653 exe "normal \<C-E>"
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
654 call s:check_mouse_click(1, 5, 1, 45)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
655 call s:check_mouse_click(2, 1, 2, 1)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
656 call s:check_mouse_click(2, 6, 2, 6)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
657 call s:check_mouse_click(3, 1, 3, 1)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
658 call s:check_mouse_click(3, 6, 3, 6)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
659
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
660 " Make a new first line 11 physical lines tall so it's taller than window
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
661 " height, to test overflow calculations with really long lines wrapping.
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
662 normal gg
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
663 call setline(1, "12345678901234567890"->repeat(11))
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
664 exe "normal 6\<C-E>"
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
665 call s:check_mouse_click(5, 1, 1, 201)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
666 call s:check_mouse_click(6, 1, 2, 1)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
667 call s:check_mouse_click(7, 1, 3, 1)
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
668
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
669 let &mouse = save_mouse
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
670 let &term = save_term
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
671 let &ttymouse = save_ttymouse
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
672 endfunc
7e48ddb8b079 patch 9.0.0911: with 'smoothscroll' set mouse click position may be wrong
Bram Moolenaar <Bram@vim.org>
parents: 31148
diff changeset
673
31829
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
674 " this was dividing by zero
32361
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
675 func Test_smoothscroll_zero_width()
31829
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
676 CheckScreendump
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
677
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
678 let lines =<< trim END
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
679 winsize 0 0
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
680 vsplit
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
681 vsplit
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
682 vsplit
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
683 vsplit
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
684 vsplit
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
685 sil norm H
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
686 set wrap
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
687 set smoothscroll
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
688 set number
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
689 END
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
690 call writefile(lines, 'XSmoothScrollZero', 'D')
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
691 let buf = RunVimInTerminal('-u NONE -i NONE -n -m -X -Z -e -s -S XSmoothScrollZero', #{rows: 6, cols: 60, wait_for_ruler: 0})
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
692 call VerifyScreenDump(buf, 'Test_smoothscroll_zero_1', {})
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
693
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
694 call term_sendkeys(buf, ":sil norm \<C-V>\<C-W>\<C-V>\<C-N>\<CR>")
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
695 call VerifyScreenDump(buf, 'Test_smoothscroll_zero_2', {})
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
696
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
697 call StopVimInTerminal(buf)
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
698 endfunc
2a590b4a3fba patch 9.0.1247: divide by zero with 'smoothscroll' set and a narrow window
Bram Moolenaar <Bram@vim.org>
parents: 31577
diff changeset
699
32361
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
700 " this was unnecessarily inserting lines
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
701 func Test_smoothscroll_ins_lines()
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
702 CheckScreendump
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
703
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
704 let lines =<< trim END
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
705 set wrap
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
706 set smoothscroll
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
707 set scrolloff=0
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
708 set conceallevel=2
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
709 call setline(1, [
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
710 \'line one' .. 'with lots of text in one line '->repeat(2),
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
711 \'line two',
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
712 \'line three',
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
713 \'line four',
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
714 \'line five'
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
715 \])
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
716 END
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
717 call writefile(lines, 'XSmoothScrollInsLines', 'D')
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
718 let buf = RunVimInTerminal('-S XSmoothScrollInsLines', #{rows: 6, cols: 40})
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
719
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
720 call term_sendkeys(buf, "\<C-E>gjgk")
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
721 call VerifyScreenDump(buf, 'Test_smooth_ins_lines', {})
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
722
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
723 call StopVimInTerminal(buf)
9ac987a467d5 patch 9.0.1512: inserting lines when scrolling with 'smoothscroll' set
Bram Moolenaar <Bram@vim.org>
parents: 32349
diff changeset
724 endfunc
30610
6c6ac189a05f patch 9.0.0640: cannot scroll by screen line if a line wraps
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
725
32387
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
726 " this placed the cursor in the command line
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
727 func Test_smoothscroll_cursormoved_line()
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
728 CheckScreendump
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
729
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
730 let lines =<< trim END
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
731 set smoothscroll
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
732 call setline(1, [
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
733 \'',
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
734 \'_'->repeat(&lines * &columns),
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
735 \(('_')->repeat(&columns - 2) .. 'xxx')->repeat(2)
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
736 \])
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
737 autocmd CursorMoved * eval [line('w0'), line('w$')]
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
738 call search('xxx')
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
739 END
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
740 call writefile(lines, 'XSmoothCursorMovedLine', 'D')
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
741 let buf = RunVimInTerminal('-S XSmoothCursorMovedLine', #{rows: 6})
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
742
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
743 call VerifyScreenDump(buf, 'Test_smooth_cursormoved_line', {})
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
744
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
745 call StopVimInTerminal(buf)
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
746 endfunc
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
747
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
748 func Test_smoothscroll_eob()
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
749 CheckScreendump
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
750
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
751 let lines =<< trim END
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
752 set smoothscroll
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
753 call setline(1, ['']->repeat(100))
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
754 norm G
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
755 END
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
756 call writefile(lines, 'XSmoothEob', 'D')
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
757 let buf = RunVimInTerminal('-S XSmoothEob', #{rows: 10})
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
758
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
759 " does not scroll halfway when scrolling to end of buffer
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
760 call VerifyScreenDump(buf, 'Test_smooth_eob_1', {})
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
761
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
762 " cursor is not placed below window
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
763 call term_sendkeys(buf, ":call setline(92, 'a'->repeat(100))\<CR>\<C-B>G")
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
764 call VerifyScreenDump(buf, 'Test_smooth_eob_2', {})
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
765
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
766 call StopVimInTerminal(buf)
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
767 endfunc
1ddef52ea786 patch 9.0.1525: 'smoothscroll' does not always work properly
Bram Moolenaar <Bram@vim.org>
parents: 32365
diff changeset
768
32473
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
769 " skipcol should not reset when doing incremental search on the same word
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
770 func Test_smoothscroll_incsearch()
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
771 CheckScreendump
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
772
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
773 let lines =<< trim END
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
774 set smoothscroll number scrolloff=0 incsearch
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
775 call setline(1, repeat([''], 20))
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
776 call setline(11, repeat('a', 100))
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
777 call setline(14, 'bbbb')
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
778 END
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
779 call writefile(lines, 'XSmoothIncsearch', 'D')
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
780 let buf = RunVimInTerminal('-S XSmoothIncsearch', #{rows: 8, cols:40})
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
781
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
782 call term_sendkeys(buf, "/b")
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
783 call VerifyScreenDump(buf, 'Test_smooth_incsearch_1', {})
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
784 call term_sendkeys(buf, "b")
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
785 call VerifyScreenDump(buf, 'Test_smooth_incsearch_2', {})
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
786 call term_sendkeys(buf, "b")
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
787 call VerifyScreenDump(buf, 'Test_smooth_incsearch_3', {})
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
788 call term_sendkeys(buf, "b")
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
789 call VerifyScreenDump(buf, 'Test_smooth_incsearch_4', {})
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
790 call term_sendkeys(buf, "\<CR>")
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
791
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
792 call StopVimInTerminal(buf)
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
793 endfunc
c89816c3e2d7 patch 9.0.1568: with 'smoothscroll' cursor may move below botline
Bram Moolenaar <Bram@vim.org>
parents: 32460
diff changeset
794
21765
08940efa6b4e patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents: 12718
diff changeset
795 " vim: shiftwidth=2 sts=2 expandtab