91 lines
2.5 KiB
VimL
91 lines
2.5 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.='%#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
|