annotate src/testdir/test_statusline.vim @ 18746:64eea864dff6 v8.1.2363

patch 8.1.2363: ml_get error when accessing Visual area in 'statusline' Commit: https://github.com/vim/vim/commit/dee50a518007b3a59f54b8ad018b6a83993593e7 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Nov 30 15:05:22 2019 +0100 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline' Problem: ml_get error when accessing Visual area in 'statusline'. Solution: Disable Visual mode when using another window. (closes https://github.com/vim/vim/issues/5278)
author Bram Moolenaar <Bram@vim.org>
date Sat, 30 Nov 2019 15:15:04 +0100
parents dc85d49349f7
children 068337e86133
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 " %a
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
5 " %N
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
6 " %T
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
7 " %X
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
8
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
9 source view_util.vim
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
10
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
11 func s:get_statusline()
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
12 return ScreenLines(&lines - 1, &columns)[0]
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
13 endfunc
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
14
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
15 func StatuslineWithCaughtError()
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 let s:func_in_statusline_called = 1
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 try
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 call eval('unknown expression')
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 catch
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 endtry
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 return ''
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
22 endfunc
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
24 func StatuslineWithError()
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 let s:func_in_statusline_called = 1
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 call eval('unknown expression')
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27 return ''
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
28 endfunc
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
30 " Function used to display syntax group.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
31 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
32 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
33 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
34 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
35 endfunc
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
36
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
37 func Test_caught_error_in_statusline()
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 let s:func_in_statusline_called = 0
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
39 set laststatus=2
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40 let statusline = '%{StatuslineWithCaughtError()}'
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
41 let &statusline = statusline
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 redrawstatus
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43 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
44 call assert_equal(statusline, &statusline)
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
45 set statusline=
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
46 endfunc
8847
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
47
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
48 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
49 let s:func_in_statusline_called = 0
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
50 set laststatus=2
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
51 let statusline = '%{StatuslineWithError()}'
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
52 try
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
53 let &statusline = statusline
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
54 redrawstatus
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
55 catch
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
56 endtry
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
57 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
58 call assert_equal('', &statusline)
470ea7526cc6 commit https://github.com/vim/vim/commit/a742e084b677f76c67e9e52c4f9fb9ab24002e20
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
59 set statusline=
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
60 endfunc
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
61
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
62 func Test_statusline()
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
63 new Xstatusline
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
64 only
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
65 set laststatus=2
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
66 set splitbelow
16332
97e15f5b0082 patch 8.1.1171: statusline test could fail in large terminal
Bram Moolenaar <Bram@vim.org>
parents: 12684
diff changeset
67 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
68
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
69 " %b: Value of character under cursor.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
70 " %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
71 call cursor(9000, 1)
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
72 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
73 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
74
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
75 " %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
76 " %O: As above, in hexadecimal.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
77 set statusline=%o,%O
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
78 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
79 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
80 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
81 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
82 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
83 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
84 set fileformat&
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 " %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
87 set statusline=%f
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
88 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
89
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
90 " %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
91 set statusline=%F
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
92 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
93
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
94 " %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
95 " %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
96 set statusline=%h,%H
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
97 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
98 help
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
99 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
100 helpclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
101
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
102 " %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
103 " 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
104 set statusline=%k
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
105 if has('keymap')
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
106 set keymap=esperanto
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
107 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
108 set keymap&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
109 else
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
110 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
111 endif
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
112
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
113 " %l: Line number.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
114 " %L: Number of line in buffer.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
115 " %c: Column number.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
116 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
117 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
118
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
119 " %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
120 " %M: Modified flag, text is ",+" or ",-".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
121 set statusline=%m%M
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
122 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
123 set nomodifiable
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
124 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
125 write
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
126 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
127 set modifiable&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
128 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
129
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
130 " %n: Buffer number.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
131 set statusline=%n
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
132 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
133
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
134 " %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
135 " %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
136 set statusline=%p,%P
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
137 0
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
138 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
139 norm G
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
140 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
141 9000
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
142 " 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
143 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
144
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
145 " %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
146 set statusline=%q
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 copen
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
149 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
150 cclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
151 lexpr getline(1, 2)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
152 lopen
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
153 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
154 lclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
155
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
156 " %r: Readonly flag, text is "[RO]".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
157 " %R: Readonly flag, text is ",RO".
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
158 set statusline=%r,%R
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
159 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
160 help
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
161 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
162 helpclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
163
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
164 " %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
165 set statusline=%t
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
166 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
167
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
168 " %v: Virtual column number.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
169 " %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
170 call cursor(9000, 2)
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
171 set statusline=%v,%V
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
172 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
173 set virtualedit=all
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
174 norm 10|
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
175 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
176 set virtualedit&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
177
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
178 " %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
179 " %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
180 set statusline=%w%W
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
181 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
182 pedit
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
183 wincmd j
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
184 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
185 pclose
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 " %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
188 " %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
189 set statusline=%y\ %Y
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
190 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
191 setfiletype vim
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
192 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
193
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
194 " %=: 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
195 set statusline=foo%=bar
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
196 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
197
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
198 " 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
199 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
200 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
201 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
202 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
203 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
204 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
205 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
206 set statusline=%.6f
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
207 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
208
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
209 " %<: 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
210 " 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
211 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
212 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
213 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
214 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
215 " 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
216 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
217 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
218 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
219 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
220
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
221 "%{: 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
222 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
223 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
224 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
225 set statusline=%{SyntaxItem()}
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
226 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
227 s/^/"/
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
228 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
229 syntax off
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
230
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
231 "%(: Start of item group.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
232 set statusline=ab%(cd%q%)de
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
233 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
234 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
235 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
236 cclose
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
237
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
238 " %#: 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
239 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
240 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
241 let sa1=screenattr(&lines - 1, 1)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
242 let sa2=screenattr(&lines - 1, 3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
243 let sa3=screenattr(&lines - 1, 5)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
244 call assert_notequal(sa1, sa2)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
245 call assert_notequal(sa1, sa3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
246 call assert_notequal(sa2, sa3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
247 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
248 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
249 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
250 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
251
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
252 " %*: Set highlight group to User{N}
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
253 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
254 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
255 let sa1=screenattr(&lines - 1, 1)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
256 let sa2=screenattr(&lines - 1, 2)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
257 let sa3=screenattr(&lines - 1, 3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
258 call assert_equal(sa1, sa3)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
259 call assert_notequal(sa1, sa2)
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
260
12660
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
261 " 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
262 let g:a = ''
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
263 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
264 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
265 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
266 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
267 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
268 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
269 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
270 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
271 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
272 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
273 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
274 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
275
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
276 let g:a = ''
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
277 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
278 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
279 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
280 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
281 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
282 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
283 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
284 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
285 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
286 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
287 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
288 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
289 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
290 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
291
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
292 " 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
293 let g:a = ''
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
294 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
295 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
296 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
297 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
298 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
299 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
300 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
301 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
302 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
303 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
304 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
305 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
306
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
307 let g:a = ''
ac6e56d8950e patch 8.0.1208: 'statusline' drops empty group with highlight change
Christian Brabandt <cb@256bit.org>
parents: 11525
diff changeset
308 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
309 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
310 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
311 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
312 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
313 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
314 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
315 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
316 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
317 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
318 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
319 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
320 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
321 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
322 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
323 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
324
12684
185f8dbdcf26 patch 8.0.1220: skipping empty statusline groups is not correct
Christian Brabandt <cb@256bit.org>
parents: 12660
diff changeset
325 let g:a = ''
185f8dbdcf26 patch 8.0.1220: skipping empty statusline groups is not correct
Christian Brabandt <cb@256bit.org>
parents: 12660
diff changeset
326 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
327 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
328 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
329 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
330
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
331 " %%: a percent sign.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
332 set statusline=10%%
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
333 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
334
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
335 " %!: 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
336 set statusline=%!2*3+1
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
337 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
338
16740
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
339 func GetNested()
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
340 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
341 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
342 return 'nested'
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
343 endfunc
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
344 func GetStatusLine()
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
345 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
346 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
347 endfunc
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
348 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
349 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
350 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
351 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
352 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
353 delfunc GetNested
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
354 delfunc GetStatusLine
dc85d49349f7 patch 8.1.1372: when evaluating 'statusline' the current window is unknown
Bram Moolenaar <Bram@vim.org>
parents: 16332
diff changeset
355
11075
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
356 " 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
357 " with the 'fillchars' option.
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
358 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
359 vsplit
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
360 set statusline=x%=y
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
361 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
362 set fillchars&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
363 close
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
364
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
365 %bw!
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
366 call delete('Xstatusline')
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
367 set statusline&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
368 set laststatus&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
369 set splitbelow&
a8be0c7169b1 patch 8.0.0426: insufficient testing for statusline
Christian Brabandt <cb@256bit.org>
parents: 8847
diff changeset
370 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
371
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
372 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
373 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
374 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
375 endfunc
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
376 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
377 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
378 " 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
379 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
380
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
381 " 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
382 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
383 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
384 $
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
385 " 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
386 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
387 redraw
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
388
64eea864dff6 patch 8.1.2363: ml_get error when accessing Visual area in 'statusline'
Bram Moolenaar <Bram@vim.org>
parents: 16740
diff changeset
389 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
390 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
391 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
392 endfunc