I haven't been idle on this. I was unable to get my test case working
for a simple but un-obvious reason. It requires that at least one
other window be open.
Run the following, and open two windows. Edit a file in one. Open a
new line, which I assume triggers the tabline to trigger as the buffer
becomes modified. Then as you move the cursor around, you should see
the "Tst#" prompt incrementing with each keystroke.
let s:counter = 0
function! Tst()
call Tst_set_hl()
let s:counter += 1
echo 'Tst#'.s:counter
return 'A test string'
endfunction
set tabline=%!Tst()
if &showtabline < 1
set showtabline=1 " 2=always
endif
function! Tst_set_hl()
hi! Tst_hl term=bold
endfunction