1*6d91bcb4SBram Moolenaar" Test for tabline 2e12bab31SBram Moolenaar 3e12bab31SBram Moolenaarsource shared.vim 4e12bab31SBram Moolenaar 5e12bab31SBram Moolenaarfunc TablineWithCaughtError() 6f73d3bc2SBram Moolenaar let s:func_in_tabline_called = 1 7f73d3bc2SBram Moolenaar try 8f73d3bc2SBram Moolenaar call eval('unknown expression') 9f73d3bc2SBram Moolenaar catch 10f73d3bc2SBram Moolenaar endtry 11f73d3bc2SBram Moolenaar return '' 12e12bab31SBram Moolenaarendfunc 13f73d3bc2SBram Moolenaar 14e12bab31SBram Moolenaarfunc TablineWithError() 15f73d3bc2SBram Moolenaar let s:func_in_tabline_called = 1 16f73d3bc2SBram Moolenaar call eval('unknown expression') 17f73d3bc2SBram Moolenaar return '' 18e12bab31SBram Moolenaarendfunc 19f73d3bc2SBram Moolenaar 20e12bab31SBram Moolenaarfunc Test_caught_error_in_tabline() 2173cd8fb3SBram Moolenaar if has('gui') 2273cd8fb3SBram Moolenaar set guioptions-=e 2373cd8fb3SBram Moolenaar endif 24f73d3bc2SBram Moolenaar let showtabline_save = &showtabline 25f73d3bc2SBram Moolenaar set showtabline=2 26f73d3bc2SBram Moolenaar let s:func_in_tabline_called = 0 27f73d3bc2SBram Moolenaar let tabline = '%{TablineWithCaughtError()}' 28f73d3bc2SBram Moolenaar let &tabline = tabline 29f73d3bc2SBram Moolenaar redraw! 30f73d3bc2SBram Moolenaar call assert_true(s:func_in_tabline_called) 31f73d3bc2SBram Moolenaar call assert_equal(tabline, &tabline) 32f73d3bc2SBram Moolenaar set tabline= 33f73d3bc2SBram Moolenaar let &showtabline = showtabline_save 34e12bab31SBram Moolenaarendfunc 35f73d3bc2SBram Moolenaar 36e12bab31SBram Moolenaarfunc Test_tabline_will_be_disabled_with_error() 3773cd8fb3SBram Moolenaar if has('gui') 3873cd8fb3SBram Moolenaar set guioptions-=e 3973cd8fb3SBram Moolenaar endif 40f73d3bc2SBram Moolenaar let showtabline_save = &showtabline 41f73d3bc2SBram Moolenaar set showtabline=2 42f73d3bc2SBram Moolenaar let s:func_in_tabline_called = 0 43f73d3bc2SBram Moolenaar let tabline = '%{TablineWithError()}' 44f73d3bc2SBram Moolenaar try 45f73d3bc2SBram Moolenaar let &tabline = tabline 46f73d3bc2SBram Moolenaar redraw! 47f73d3bc2SBram Moolenaar catch 48f73d3bc2SBram Moolenaar endtry 49f73d3bc2SBram Moolenaar call assert_true(s:func_in_tabline_called) 50f73d3bc2SBram Moolenaar call assert_equal('', &tabline) 51f73d3bc2SBram Moolenaar set tabline= 52f73d3bc2SBram Moolenaar let &showtabline = showtabline_save 53e12bab31SBram Moolenaarendfunc 54e12bab31SBram Moolenaar 55e12bab31SBram Moolenaarfunc Test_redrawtabline() 56e12bab31SBram Moolenaar if has('gui') 57e12bab31SBram Moolenaar set guioptions-=e 58e12bab31SBram Moolenaar endif 59e12bab31SBram Moolenaar let showtabline_save = &showtabline 60e12bab31SBram Moolenaar set showtabline=2 61e12bab31SBram Moolenaar set tabline=%{bufnr('$')} 62e12bab31SBram Moolenaar edit Xtabline1 63e12bab31SBram Moolenaar edit Xtabline2 64e12bab31SBram Moolenaar redraw 65e12bab31SBram Moolenaar call assert_match(bufnr('$') . '', Screenline(1)) 66e12bab31SBram Moolenaar au BufAdd * redrawtabline 67e12bab31SBram Moolenaar badd Xtabline3 68e12bab31SBram Moolenaar call assert_match(bufnr('$') . '', Screenline(1)) 69e12bab31SBram Moolenaar 70e12bab31SBram Moolenaar set tabline= 71e12bab31SBram Moolenaar let &showtabline = showtabline_save 72e12bab31SBram Moolenaar au! Bufadd 73e12bab31SBram Moolenaarendfunc 74832adf9bSBram Moolenaar 75832adf9bSBram Moolenaar" Test for the "%T" and "%X" flags in the 'tabline' option 76832adf9bSBram Moolenaarfunc MyTabLine() 77832adf9bSBram Moolenaar let s = '' 78832adf9bSBram Moolenaar for i in range(tabpagenr('$')) 79832adf9bSBram Moolenaar " set the tab page number (for mouse clicks) 80832adf9bSBram Moolenaar let s .= '%' . (i + 1) . 'T' 81832adf9bSBram Moolenaar 82832adf9bSBram Moolenaar " the label is made by MyTabLabel() 83832adf9bSBram Moolenaar let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' 84832adf9bSBram Moolenaar endfor 85832adf9bSBram Moolenaar 86832adf9bSBram Moolenaar " after the last tab fill with TabLineFill and reset tab page nr 87832adf9bSBram Moolenaar let s .= '%T' 88832adf9bSBram Moolenaar 89832adf9bSBram Moolenaar " right-align the label to close the current tab page 90832adf9bSBram Moolenaar if tabpagenr('$') > 1 91832adf9bSBram Moolenaar let s .= '%=%Xclose' 92832adf9bSBram Moolenaar endif 93832adf9bSBram Moolenaar 94832adf9bSBram Moolenaar return s 95832adf9bSBram Moolenaarendfunc 96832adf9bSBram Moolenaar 97832adf9bSBram Moolenaarfunc MyTabLabel(n) 98832adf9bSBram Moolenaar let buflist = tabpagebuflist(a:n) 99832adf9bSBram Moolenaar let winnr = tabpagewinnr(a:n) 100832adf9bSBram Moolenaar return bufname(buflist[winnr - 1]) 101832adf9bSBram Moolenaarendfunc 102832adf9bSBram Moolenaar 103832adf9bSBram Moolenaarfunc Test_tabline_flags() 104832adf9bSBram Moolenaar if has('gui') 105832adf9bSBram Moolenaar set guioptions-=e 106832adf9bSBram Moolenaar endif 107832adf9bSBram Moolenaar set tabline=%!MyTabLine() 108832adf9bSBram Moolenaar edit Xtabline1 109832adf9bSBram Moolenaar tabnew Xtabline2 110832adf9bSBram Moolenaar redrawtabline 111832adf9bSBram Moolenaar call assert_match('^ Xtabline1 Xtabline2\s\+close$', Screenline(1)) 112832adf9bSBram Moolenaar set tabline= 113832adf9bSBram Moolenaar %bw! 114832adf9bSBram Moolenaarendfunc 115832adf9bSBram Moolenaar 116f56c95fdSBram Moolenaarfunction EmptyTabname() 117f56c95fdSBram Moolenaar return "" 118f56c95fdSBram Moolenaarendfunction 119f56c95fdSBram Moolenaar 120f56c95fdSBram Moolenaarfunction MakeTabLine() abort 121f56c95fdSBram Moolenaar let titles = map(range(1, tabpagenr('$')), '"%( %" . v:val . "T%{EmptyTabname()}%T %)"') 122f56c95fdSBram Moolenaar let sep = 'あ' 123f56c95fdSBram Moolenaar let tabpages = join(titles, sep) 124f56c95fdSBram Moolenaar return tabpages .. sep .. '%=%999X X' 125f56c95fdSBram Moolenaarendfunction 126f56c95fdSBram Moolenaar 127f56c95fdSBram Moolenaarfunc Test_tabline_empty_group() 128f56c95fdSBram Moolenaar " this was reading invalid memory 129f56c95fdSBram Moolenaar set tabline=%!MakeTabLine() 130f56c95fdSBram Moolenaar tabnew 131f56c95fdSBram Moolenaar redraw! 132f56c95fdSBram Moolenaar 133f56c95fdSBram Moolenaar tabclose 134f56c95fdSBram Moolenaar set tabline= 135f56c95fdSBram Moolenaarendfunc 136f56c95fdSBram Moolenaar 137f56c95fdSBram Moolenaar 138f56c95fdSBram Moolenaar 139832adf9bSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 140