Mercurial > vim
annotate src/testdir/test_cursorline.vim @ 34596:5a8340e044f4 v9.1.0190
patch 9.1.0190: complete_info() returns wrong order of items
Commit: https://github.com/vim/vim/commit/8950bf7f8b85c1287d4e696965d88091fcc60594
Author: Girish Palya <girishji@gmail.com>
Date: Wed Mar 20 20:07:29 2024 +0100
patch 9.1.0190: complete_info() returns wrong order of items
Problem: complete_info() returns wrong order of items
(after v9.0.2018)
Solution: Revert Patch v9.0.2018
(Girish Palya)
bug fix: complete_info() gives wrong results
1) complete_info() reverses list of items during <c-p>
2) 'selected' item index is wrong during <c-p>
3) number of items returnd can be wrong
Solution:
- Decouple 'cp_number' from 'selected' index since they need not be
correlated
- Do not iterate the list backwards
- Add targeted tests
Regression introduced by https://github.com/vim/vim/commit/69fb5afb3bc9da24c2fb0eafb0027ba9c6502fc2
Following are unnecessary commits to patch problems from above:
https://github.com/vim/vim/commit/fef66301665027f1801a18d796f74584666f41ef
https://github.com/vim/vim/commit/daef8c74375141974d61b85199b383017644978c
All the tests from above commits are retained though.
fixes: #14204
closes: #14241
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 20 Mar 2024 20:15:03 +0100 |
parents | f936d46cc9c1 |
children | 1ec91bab6129 |
rev | line source |
---|---|
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1 " Test for cursorline and cursorlineopt |
18068
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
2 |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3 source check.vim |
18068
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
4 source screendump.vim |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
5 |
30687
f936d46cc9c1
patch 9.0.0678: using exclamation marks on :function
Bram Moolenaar <Bram@vim.org>
parents:
30164
diff
changeset
|
6 func s:screen_attr(lnum) abort |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
7 return map(range(1, 8), 'screenattr(a:lnum, v:val)') |
30687
f936d46cc9c1
patch 9.0.0678: using exclamation marks on :function
Bram Moolenaar <Bram@vim.org>
parents:
30164
diff
changeset
|
8 endfunc |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 |
30687
f936d46cc9c1
patch 9.0.0678: using exclamation marks on :function
Bram Moolenaar <Bram@vim.org>
parents:
30164
diff
changeset
|
10 func s:test_windows(h, w) abort |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 call NewWindow(a:h, a:w) |
30687
f936d46cc9c1
patch 9.0.0678: using exclamation marks on :function
Bram Moolenaar <Bram@vim.org>
parents:
30164
diff
changeset
|
12 endfunc |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
13 |
30687
f936d46cc9c1
patch 9.0.0678: using exclamation marks on :function
Bram Moolenaar <Bram@vim.org>
parents:
30164
diff
changeset
|
14 func s:close_windows() abort |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
15 call CloseWindow() |
30687
f936d46cc9c1
patch 9.0.0678: using exclamation marks on :function
Bram Moolenaar <Bram@vim.org>
parents:
30164
diff
changeset
|
16 endfunc |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
17 |
30687
f936d46cc9c1
patch 9.0.0678: using exclamation marks on :function
Bram Moolenaar <Bram@vim.org>
parents:
30164
diff
changeset
|
18 func s:new_hi() abort |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
19 redir => save_hi |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
20 silent! hi CursorLineNr |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
21 redir END |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
22 let save_hi = join(split(substitute(save_hi, '\s*xxx\s*', ' ', ''), "\n"), '') |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
23 exe 'hi' save_hi 'ctermbg=0 guibg=Black' |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
24 return save_hi |
30687
f936d46cc9c1
patch 9.0.0678: using exclamation marks on :function
Bram Moolenaar <Bram@vim.org>
parents:
30164
diff
changeset
|
25 endfunc |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
26 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
27 func Test_cursorline_highlight1() |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
28 let save_hi = s:new_hi() |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
29 try |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
30 call s:test_windows(10, 20) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
31 call setline(1, repeat(['aaaa'], 10)) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
32 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
33 let attr01 = s:screen_attr(1) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
34 call assert_equal(repeat([attr01[0]], 8), attr01) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
35 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
36 setl number numberwidth=4 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
37 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
38 let attr11 = s:screen_attr(1) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
39 call assert_equal(repeat([attr11[0]], 4), attr11[0:3]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
40 call assert_equal(repeat([attr11[4]], 4), attr11[4:7]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
41 call assert_notequal(attr11[0], attr11[4]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
42 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
43 setl cursorline |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
44 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
45 let attr21 = s:screen_attr(1) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
46 let attr22 = s:screen_attr(2) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
47 call assert_equal(repeat([attr21[0]], 4), attr21[0:3]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
48 call assert_equal(repeat([attr21[4]], 4), attr21[4:7]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
49 call assert_equal(attr11, attr22) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
50 call assert_notequal(attr22, attr21) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
51 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
52 setl nocursorline relativenumber |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
53 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
54 let attr31 = s:screen_attr(1) |
18245
1f5571e7f012
patch 8.1.2117: CursorLine highlight used while 'cursorline' is off
Bram Moolenaar <Bram@vim.org>
parents:
18068
diff
changeset
|
55 call assert_equal(attr22[0:3], attr31[0:3]) |
18047
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
56 call assert_equal(attr11[4:7], attr31[4:7]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
57 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
58 call s:close_windows() |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
59 finally |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
60 exe 'hi' save_hi |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
61 endtry |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
62 endfunc |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
63 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
64 func Test_cursorline_highlight2() |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
65 CheckOption cursorlineopt |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
66 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
67 let save_hi = s:new_hi() |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
68 try |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
69 call s:test_windows(10, 20) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
70 call setline(1, repeat(['aaaa'], 10)) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
71 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
72 let attr0 = s:screen_attr(1) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
73 call assert_equal(repeat([attr0[0]], 8), attr0) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
74 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
75 setl number |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
76 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
77 let attr1 = s:screen_attr(1) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
78 call assert_notequal(attr0[0:3], attr1[0:3]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
79 call assert_equal(attr0[0:3], attr1[4:7]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
80 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
81 setl cursorline cursorlineopt=both |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
82 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
83 let attr2 = s:screen_attr(1) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
84 call assert_notequal(attr1[0:3], attr2[0:3]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
85 call assert_notequal(attr1[4:7], attr2[4:7]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
86 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
87 setl cursorlineopt=line |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
88 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
89 let attr3 = s:screen_attr(1) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
90 call assert_equal(attr1[0:3], attr3[0:3]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
91 call assert_equal(attr2[4:7], attr3[4:7]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
92 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
93 setl cursorlineopt=number |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
94 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
95 let attr4 = s:screen_attr(1) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
96 call assert_equal(attr2[0:3], attr4[0:3]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
97 call assert_equal(attr1[4:7], attr4[4:7]) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
98 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
99 setl nonumber |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
100 redraw |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
101 let attr5 = s:screen_attr(1) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
102 call assert_equal(attr0, attr5) |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
103 |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
104 call s:close_windows() |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
105 finally |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
106 exe 'hi' save_hi |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
107 endtry |
6650e3dff8d4
patch 8.1.2019: 'cursorline' always highlights the whole line
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
108 endfunc |
18068
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
109 |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
110 func Test_cursorline_screenline() |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
111 CheckScreendump |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
112 CheckOption cursorlineopt |
25334
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
113 |
18068
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
114 let filename='Xcursorline' |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
115 let lines = [] |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
116 |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
117 let file_content =<< trim END |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
118 1 foooooooo ar einszwei drei vier fünf sechs sieben acht un zehn elf zwöfl dreizehn v ierzehn fünfzehn |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
119 2 foooooooo bar eins zwei drei vier fünf sechs sieben |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
120 3 foooooooo bar eins zwei drei vier fünf sechs sieben |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
121 4 foooooooo bar eins zwei drei vier fünf sechs sieben |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
122 END |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
123 let lines1 =<< trim END1 |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
124 set nocp |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
125 set display=lastline |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
126 set cursorlineopt=screenline cursorline nu wrap sbr=> |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
127 hi CursorLineNr ctermfg=blue |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
128 25vsp |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
129 END1 |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
130 let lines2 =<< trim END2 |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
131 call cursor(1,1) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
132 END2 |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
133 call extend(lines, lines1) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
134 call extend(lines, ["call append(0, ".. string(file_content).. ')']) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
135 call extend(lines, lines2) |
30164
f7a2de8a4ddc
patch 9.0.0418: manually deleting temp test files
Bram Moolenaar <Bram@vim.org>
parents:
28809
diff
changeset
|
136 call writefile(lines, filename, 'D') |
18068
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
137 " basic test |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
138 let buf = RunVimInTerminal('-S '. filename, #{rows: 20}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
139 call VerifyScreenDump(buf, 'Test_'. filename. '_1', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
140 call term_sendkeys(buf, "fagj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
141 call VerifyScreenDump(buf, 'Test_'. filename. '_2', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
142 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
143 call VerifyScreenDump(buf, 'Test_'. filename. '_3', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
144 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
145 call VerifyScreenDump(buf, 'Test_'. filename. '_4', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
146 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
147 call VerifyScreenDump(buf, 'Test_'. filename. '_5', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
148 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
149 call VerifyScreenDump(buf, 'Test_'. filename. '_6', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
150 " test with set list and cursorlineopt containing number |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
151 call term_sendkeys(buf, "gg0") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
152 call term_sendkeys(buf, ":set list cursorlineopt+=number listchars=space:-\<cr>") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
153 call VerifyScreenDump(buf, 'Test_'. filename. '_7', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
154 call term_sendkeys(buf, "fagj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
155 call VerifyScreenDump(buf, 'Test_'. filename. '_8', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
156 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
157 call VerifyScreenDump(buf, 'Test_'. filename. '_9', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
158 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
159 call VerifyScreenDump(buf, 'Test_'. filename. '_10', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
160 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
161 call VerifyScreenDump(buf, 'Test_'. filename. '_11', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
162 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
163 call VerifyScreenDump(buf, 'Test_'. filename. '_12', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
164 if exists("+foldcolumn") && exists("+signcolumn") && exists("+breakindent") |
28171
b4c111ea83b1
patch 8.2.4611: typos in tests; one lua line not covered by test
Bram Moolenaar <Bram@vim.org>
parents:
28133
diff
changeset
|
165 " test with set foldcolumn signcolumn and breakindent |
18068
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
166 call term_sendkeys(buf, "gg0") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
167 call term_sendkeys(buf, ":set breakindent foldcolumn=2 signcolumn=yes\<cr>") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
168 call VerifyScreenDump(buf, 'Test_'. filename. '_13', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
169 call term_sendkeys(buf, "fagj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
170 call VerifyScreenDump(buf, 'Test_'. filename. '_14', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
171 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
172 call VerifyScreenDump(buf, 'Test_'. filename. '_15', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
173 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
174 call VerifyScreenDump(buf, 'Test_'. filename. '_16', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
175 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
176 call VerifyScreenDump(buf, 'Test_'. filename. '_17', {}) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
177 call term_sendkeys(buf, "gj") |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
178 call VerifyScreenDump(buf, 'Test_'. filename. '_18', {}) |
25517
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
179 call term_sendkeys(buf, ":set breakindent& foldcolumn& signcolumn&\<cr>") |
18068
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
180 endif |
25517
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
181 " showbreak should not be highlighted with CursorLine when 'number' is off |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
182 call term_sendkeys(buf, "gg0") |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
183 call term_sendkeys(buf, ":set list cursorlineopt=screenline listchars=space:-\<cr>") |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
184 call term_sendkeys(buf, ":set nonumber\<cr>") |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
185 call VerifyScreenDump(buf, 'Test_'. filename. '_19', {}) |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
186 call term_sendkeys(buf, "fagj") |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
187 call VerifyScreenDump(buf, 'Test_'. filename. '_20', {}) |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
188 call term_sendkeys(buf, "gj") |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
189 call VerifyScreenDump(buf, 'Test_'. filename. '_21', {}) |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
190 call term_sendkeys(buf, "gj") |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
191 call VerifyScreenDump(buf, 'Test_'. filename. '_22', {}) |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
192 call term_sendkeys(buf, "gj") |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
193 call VerifyScreenDump(buf, 'Test_'. filename. '_23', {}) |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
194 call term_sendkeys(buf, "gj") |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
195 call VerifyScreenDump(buf, 'Test_'. filename. '_24', {}) |
b04e76e66128
patch 8.2.3295: 'cursorline' should not apply to 'breakindent'
Bram Moolenaar <Bram@vim.org>
parents:
25334
diff
changeset
|
196 call term_sendkeys(buf, ":set list& cursorlineopt& listchars&\<cr>") |
18068
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
197 |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
198 call StopVimInTerminal(buf) |
1101eacc1444
patch 8.1.2029: cannot control 'cursorline' highlighting well
Bram Moolenaar <Bram@vim.org>
parents:
18047
diff
changeset
|
199 endfunc |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
19954
diff
changeset
|
200 |
25334
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
201 func Test_cursorline_redraw() |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
202 CheckScreendump |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
203 CheckOption cursorlineopt |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
204 |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
205 let textlines =<< END |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
206 When the option is a list of flags, {value} must be |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
207 exactly as they appear in the option. Remove flags |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
208 one by one to avoid problems. |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
209 Also see |:set-args| above. |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
210 |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
211 The {option} arguments to ":set" may be repeated. For example: > |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
212 :set ai nosi sw=3 ts=3 |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
213 If you make an error in one of the arguments, an error message will be given |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
214 and the following arguments will be ignored. |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
215 |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
216 *:set-verbose* |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
217 When 'verbose' is non-zero, displaying an option value will also tell where it |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
218 was last set. Example: > |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
219 :verbose set shiftwidth cindent? |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
220 < shiftwidth=4 ~ |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
221 Last set from modeline line 1 ~ |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
222 cindent ~ |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
223 Last set from /usr/local/share/vim/vim60/ftplugin/c.vim line 30 ~ |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
224 This is only done when specific option values are requested, not for ":verbose |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
225 set all" or ":verbose set" without an argument. |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
226 When the option was set by hand there is no "Last set" message. |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
227 When the option was set while executing a function, user command or |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
228 END |
30164
f7a2de8a4ddc
patch 9.0.0418: manually deleting temp test files
Bram Moolenaar <Bram@vim.org>
parents:
28809
diff
changeset
|
229 call writefile(textlines, 'Xtextfile', 'D') |
25334
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
230 |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
231 let script =<< trim END |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
232 set cursorline scrolloff=2 |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
233 normal 12G |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
234 END |
30164
f7a2de8a4ddc
patch 9.0.0418: manually deleting temp test files
Bram Moolenaar <Bram@vim.org>
parents:
28809
diff
changeset
|
235 call writefile(script, 'Xscript', 'D') |
25334
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
236 |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
237 let buf = RunVimInTerminal('-S Xscript Xtextfile', #{rows: 20, cols: 40}) |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
238 call VerifyScreenDump(buf, 'Test_cursorline_redraw_1', {}) |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
239 call term_sendkeys(buf, "zt") |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
240 call TermWait(buf) |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
241 call term_sendkeys(buf, "\<C-U>") |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
242 call VerifyScreenDump(buf, 'Test_cursorline_redraw_2', {}) |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
243 |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
244 call StopVimInTerminal(buf) |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
245 endfunc |
c11fc61b0872
patch 8.2.3204: display garbled when 'cursorline' is set and lines wrap
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
246 |
28133
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
247 func Test_cursorline_callback() |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
248 CheckScreendump |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
249 CheckFeature timers |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
250 |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
251 let lines =<< trim END |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
252 call setline(1, ['aaaaa', 'bbbbb', 'ccccc', 'ddddd']) |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
253 set cursorline |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
254 call cursor(4, 1) |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
255 |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
256 func Func(timer) |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
257 call cursor(2, 1) |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
258 endfunc |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
259 |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
260 call timer_start(300, 'Func') |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
261 END |
30164
f7a2de8a4ddc
patch 9.0.0418: manually deleting temp test files
Bram Moolenaar <Bram@vim.org>
parents:
28809
diff
changeset
|
262 call writefile(lines, 'Xcul_timer', 'D') |
28133
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
263 |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
264 let buf = RunVimInTerminal('-S Xcul_timer', #{rows: 8}) |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
265 call TermWait(buf, 310) |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
266 call VerifyScreenDump(buf, 'Test_cursorline_callback_1', {}) |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
267 |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
268 call StopVimInTerminal(buf) |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
269 endfunc |
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
270 |
28209
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
271 func Test_cursorline_screenline_update() |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
272 CheckScreendump |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
273 |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
274 let lines =<< trim END |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
275 call setline(1, repeat('xyz ', 30)) |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
276 set cursorline cursorlineopt=screenline |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
277 inoremap <F2> <Cmd>call cursor(1, 1)<CR> |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
278 END |
30164
f7a2de8a4ddc
patch 9.0.0418: manually deleting temp test files
Bram Moolenaar <Bram@vim.org>
parents:
28809
diff
changeset
|
279 call writefile(lines, 'Xcul_screenline', 'D') |
28209
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
280 |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
281 let buf = RunVimInTerminal('-S Xcul_screenline', #{rows: 8}) |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
282 call term_sendkeys(buf, "A") |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
283 call VerifyScreenDump(buf, 'Test_cursorline_screenline_1', {}) |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
284 call term_sendkeys(buf, "\<F2>") |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
285 call VerifyScreenDump(buf, 'Test_cursorline_screenline_2', {}) |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
286 call term_sendkeys(buf, "\<Esc>") |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
287 |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
288 call StopVimInTerminal(buf) |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
289 endfunc |
cbaac8434e4a
patch 8.2.4630: 'cursorline' not always updated with 'culopt' is "screenline"
Bram Moolenaar <Bram@vim.org>
parents:
28171
diff
changeset
|
290 |
28542
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
291 func Test_cursorline_cursorbind_horizontal_scroll() |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
292 CheckScreendump |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
293 |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
294 let lines =<< trim END |
28554
6481ccc776f9
patch 8.2.4801: fix for cursorbind fix not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
28544
diff
changeset
|
295 call setline(1, 'aa bb cc dd ee ff gg hh ii jj kk ll mm' .. |
28809
d0241e74bfdb
patch 8.2.4928: various white space and cosmetic mistakes
Bram Moolenaar <Bram@vim.org>
parents:
28554
diff
changeset
|
296 \ ' nn oo pp qq rr ss tt uu vv ww xx yy zz') |
28542
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
297 set nowrap |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
298 " The following makes the cursor apparent on the screen dump |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
299 set sidescroll=1 cursorcolumn |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
300 " add empty lines, required for cursorcolumn |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
301 call append(1, ['','','','']) |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
302 20vsp |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
303 windo :set cursorbind |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
304 END |
30164
f7a2de8a4ddc
patch 9.0.0418: manually deleting temp test files
Bram Moolenaar <Bram@vim.org>
parents:
28809
diff
changeset
|
305 call writefile(lines, 'Xhor_scroll', 'D') |
28542
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
306 |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
307 let buf = RunVimInTerminal('-S Xhor_scroll', #{rows: 8}) |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
308 call term_sendkeys(buf, "20l") |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
309 call VerifyScreenDump(buf, 'Test_hor_scroll_1', {}) |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
310 call term_sendkeys(buf, "10l") |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
311 call VerifyScreenDump(buf, 'Test_hor_scroll_2', {}) |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
312 call term_sendkeys(buf, ":windo :set cursorline\<cr>") |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
313 call term_sendkeys(buf, "0") |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
314 call term_sendkeys(buf, "20l") |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
315 call VerifyScreenDump(buf, 'Test_hor_scroll_3', {}) |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
316 call term_sendkeys(buf, "10l") |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
317 call VerifyScreenDump(buf, 'Test_hor_scroll_4', {}) |
28554
6481ccc776f9
patch 8.2.4801: fix for cursorbind fix not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
28544
diff
changeset
|
318 call term_sendkeys(buf, ":windo :set nocursorline nocursorcolumn\<cr>") |
6481ccc776f9
patch 8.2.4801: fix for cursorbind fix not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
28544
diff
changeset
|
319 call term_sendkeys(buf, "0") |
6481ccc776f9
patch 8.2.4801: fix for cursorbind fix not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
28544
diff
changeset
|
320 call term_sendkeys(buf, "40l") |
6481ccc776f9
patch 8.2.4801: fix for cursorbind fix not fully tested
Bram Moolenaar <Bram@vim.org>
parents:
28544
diff
changeset
|
321 call VerifyScreenDump(buf, 'Test_hor_scroll_5', {}) |
28542
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
322 |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
323 call StopVimInTerminal(buf) |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
324 endfunc |
51b5cab35afa
patch 8.2.4795: 'cursorbind' scrolling depends on whether 'cursorline' is set
Bram Moolenaar <Bram@vim.org>
parents:
28209
diff
changeset
|
325 |
28133
373f1afadfa3
patch 8.2.4591: cursor line not updated when a callback moves the cursor
Bram Moolenaar <Bram@vim.org>
parents:
27626
diff
changeset
|
326 |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
19954
diff
changeset
|
327 " vim: shiftwidth=2 sts=2 expandtab |