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.='%#error#' let l:statusline.=dead#statusline#LinterStatus() let l:statusline.='%#User1#' let l:statusline.=dead#statusline#LinePasteMode() let l:statusline.='%= ' let l:statusline.=' %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#FernStatusLine() 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 ==? 'fern' setlocal statusline=%!dead#statusline#FernStatusLine() 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! dead#statusline#GitStatus() let [a,m,r] = GitGutterGetHunkSummary() return printf('+%d ~%d -%d', a, m, r) endfunction