94 lines
2.7 KiB
VimL
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
|