The only thing that I can think of for this is to use :windo
to iterate through all the windows in the current tab and check whether a file is loaded. Something like this:
function! TabIsEmpty() abort
" Remember which window we're in at the moment
let initial_win_num = winnr()
let win_count = 0
" Add the length of the file name on to count:
" this will be 0 if there is no file name
windo let win_count += len(expand('%'))
" Go back to the initial window
exe initial_win_num . "wincmd w"
" Check count
if win_count == 0
" Tab page is empty
return 1
else
return 0
endif
endfunction
" Test it like this:
echo TabIsEmpty()
" Use it like this:
if TabIsEmpty() == 1
echo "The tab is empty"
else
echo "The tab is not empty"
endif
If the only thing open is a help page or preview window or something like that, it will return 0, as those have a filename.
If you open a new tab and then split it, this still returns 1 because all windows have no filename.