dgy
/
hexagons
Archived
1
0
Fork 0
This repository has been archived on 2021-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
hexagons/.config/nvim/autoload/dead/statusline.vim

96 lines
2.7 KiB
VimL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function! dead#statusline#ModeColor() abort
return get(g:modes, mode(), '%*')[0]
endfunction
function! dead#statusline#CurrentMode() abort
return get(g:modes, mode(), '-')[1]
endfunction
function! dead#statusline#StatusLine() abort
let l:statusline=''
let l:statusline.=dead#statusline#ModeColor()
let l:statusline.=dead#statusline#CurrentMode()
let l:statusline.=' %#User9#%p%% = %l:%c'
let l:statusline.=' %#User8#%{fugitive#head()} '
let l:statusline.='%= '
let l:statusline.='%#User7#%{GitStatus()} '
let l:statusline.='%#User9#%m %f'
let l:statusline.='%{dead#statusline#LinePasteMode()}'
return l:statusline
endfunction
function! dead#statusline#StatusLineNC() abort
let l:statusline=''
let l:statusline.='%#User1#'
let l:statusline.='%m'
let l:statusline.='%='
let l:statusline.='%F'
return l:statusline
endfunction
function! dead#statusline#HelpStatusLine() abort
let l:statusline=''
let l:statusline.='%#User1#'
let l:statusline.='%f'
let l:statusline.='%='
let l:statusline.='%h'
return l:statusline
endfunction
function! dead#statusline#UpdateInactiveWindows()
for winnum in range(1, winnr('$'))
if winnum != winnr()
call setwinvar(winnum, '&statusline', '%!dead#statusline#StatusLineNC()')
endif
endfor
endfunction
function! dead#statusline#LinePasteMode() abort
let paste_status = &paste
if paste_status == 1
return '[paste]'
else
return ''
endif
endfunction
function! dead#statusline#RefreshStatusLine(mode)
if (a:mode ==? 'active' && &filetype !=? 'help')
setlocal statusline=%!dead#statusline#StatusLine()
else
setlocal statusline=%!dead#statusline#StatusLineNC()
endif
if &filetype ==? 'help'
setlocal statusline=%!dead#statusline#HelpStatusLine()
endif
endfunction
function! GitStatus() abort
if !get(g:, 'gitgutter_enabled', 0) || empty(FugitiveHead())
return ''
endif
return join(filter(map(['A','M','D'], {i,v -> v.': '.GitGutterGetHunkSummary()[i]}), 'v:val[-1:]'), ' ')
endfunction
let g:modes={
\ 'n' : ['%3*','NORMAL'],
\ 'no' : ['%3*','OPERATOR PENDING'],
\ 'v' : ['%5*','VISUAL'],
\ 'V' : ['%5*','V·LINE'],
\ '' : ['%5*','V·BLOCK'],
\ 's' : ['%7*','SELECT'],
\ 'S' : ['%7*','S·LINE'],
\ '' : ['%7*','S·BLOCK'],
\ 'i' : ['%4*','INSERT'],
\ 'R' : ['%2*','REPLACE'],
\ 'Rv' : ['%2*','V·REPLACE'],
\ 'c' : ['%6*','COMMAND'],
\ 'cv' : ['%6*','VIM EX'],
\ 'ce' : ['%6*','EX'],
\ 'r' : ['%1*','PROMPT'],
\ 'rm' : ['%1*','MORE'],
\ 'r?' : ['%1*','CONFIRM'],
\ '!' : ['%*1','SHELL'],
\ 't' : ['%*1','TERMINAL'],
\}