autoshow.vim 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. " MIT License. Copyright (c) 2013-2021 Bailey Ling et al.
  2. " vim: et ts=2 sts=2 sw=2
  3. scriptencoding utf-8
  4. let s:show_buffers = get(g:, 'airline#extensions#tabline#show_buffers', 1)
  5. let s:buf_min_count = get(g:, 'airline#extensions#tabline#buffer_min_count', 0)
  6. let s:tab_min_count = get(g:, 'airline#extensions#tabline#tab_min_count', 0)
  7. function! airline#extensions#tabline#autoshow#off()
  8. if exists('s:original_tabline')
  9. let &tabline = s:original_tabline
  10. let &showtabline = s:original_showtabline
  11. endif
  12. augroup airline_tabline_autoshow
  13. autocmd!
  14. augroup END
  15. endfunction
  16. function! airline#extensions#tabline#autoshow#on()
  17. let [ s:original_tabline, s:original_showtabline ] = [ &tabline, &showtabline ]
  18. augroup airline_tabline_autoshow
  19. autocmd!
  20. if s:buf_min_count <= 0 && s:tab_min_count <= 1
  21. call airline#extensions#tabline#enable()
  22. else
  23. if s:show_buffers == 1
  24. autocmd BufEnter * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()))
  25. autocmd BufUnload * call <sid>show_tabline(s:buf_min_count, len(airline#extensions#tabline#buflist#list()) - 1)
  26. else
  27. autocmd TabNew,TabClosed * call <sid>show_tabline(s:tab_min_count, tabpagenr('$'))
  28. endif
  29. endif
  30. " Invalidate cache. This has to come after the BufUnload for
  31. " s:show_buffers, to invalidate the cache for BufEnter.
  32. autocmd BufLeave,BufAdd,BufUnload * call airline#extensions#tabline#buflist#invalidate()
  33. augroup END
  34. endfunction
  35. function! s:show_tabline(min_count, total_count)
  36. if a:total_count >= a:min_count
  37. if &showtabline != 2 && &lines > 3
  38. set showtabline=2
  39. endif
  40. else
  41. if &showtabline != 0
  42. set showtabline=0
  43. endif
  44. endif
  45. endfunction