annotate src/testdir/test_statusline.vim @ 26595:1d0cf6a2efe6

Added tag v8.2.3826 for changeset b12d8a5af20e7c9170cc527a390766bf320b4ab6
author Bram Moolenaar <Bram@vim.org>
date Thu, 16 Dec 2021 17:00:05 +0100
parents 637588377056
children 8f1f4f6c87ad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
1 " Test 'statusline'
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
2 "
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
3 " Not tested yet:
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
4 " %N
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
5
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
6 source view_util.vim
18767
068337e86133 patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents: 18746
diff changeset
7 source check.vim
19354
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
8 source screendump.vim
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
9
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
10 func s:get_statusline()
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
11 return ScreenLines(&lines - 1, &columns)[0]
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
12 endfunc
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
13
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
14 func StatuslineWithCaughtError()
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 let s:func_in_statusline_called = 1
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 try
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 call eval('unknown expression')
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 catch
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 endtry
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 return ''
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
21 endfunc
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
23 func StatuslineWithError()
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 let s:func_in_statusline_called = 1
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 call eval('unknown expression')
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 return ''
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
27 endfunc
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
29 " Function used to display syntax group.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
30 func SyntaxItem()
16740
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
31 call assert_equal(s:expected_curbuf, g:actual_curbuf)
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
32 call assert_equal(s:expected_curwin, g:actual_curwin)
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
33 return synIDattr(synID(line("."), col("."),1), "name")
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
34 endfunc
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
35
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
36 func Test_caught_error_in_statusline()
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37 let s:func_in_statusline_called = 0
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 set laststatus=2
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
39 let statusline = '%{StatuslineWithCaughtError()}'
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40 let &statusline = statusline
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
41 redrawstatus
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 call assert_true(s:func_in_statusline_called)
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43 call assert_equal(statusline, &statusline)
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
44 set statusline=
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
45 endfunc
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
46
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
47 func Test_statusline_will_be_disabled_with_error()
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
48 let s:func_in_statusline_called = 0
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
49 set laststatus=2
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
50 let statusline = '%{StatuslineWithError()}'
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
51 try
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
52 let &statusline = statusline
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
53 redrawstatus
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
54 catch
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
55 endtry
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
56 call assert_true(s:func_in_statusline_called)
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
57 call assert_equal('', &statusline)
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
58 set statusline=
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
59 endfunc
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
60
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
61 func Test_statusline()
18767
068337e86133 patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents: 18746
diff changeset
62 CheckFeature quickfix
068337e86133 patch 8.1.2373: cannot build with +popupwin but without +quickfix
Bram Moolenaar <Bram@vim.org>
parents: 18746
diff changeset
63
20984
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
64 " %a: Argument list ({current} of {max})
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
65 set statusline=%a
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
66 call assert_match('^\s*$', s:get_statusline())
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
67 arglocal a1 a2
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
68 rewind
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
69 call assert_match('^ (1 of 2)\s*$', s:get_statusline())
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
70 next
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
71 call assert_match('^ (2 of 2)\s*$', s:get_statusline())
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
72 e Xstatusline
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
73 call assert_match('^ ((2) of 2)\s*$', s:get_statusline())
fe06ee7d3511 patch 8.2.1043: %a item in 'statusline' not tested
Bram Moolenaar <Bram@vim.org>
parents: 19954
diff changeset
74
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
75 only
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
76 set laststatus=2
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
77 set splitbelow
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
78 call setline(1, range(1, 10000))
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
79
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
80 " %b: Value of character under cursor.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
81 " %B: As above, in hexadecimal.
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
82 call cursor(9000, 1)
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
83 set statusline=%b,%B
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
84 call assert_match('^57,39\s*$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
85
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
86 " %o: Byte number in file of byte under cursor, first byte is 1.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
87 " %O: As above, in hexadecimal.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
88 set statusline=%o,%O
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
89 set fileformat=dos
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
90 call assert_match('^52888,CE98\s*$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
91 set fileformat=mac
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
92 call assert_match('^43889,AB71\s*$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
93 set fileformat=unix
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
94 call assert_match('^43889,AB71\s*$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
95 set fileformat&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
96
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
97 " %f: Path to the file in the buffer, as typed or relative to current dir.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
98 set statusline=%f
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
99 call assert_match('^Xstatusline\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
100
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
101 " %F: Full path to the file in the buffer.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
102 set statusline=%F
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
103 call assert_match('/testdir/Xstatusline\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
104
21004
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
105 " Test for min and max width with %(. For some reason, if this test is moved
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
106 " after the below test for the help buffer flag, then the code to truncate
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
107 " the string is not executed.
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
108 set statusline=%015(%f%)
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
109 call assert_match('^ Xstatusline\s*$', s:get_statusline())
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
110 set statusline=%.6(%f%)
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
111 call assert_match('^<sline\s*$', s:get_statusline())
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
112 set statusline=%14f
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
113 call assert_match('^ Xstatusline\s*$', s:get_statusline())
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
114 set statusline=%.4L
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
115 call assert_match('^10>3\s*$', s:get_statusline())
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
116
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
117 " %h: Help buffer flag, text is "[help]".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
118 " %H: Help buffer flag, text is ",HLP".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
119 set statusline=%h,%H
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
120 call assert_match('^,\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
121 help
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
122 call assert_match('^\[Help\],HLP\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
123 helpclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
124
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
125 " %k: Value of "b:keymap_name" or 'keymap'
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
126 " when :lmap mappings are being used: <keymap>"
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
127 set statusline=%k
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
128 if has('keymap')
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
129 set keymap=esperanto
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
130 call assert_match('^<Eo>\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
131 set keymap&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
132 else
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
133 call assert_match('^\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
134 endif
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
135
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
136 " %l: Line number.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
137 " %L: Number of line in buffer.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
138 " %c: Column number.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
139 set statusline=%l/%L,%c
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
140 call assert_match('^9000/10000,1\s*$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
141
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
142 " %m: Modified flag, text is "[+]", "[-]" if 'modifiable' is off.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
143 " %M: Modified flag, text is ",+" or ",-".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
144 set statusline=%m%M
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
145 call assert_match('^\[+\],+\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
146 set nomodifiable
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
147 call assert_match('^\[+-\],+-\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
148 write
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
149 call assert_match('^\[-\],-\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
150 set modifiable&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
151 call assert_match('^\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
152
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
153 " %n: Buffer number.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
154 set statusline=%n
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
155 call assert_match('^'.bufnr('%').'\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
156
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
157 " %p: Percentage through file in lines as in CTRL-G.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
158 " %P: Percentage through file of displayed window.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
159 set statusline=%p,%P
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
160 0
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
161 call assert_match('^0,Top\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
162 norm G
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
163 call assert_match('^100,Bot\s*$', s:get_statusline())
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
164 9000
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
165 " Don't check the exact percentage as it depends on the window size
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
166 call assert_match('^90,\(Top\|Bot\|\d\+%\)\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
167
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
168 " %q: "[Quickfix List]", "[Location List]" or empty.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
169 set statusline=%q
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
170 call assert_match('^\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
171 copen
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
172 call assert_match('^\[Quickfix List\]\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
173 cclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
174 lexpr getline(1, 2)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
175 lopen
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
176 call assert_match('^\[Location List\]\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
177 lclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
178
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
179 " %r: Readonly flag, text is "[RO]".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
180 " %R: Readonly flag, text is ",RO".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
181 set statusline=%r,%R
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
182 call assert_match('^,\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
183 help
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
184 call assert_match('^\[RO\],RO\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
185 helpclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
186
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
187 " %t: File name (tail) of file in the buffer.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
188 set statusline=%t
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
189 call assert_match('^Xstatusline\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
190
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
191 " %v: Virtual column number.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
192 " %V: Virtual column number as -{num}. Not displayed if equal to 'c'.
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
193 call cursor(9000, 2)
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
194 set statusline=%v,%V
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
195 call assert_match('^2,\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
196 set virtualedit=all
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
197 norm 10|
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
198 call assert_match('^10,-10\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
199 set virtualedit&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
200
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
201 " %w: Preview window flag, text is "[Preview]".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
202 " %W: Preview window flag, text is ",PRV".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
203 set statusline=%w%W
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
204 call assert_match('^\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
205 pedit
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
206 wincmd j
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
207 call assert_match('^\[Preview\],PRV\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
208 pclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
209
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
210 " %y: Type of file in the buffer, e.g., "[vim]". See 'filetype'.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
211 " %Y: Type of file in the buffer, e.g., ",VIM". See 'filetype'.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
212 set statusline=%y\ %Y
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
213 call assert_match('^\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
214 setfiletype vim
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
215 call assert_match('^\[vim\] VIM\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
216
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
217 " %=: Separation point between left and right aligned items.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
218 set statusline=foo%=bar
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
219 call assert_match('^foo\s\+bar\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
220
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
221 " Test min/max width, leading zeroes, left/right justify.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
222 set statusline=%04B
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
223 call cursor(9000, 1)
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
224 call assert_match('^0039\s*$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
225 set statusline=#%4B#
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
226 call assert_match('^# 39#\s*$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
227 set statusline=#%-4B#
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
228 call assert_match('^#39 #\s*$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
229 set statusline=%.6f
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
230 call assert_match('^<sline\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
231
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
232 " %<: Where to truncate.
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
233 " First check with when %< should not truncate with many columns
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
234 exe 'set statusline=a%<b' . repeat('c', &columns - 3) . 'd'
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
235 call assert_match('^abc\+d$', s:get_statusline())
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
236 exe 'set statusline=a' . repeat('b', &columns - 2) . '%<c'
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
237 call assert_match('^ab\+c$', s:get_statusline())
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
238 " Then check when %< should truncate when there with too few columns.
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
239 exe 'set statusline=a%<b' . repeat('c', &columns - 2) . 'd'
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
240 call assert_match('^a<c\+d$', s:get_statusline())
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
241 exe 'set statusline=a' . repeat('b', &columns - 1) . '%<c'
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
242 call assert_match('^ab\+>$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
243
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
244 "%{: Evaluate expression between '%{' and '}' and substitute result.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
245 syntax on
16740
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
246 let s:expected_curbuf = string(bufnr(''))
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
247 let s:expected_curwin = string(win_getid())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
248 set statusline=%{SyntaxItem()}
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
249 call assert_match('^vimNumber\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
250 s/^/"/
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
251 call assert_match('^vimLineComment\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
252 syntax off
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
253
24630
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
254 "%{%expr%}: evaluates enxpressions present in result of expr
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
255 func! Inner_eval()
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
256 return '%n some other text'
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
257 endfunc
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
258 func! Outer_eval()
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
259 return 'some text %{%Inner_eval()%}'
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
260 endfunc
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
261 set statusline=%{%Outer_eval()%}
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
262 call assert_match('^some text ' . bufnr() . ' some other text\s*$', s:get_statusline())
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
263 delfunc Inner_eval
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
264 delfunc Outer_eval
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
265
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
266 "%{%expr%}: Doesn't get stuck in recursion
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
267 func! Recurse_eval()
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
268 return '%{%Recurse_eval()%}'
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
269 endfunc
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
270 set statusline=%{%Recurse_eval()%}
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
271 call assert_match('^%{%Recurse_eval()%}\s*$', s:get_statusline())
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
272 delfunc Recurse_eval
4cf4d7a71fac patch 8.2.2854: custom statusline cannot contain % items
Bram Moolenaar <Bram@vim.org>
parents: 24394
diff changeset
273
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
274 "%(: Start of item group.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
275 set statusline=ab%(cd%q%)de
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
276 call assert_match('^abde\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
277 copen
11525
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 11075
diff changeset
278 call assert_match('^abcd\[Quickfix List]de\s*$', s:get_statusline())
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
279 cclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
280
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
281 " %#: Set highlight group. The name must follow and then a # again.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
282 set statusline=ab%#Todo#cd%#Error#ef
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
283 call assert_match('^abcdef\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
284 let sa1=screenattr(&lines - 1, 1)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
285 let sa2=screenattr(&lines - 1, 3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
286 let sa3=screenattr(&lines - 1, 5)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
287 call assert_notequal(sa1, sa2)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
288 call assert_notequal(sa1, sa3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
289 call assert_notequal(sa2, sa3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
290 call assert_equal(sa1, screenattr(&lines - 1, 2))
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
291 call assert_equal(sa2, screenattr(&lines - 1, 4))
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
292 call assert_equal(sa3, screenattr(&lines - 1, 6))
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
293 call assert_equal(sa3, screenattr(&lines - 1, 7))
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
294
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
295 " %*: Set highlight group to User{N}
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
296 set statusline=a%1*b%0*c
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
297 call assert_match('^abc\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
298 let sa1=screenattr(&lines - 1, 1)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
299 let sa2=screenattr(&lines - 1, 2)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
300 let sa3=screenattr(&lines - 1, 3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
301 call assert_equal(sa1, sa3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
302 call assert_notequal(sa1, sa2)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
303
12660
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
304 " An empty group that contains highlight changes
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
305 let g:a = ''
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
306 set statusline=ab%(cd%1*%{g:a}%*%)de
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
307 call assert_match('^abde\s*$', s:get_statusline())
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
308 let sa1=screenattr(&lines - 1, 1)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
309 let sa2=screenattr(&lines - 1, 4)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
310 call assert_equal(sa1, sa2)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
311 let g:a = 'X'
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
312 call assert_match('^abcdXde\s*$', s:get_statusline())
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
313 let sa1=screenattr(&lines - 1, 1)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
314 let sa2=screenattr(&lines - 1, 5)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
315 let sa3=screenattr(&lines - 1, 7)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
316 call assert_equal(sa1, sa3)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
317 call assert_notequal(sa1, sa2)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
318
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
319 let g:a = ''
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
320 set statusline=ab%1*%(cd%*%{g:a}%1*%)de
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
321 call assert_match('^abde\s*$', s:get_statusline())
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
322 let sa1=screenattr(&lines - 1, 1)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
323 let sa2=screenattr(&lines - 1, 4)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
324 call assert_notequal(sa1, sa2)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
325 let g:a = 'X'
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
326 call assert_match('^abcdXde\s*$', s:get_statusline())
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
327 let sa1=screenattr(&lines - 1, 1)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
328 let sa2=screenattr(&lines - 1, 3)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
329 let sa3=screenattr(&lines - 1, 5)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
330 let sa4=screenattr(&lines - 1, 7)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
331 call assert_notequal(sa1, sa2)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
332 call assert_equal(sa1, sa3)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
333 call assert_equal(sa2, sa4)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
334
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
335 " An empty group that contains highlight changes and doesn't reset them
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
336 let g:a = ''
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
337 set statusline=ab%(cd%1*%{g:a}%)de
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
338 call assert_match('^abcdde\s*$', s:get_statusline())
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
339 let sa1=screenattr(&lines - 1, 1)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
340 let sa2=screenattr(&lines - 1, 5)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
341 call assert_notequal(sa1, sa2)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
342 let g:a = 'X'
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
343 call assert_match('^abcdXde\s*$', s:get_statusline())
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
344 let sa1=screenattr(&lines - 1, 1)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
345 let sa2=screenattr(&lines - 1, 5)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
346 let sa3=screenattr(&lines - 1, 7)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
347 call assert_notequal(sa1, sa2)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
348 call assert_equal(sa2, sa3)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
349
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
350 let g:a = ''
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
351 set statusline=ab%1*%(cd%*%{g:a}%)de
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
352 call assert_match('^abcdde\s*$', s:get_statusline())
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
353 let sa1=screenattr(&lines - 1, 1)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
354 let sa2=screenattr(&lines - 1, 3)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
355 let sa3=screenattr(&lines - 1, 5)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
356 call assert_notequal(sa1, sa2)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
357 call assert_equal(sa1, sa3)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
358 let g:a = 'X'
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
359 call assert_match('^abcdXde\s*$', s:get_statusline())
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
360 let sa1=screenattr(&lines - 1, 1)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
361 let sa2=screenattr(&lines - 1, 3)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
362 let sa3=screenattr(&lines - 1, 5)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
363 let sa4=screenattr(&lines - 1, 7)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
364 call assert_notequal(sa1, sa2)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
365 call assert_equal(sa1, sa3)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
366 call assert_equal(sa1, sa4)
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
367
12684
185f8dbdcf26 patch 8.0.1220: skipping empty statusline groups is not correct
Christian Brabandt <cb@256bit.org>
parents: 12660
diff changeset
368 let g:a = ''
185f8dbdcf26 patch 8.0.1220: skipping empty statusline groups is not correct
Christian Brabandt <cb@256bit.org>
parents: 12660
diff changeset
369 set statusline=%#Error#{%(\ %{g:a}\ %)}
185f8dbdcf26 patch 8.0.1220: skipping empty statusline groups is not correct
Christian Brabandt <cb@256bit.org>
parents: 12660
diff changeset
370 call assert_match('^{}\s*$', s:get_statusline())
185f8dbdcf26 patch 8.0.1220: skipping empty statusline groups is not correct
Christian Brabandt <cb@256bit.org>
parents: 12660
diff changeset
371 let g:a = 'X'
185f8dbdcf26 patch 8.0.1220: skipping empty statusline groups is not correct
Christian Brabandt <cb@256bit.org>
parents: 12660
diff changeset
372 call assert_match('^{ X }\s*$', s:get_statusline())
185f8dbdcf26 patch 8.0.1220: skipping empty statusline groups is not correct
Christian Brabandt <cb@256bit.org>
parents: 12660
diff changeset
373
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
374 " %%: a percent sign.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
375 set statusline=10%%
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
376 call assert_match('^10%\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
377
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
378 " %!: evaluated expression is used as the option value
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
379 set statusline=%!2*3+1
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
380 call assert_match('7\s*$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
381
16740
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
382 func GetNested()
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
383 call assert_equal(string(win_getid()), g:actual_curwin)
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
384 call assert_equal(string(bufnr('')), g:actual_curbuf)
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
385 return 'nested'
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
386 endfunc
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
387 func GetStatusLine()
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
388 call assert_equal(win_getid(), g:statusline_winid)
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
389 return 'the %{GetNested()} line'
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
390 endfunc
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
391 set statusline=%!GetStatusLine()
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
392 call assert_match('the nested line', s:get_statusline())
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
393 call assert_false(exists('g:actual_curwin'))
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
394 call assert_false(exists('g:actual_curbuf'))
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
395 call assert_false(exists('g:statusline_winid'))
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
396 delfunc GetNested
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
397 delfunc GetStatusLine
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
398
22721
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
399 " Test statusline works with 80+ items
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
400 function! StatusLabel()
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
401 redrawstatus
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
402 return '[label]'
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
403 endfunc
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
404 let statusline = '%{StatusLabel()}'
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
405 for i in range(150)
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
406 let statusline .= '%#TabLine' . (i % 2 == 0 ? 'Fill' : 'Sel') . '#' . string(i)[0]
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
407 endfor
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
408 let &statusline = statusline
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
409 redrawstatus
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
410 set statusline&
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
411 delfunc StatusLabel
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
412
92a100fc5e17 patch 8.2.1909: number of status line items is limited to 80
Bram Moolenaar <Bram@vim.org>
parents: 22464
diff changeset
413
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
414 " Check statusline in current and non-current window
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
415 " with the 'fillchars' option.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
416 set fillchars=stl:^,stlnc:=,vert:\|,fold:-,diff:-
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
417 vsplit
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
418 set statusline=x%=y
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
419 call assert_match('^x^\+y^x=\+y$', s:get_statusline())
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
420 set fillchars&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
421 close
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
422
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
423 %bw!
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
424 call delete('Xstatusline')
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
425 set statusline&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
426 set laststatus&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
427 set splitbelow&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
428 endfunc
18746
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
429
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
430 func Test_statusline_visual()
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
431 func CallWordcount()
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
432 call wordcount()
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
433 endfunc
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
434 new x1
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
435 setl statusline=count=%{CallWordcount()}
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
436 " buffer must not be empty
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
437 call setline(1, 'hello')
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
438
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
439 " window with more lines than x1
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
440 new x2
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
441 call setline(1, range(10))
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
442 $
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
443 " Visual mode in line below liast line in x1 should not give ml_get error
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
444 call feedkeys("\<C-V>", "xt")
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
445 redraw
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
446
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
447 delfunc CallWordcount
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
448 bwipe! x1
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
449 bwipe! x2
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
450 endfunc
19354
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
451
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
452 func Test_statusline_removed_group()
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
453 CheckScreendump
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
454
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
455 let lines =<< trim END
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
456 scriptencoding utf-8
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
457 set laststatus=2
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
458 let &statusline = '%#StatColorHi2#%(✓%#StatColorHi2#%) Q≡'
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
459 END
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
460 call writefile(lines, 'XTest_statusline')
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
461
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
462 let buf = RunVimInTerminal('-S XTest_statusline', {'rows': 10, 'cols': 50})
19954
c087099e9163 patch 8.2.0533: tests using term_wait() can still be flaky
Bram Moolenaar <Bram@vim.org>
parents: 19354
diff changeset
463 call TermWait(buf, 50)
19354
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
464 call VerifyScreenDump(buf, 'Test_statusline_1', {})
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
465
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
466 " clean up
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
467 call StopVimInTerminal(buf)
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
468 call delete('XTest_statusline')
1d3b2ce65ae0 patch 8.2.0235: draw error when an empty group is removed from 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 18767
diff changeset
469 endfunc
21004
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
470
24291
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
471 func Test_statusline_using_mode()
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
472 CheckScreendump
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
473
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
474 let lines =<< trim END
24394
5858745d393a patch 8.2.2737: status line not updated when local 'statusline' option set
Bram Moolenaar <Bram@vim.org>
parents: 24291
diff changeset
475 setlocal statusline=-%{mode()}-
5858745d393a patch 8.2.2737: status line not updated when local 'statusline' option set
Bram Moolenaar <Bram@vim.org>
parents: 24291
diff changeset
476 split
5858745d393a patch 8.2.2737: status line not updated when local 'statusline' option set
Bram Moolenaar <Bram@vim.org>
parents: 24291
diff changeset
477 setlocal statusline=+%{mode()}+
24291
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
478 END
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
479 call writefile(lines, 'XTest_statusline')
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
480
24394
5858745d393a patch 8.2.2737: status line not updated when local 'statusline' option set
Bram Moolenaar <Bram@vim.org>
parents: 24291
diff changeset
481 let buf = RunVimInTerminal('-S XTest_statusline', {'rows': 7, 'cols': 50})
24291
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
482 call VerifyScreenDump(buf, 'Test_statusline_mode_1', {})
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
483
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
484 call term_sendkeys(buf, ":")
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
485 call VerifyScreenDump(buf, 'Test_statusline_mode_2', {})
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
486
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
487 " clean up
24394
5858745d393a patch 8.2.2737: status line not updated when local 'statusline' option set
Bram Moolenaar <Bram@vim.org>
parents: 24291
diff changeset
488 call term_sendkeys(buf, "close\<CR>")
24291
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
489 call StopVimInTerminal(buf)
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
490 call delete('XTest_statusline')
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
491 endfunc
93b401236991 patch 8.2.2686: status line is not updated when going to cmdline mode
Bram Moolenaar <Bram@vim.org>
parents: 24055
diff changeset
492
22464
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
493 func Test_statusline_after_split_vsplit()
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
494 only
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
495
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
496 " Make the status line of each window show the window number.
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
497 set ls=2 stl=%{winnr()}
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
498
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
499 split | redraw
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
500 vsplit | redraw
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
501
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
502 " The status line of the third window should read '3' here.
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
503 call assert_equal('3', nr2char(screenchar(&lines - 1, 1)))
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
504
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
505 only
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
506 set ls& stl&
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
507 endfunc
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
508
24055
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
509 " Test using a multibyte character for 'stl' and 'stlnc' items in 'fillchars'
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
510 " with a custom 'statusline'
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
511 func Test_statusline_mbyte_fillchar()
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
512 only
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
513 set laststatus=2
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
514 set fillchars=vert:\|,fold:-,stl:━,stlnc:═
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
515 set statusline=a%=b
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
516 call assert_match('^a\+━\+b$', s:get_statusline())
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
517 vnew
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
518 call assert_match('^a\+━\+b━a\+═\+b$', s:get_statusline())
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
519 wincmd w
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
520 call assert_match('^a\+═\+b═a\+━\+b$', s:get_statusline())
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
521 set statusline& fillchars& laststatus&
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
522 %bw!
90d1636a8fcb patch 8.2.2569: 'fillchars' "stl" and "stlnc" items must be single byte
Bram Moolenaar <Bram@vim.org>
parents: 22721
diff changeset
523 endfunc
22464
b74bdd85bb26 patch 8.2.1780: statusline not updated when splitting windows
Bram Moolenaar <Bram@vim.org>
parents: 21004
diff changeset
524
25907
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
525 " Used to write beyond allocated memory. This assumes MAXPATHL is 4096 bytes.
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
526 func Test_statusline_verylong_filename()
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
527 let fname = repeat('x', 4090)
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
528 exe "new " .. fname
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
529 set buftype=help
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
530 set previewwindow
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
531 redraw
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
532 bwipe!
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
533 endfunc
637588377056 patch 8.2.3487: illegal memory access if buffer name is very long
Bram Moolenaar <Bram@vim.org>
parents: 24630
diff changeset
534
21004
0650d220f742 patch 8.2.1053: insufficient testing for 'statusline' and 'tabline'
Bram Moolenaar <Bram@vim.org>
parents: 20984
diff changeset
535 " vim: shiftwidth=2 sts=2 expandtab