Advertisement
Guest User

Untitled

a guest
Apr 12th, 2018
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VIM 3.06 KB | None | 0 0
  1. " statusline.vim
  2. set laststatus=2
  3.  
  4. function! s:fileinfo() abort
  5.   let l:statuslinetext = ' %f'
  6.   let l:statuslinetext .= ' %m'
  7.   let l:statuslinetext .= '%='
  8.   let l:statuslinetext .= '%y '
  9.   return l:statuslinetext
  10. endfunction
  11.  
  12. function! s:typeinfo() abort
  13.   let l:statuslinetext =' %{&fileencoding?&fileencoding:&encoding}'
  14.   let l:statuslinetext .= '[%{&fileformat}] '
  15.   return l:statuslinetext
  16. endfunction
  17.  
  18. function! s:bufinfo() abort
  19.   let l:statuslinetext = '  %p%% ☰  '  " U+2630
  20.   let l:statuslinetext .= '%l/%L ln : %c '
  21.   return l:statuslinetext
  22. endfunction
  23.  
  24. function! Statusline_active() abort
  25.   " TODO: special file information (help, etc)
  26.   " TODO: show the ascii/unicode of current character in stl.
  27.   " set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
  28.  
  29.   let l:statuslinetext  = ' %11.11('.my#statusline#modecolor().my#statusline#mode().'%)'
  30.   let l:statuslinetext .= '%*'
  31.   let l:statuslinetext .= s:fileinfo()
  32.   let l:statuslinetext .= '%1*'
  33.   let l:statuslinetext .= s:typeinfo()
  34.   let l:statuslinetext .= my#statusline#modecolor()
  35.   let l:statuslinetext .= s:bufinfo()
  36.   let l:statuslinetext .= '%2*'
  37.   " let l:statuslinetext .= my#statusline#errors()  " TODO
  38.   return l:statuslinetext
  39. endfunction
  40.  
  41. function! Statusline_inactive() abort
  42.   let l:statuslinetext  = '%12.12( %)'
  43.   let l:statuslinetext .= s:fileinfo()
  44.   let l:statuslinetext .= s:typeinfo()
  45.   let l:statuslinetext .= s:bufinfo()
  46.   return l:statuslinetext
  47. endfunction
  48.  
  49. set statusline=%!Statusline_inactive()
  50. augroup vimrc_statusline
  51.   autocmd!
  52.   autocmd WinEnter,BufEnter * setlocal statusline=%!Statusline_active()
  53.   autocmd WinLeave * setlocal statusline=%!Statusline_inactive()
  54. augroup END
  55.  
  56. " autoload/my/statusline.vim
  57. highlight default link User1 TabLine
  58. highlight default link User2 IncSearch
  59. highlight default link User3 StatusLineTermNC
  60. highlight default link User4 PmenuSel
  61. highlight default link User5 IncSearch
  62. highlight default link User6 WildMenu
  63. highlight default link User7 DiffAdd
  64. highlight default link User8 StatusLineTerm
  65. highlight default link User9 StatusLineTerm
  66.  
  67. function! my#statusline#git_branch() abort
  68.   if ! exists('b:my#gitdir')
  69.     let b:my#gitdir = system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
  70.   endif
  71.   return b:my#gitdir
  72. endfunction
  73.  
  74. let s:modes ={
  75.       \ 'n'  : ['%3*', 'NORMAL'],
  76.       \ 'i'  : ['%4*', 'INSERT'],
  77.       \ 'v'  : ['%5*', 'VISUAL'],
  78.       \ 'V'  : ['%5*', 'V-LINE'],
  79.       \ '' : ['%5*', 'V-BLOCK'],
  80.       \ 'R'  : ['%6*', 'REPLACE'],
  81.       \ 's'  : ['%7*', 'SELECT'],
  82.       \ 'S'  : ['%7*', 'S-LINE'],
  83.       \ '' : ['%7*', 'S-BLOCK'],
  84.       \ 'c'  : ['%8*', 'COMMAND'],
  85.       \ 't'  : ['%9*', 'TERMINAL'],
  86.       \ '-'  : ['%3*', '-------']}
  87.  
  88. function! my#statusline#modecolor() abort
  89.   return get(s:modes, mode(), '%*')[0]
  90. endfunction
  91.  
  92. function! my#statusline#mode() abort
  93.   return '  ' . get(s:modes, mode(), '-')[1] . '  '
  94. endfunction
  95.  
  96. function! my#statusline#errors() abort
  97.   " Trailing whitespace
  98.   " quickfix, location-list
  99.   " mixed indentation
  100.   return ''
  101. endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement