Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- " statusline.vim
- set laststatus=2
- function! s:fileinfo() abort
- let l:statuslinetext = ' %f'
- let l:statuslinetext .= ' %m'
- let l:statuslinetext .= '%='
- let l:statuslinetext .= '%y '
- return l:statuslinetext
- endfunction
- function! s:typeinfo() abort
- let l:statuslinetext =' %{&fileencoding?&fileencoding:&encoding}'
- let l:statuslinetext .= '[%{&fileformat}] '
- return l:statuslinetext
- endfunction
- function! s:bufinfo() abort
- let l:statuslinetext = ' %p%% ☰ ' " U+2630
- let l:statuslinetext .= '%l/%L ln : %c '
- return l:statuslinetext
- endfunction
- function! Statusline_active() abort
- " TODO: special file information (help, etc)
- " TODO: show the ascii/unicode of current character in stl.
- " set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
- let l:statuslinetext = ' %11.11('.my#statusline#modecolor().my#statusline#mode().'%)'
- let l:statuslinetext .= '%*'
- let l:statuslinetext .= s:fileinfo()
- let l:statuslinetext .= '%1*'
- let l:statuslinetext .= s:typeinfo()
- let l:statuslinetext .= my#statusline#modecolor()
- let l:statuslinetext .= s:bufinfo()
- let l:statuslinetext .= '%2*'
- " let l:statuslinetext .= my#statusline#errors() " TODO
- return l:statuslinetext
- endfunction
- function! Statusline_inactive() abort
- let l:statuslinetext = '%12.12( %)'
- let l:statuslinetext .= s:fileinfo()
- let l:statuslinetext .= s:typeinfo()
- let l:statuslinetext .= s:bufinfo()
- return l:statuslinetext
- endfunction
- set statusline=%!Statusline_inactive()
- augroup vimrc_statusline
- autocmd!
- autocmd WinEnter,BufEnter * setlocal statusline=%!Statusline_active()
- autocmd WinLeave * setlocal statusline=%!Statusline_inactive()
- augroup END
- " autoload/my/statusline.vim
- highlight default link User1 TabLine
- highlight default link User2 IncSearch
- highlight default link User3 StatusLineTermNC
- highlight default link User4 PmenuSel
- highlight default link User5 IncSearch
- highlight default link User6 WildMenu
- highlight default link User7 DiffAdd
- highlight default link User8 StatusLineTerm
- highlight default link User9 StatusLineTerm
- function! my#statusline#git_branch() abort
- if ! exists('b:my#gitdir')
- let b:my#gitdir = system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
- endif
- return b:my#gitdir
- endfunction
- let s:modes ={
- \ 'n' : ['%3*', 'NORMAL'],
- \ 'i' : ['%4*', 'INSERT'],
- \ 'v' : ['%5*', 'VISUAL'],
- \ 'V' : ['%5*', 'V-LINE'],
- \ '' : ['%5*', 'V-BLOCK'],
- \ 'R' : ['%6*', 'REPLACE'],
- \ 's' : ['%7*', 'SELECT'],
- \ 'S' : ['%7*', 'S-LINE'],
- \ '' : ['%7*', 'S-BLOCK'],
- \ 'c' : ['%8*', 'COMMAND'],
- \ 't' : ['%9*', 'TERMINAL'],
- \ '-' : ['%3*', '-------']}
- function! my#statusline#modecolor() abort
- return get(s:modes, mode(), '%*')[0]
- endfunction
- function! my#statusline#mode() abort
- return ' ' . get(s:modes, mode(), '-')[1] . ' '
- endfunction
- function! my#statusline#errors() abort
- " Trailing whitespace
- " quickfix, location-list
- " mixed indentation
- return ''
- endfunction
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement