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

94 lines
2.7 KiB
VimL

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.='%#TabLineFill#%{dead#statusline#LinterStatus()} '
let l:statusline.='%#User6#%{fugitive#head()} '
let l:statusline.='%#User1#%{GitStatus()} '
let l:statusline.='%{dead#statusline#LinePasteMode()}'
let l:statusline.='%= '
let l:statusline.='%#User1#%p%% %l:%c '
let l:statusline.=dead#statusline#ModeColor()
let l:statusline.=dead#statusline#CurrentMode()
return l:statusline
endfunction
function! dead#statusline#StatusLineNC() abort
let l:statusline=''
let l:statusline.='%#User1#'
let l:statusline.='%= '
let l:statusline.='%f '
return l:statusline
endfunction
function! dead#statusline#HelpStatusLine() abort
let l:statusline=''
let l:statusline.='%= '
let l:statusline.='%h'
return l:statusline
endfunction
function! dead#statusline#FMStatusLine() abort
let l:statusline=''
let l:statusline.='%#User8#'
let l:statusline.='%= '
let l:statusline.='% '
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
if &filetype ==? 'Defx'
setlocal statusline=%!dead#statusline#FMStatusLine()
endif
endfunction
function! dead#statusline#LinterStatus() abort
let l:counts = ale#statusline#Count(bufnr(''))
let l:all_errors = l:counts.error + l:counts.style_error
let l:all_non_errors = l:counts.total - l:all_errors
return l:counts.total == 0 ? '' : printf(
\ ' :%d  :%d',
\ l:all_non_errors,
\ l:all_errors
\)
endfunction
function! GitStatus() abort
if !get(g:, 'gitgutter_enabled', 0) || empty(FugitiveHead())
return ''
endif
let [ l:added, l:modified, l:removed ] = GitGutterGetHunkSummary()
return printf('+%d ~%d -%d', l:added, l:modified, l:removed)
endfunction