blob: 6cfed7d1667510696bc98a396efc94fbfcb31ba5 [file] [log] [blame]
Bram Moolenaare12bab32019-01-08 22:02:56 +01001
2source shared.vim
3
4func TablineWithCaughtError()
Bram Moolenaarf73d3bc2016-04-11 21:55:15 +02005 let s:func_in_tabline_called = 1
6 try
7 call eval('unknown expression')
8 catch
9 endtry
10 return ''
Bram Moolenaare12bab32019-01-08 22:02:56 +010011endfunc
Bram Moolenaarf73d3bc2016-04-11 21:55:15 +020012
Bram Moolenaare12bab32019-01-08 22:02:56 +010013func TablineWithError()
Bram Moolenaarf73d3bc2016-04-11 21:55:15 +020014 let s:func_in_tabline_called = 1
15 call eval('unknown expression')
16 return ''
Bram Moolenaare12bab32019-01-08 22:02:56 +010017endfunc
Bram Moolenaarf73d3bc2016-04-11 21:55:15 +020018
Bram Moolenaare12bab32019-01-08 22:02:56 +010019func Test_caught_error_in_tabline()
Bram Moolenaar73cd8fb2016-04-11 22:49:03 +020020 if has('gui')
21 set guioptions-=e
22 endif
Bram Moolenaarf73d3bc2016-04-11 21:55:15 +020023 let showtabline_save = &showtabline
24 set showtabline=2
25 let s:func_in_tabline_called = 0
26 let tabline = '%{TablineWithCaughtError()}'
27 let &tabline = tabline
28 redraw!
29 call assert_true(s:func_in_tabline_called)
30 call assert_equal(tabline, &tabline)
31 set tabline=
32 let &showtabline = showtabline_save
Bram Moolenaare12bab32019-01-08 22:02:56 +010033endfunc
Bram Moolenaarf73d3bc2016-04-11 21:55:15 +020034
Bram Moolenaare12bab32019-01-08 22:02:56 +010035func Test_tabline_will_be_disabled_with_error()
Bram Moolenaar73cd8fb2016-04-11 22:49:03 +020036 if has('gui')
37 set guioptions-=e
38 endif
Bram Moolenaarf73d3bc2016-04-11 21:55:15 +020039 let showtabline_save = &showtabline
40 set showtabline=2
41 let s:func_in_tabline_called = 0
42 let tabline = '%{TablineWithError()}'
43 try
44 let &tabline = tabline
45 redraw!
46 catch
47 endtry
48 call assert_true(s:func_in_tabline_called)
49 call assert_equal('', &tabline)
50 set tabline=
51 let &showtabline = showtabline_save
Bram Moolenaare12bab32019-01-08 22:02:56 +010052endfunc
53
54func Test_redrawtabline()
55 if has('gui')
56 set guioptions-=e
57 endif
58 let showtabline_save = &showtabline
59 set showtabline=2
60 set tabline=%{bufnr('$')}
61 edit Xtabline1
62 edit Xtabline2
63 redraw
64 call assert_match(bufnr('$') . '', Screenline(1))
65 au BufAdd * redrawtabline
66 badd Xtabline3
67 call assert_match(bufnr('$') . '', Screenline(1))
68
69 set tabline=
70 let &showtabline = showtabline_save
71 au! Bufadd
72endfunc
Bram Moolenaar832adf92020-06-25 19:01:36 +020073
74" Test for the "%T" and "%X" flags in the 'tabline' option
75func MyTabLine()
76 let s = ''
77 for i in range(tabpagenr('$'))
78 " set the tab page number (for mouse clicks)
79 let s .= '%' . (i + 1) . 'T'
80
81 " the label is made by MyTabLabel()
82 let s .= ' %{MyTabLabel(' . (i + 1) . ')} '
83 endfor
84
85 " after the last tab fill with TabLineFill and reset tab page nr
86 let s .= '%T'
87
88 " right-align the label to close the current tab page
89 if tabpagenr('$') > 1
90 let s .= '%=%Xclose'
91 endif
92
93 return s
94endfunc
95
96func MyTabLabel(n)
97 let buflist = tabpagebuflist(a:n)
98 let winnr = tabpagewinnr(a:n)
99 return bufname(buflist[winnr - 1])
100endfunc
101
102func Test_tabline_flags()
103 if has('gui')
104 set guioptions-=e
105 endif
106 set tabline=%!MyTabLine()
107 edit Xtabline1
108 tabnew Xtabline2
109 redrawtabline
110 call assert_match('^ Xtabline1 Xtabline2\s\+close$', Screenline(1))
111 set tabline=
112 %bw!
113endfunc
114
Bram Moolenaarf56c95f2020-07-21 19:25:18 +0200115function EmptyTabname()
116 return ""
117endfunction
118
119function MakeTabLine() abort
120 let titles = map(range(1, tabpagenr('$')), '"%( %" . v:val . "T%{EmptyTabname()}%T %)"')
121 let sep = 'あ'
122 let tabpages = join(titles, sep)
123 return tabpages .. sep .. '%=%999X X'
124endfunction
125
126func Test_tabline_empty_group()
127 " this was reading invalid memory
128 set tabline=%!MakeTabLine()
129 tabnew
130 redraw!
131
132 tabclose
133 set tabline=
134endfunc
135
136
137
Bram Moolenaar832adf92020-06-25 19:01:36 +0200138" vim: shiftwidth=2 sts=2 expandtab