80 lines
2.2 KiB
VimL
80 lines
2.2 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.=dead#statusline#ModeColor()
|
|
let l:statusline.=dead#statusline#CurrentMode()
|
|
let l:statusline.=dead#statusline#LinePasteMode()
|
|
let l:statusline.='%<'
|
|
let l:statusline.='%1* '
|
|
let l:statusline.='%= '
|
|
let l:statusline.=coc#status()
|
|
let l:statusline.=dead#statusline#LinterStatus()
|
|
let l:statusline.='%3* %p%% %c '
|
|
let l:statusline.=''
|
|
return l:statusline
|
|
endfunction
|
|
|
|
function! dead#statusline#StatusLineNC() abort
|
|
let l:statusline=''
|
|
let l:statusline.='%t'
|
|
let l:statusline.='%<'
|
|
let l:statusline.='%= '
|
|
return l:statusline
|
|
endfunction
|
|
|
|
function! dead#statusline#HelpStatusLine() abort
|
|
let l:statusline=''
|
|
let l:statusline.= '%#error#[HELP] %t '
|
|
let l:statusline.='%1* '
|
|
let l:statusline.='%<'
|
|
let l:statusline.='%= '
|
|
let l:statusline.=' %p%% '
|
|
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#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! 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#LinePasteMode() abort
|
|
let paste_status = &paste
|
|
if paste_status == 1
|
|
return ' paste '
|
|
else
|
|
return ''
|
|
endif
|
|
endfunction
|