2018-03-18 16:56:02 +00:00
|
|
|
set statusline=%!GetStatus(1)
|
|
|
|
|
2018-04-01 15:07:11 +00:00
|
|
|
" augroups
|
|
|
|
augroup status "{{{
|
|
|
|
autocmd!
|
|
|
|
autocmd WinNew,WinEnter * setlocal statusline=%!GetStatus(1)
|
|
|
|
autocmd WinLeave * setlocal statusline=%!GetStatus(0)
|
|
|
|
" autocmd WinNew * setlocal statusline=%!GetStatus(1)
|
|
|
|
" autocmd InsertChange * setlocal statusline=%!GetStatus(1)
|
|
|
|
augroup END
|
|
|
|
"}}}
|
|
|
|
|
|
|
|
" functions
|
2018-03-17 23:42:49 +00:00
|
|
|
|
2018-05-20 15:44:14 +00:00
|
|
|
function! GetStatus(isactive) abort "{{{
|
2018-03-17 23:42:49 +00:00
|
|
|
" let l:linter = ale#statusline#Count(bufnr(''))
|
|
|
|
let l:divider = '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >'
|
|
|
|
let l:separator = '%#StatusLineSeparator# '
|
|
|
|
let l:normal = '%#StatusLineNormal#'
|
|
|
|
let l:active = '%#StatusLineActive#'
|
|
|
|
let l:statusline = ''
|
|
|
|
|
2018-05-14 09:58:47 +00:00
|
|
|
"buffer number
|
|
|
|
if a:isactive
|
|
|
|
let l:statusline .= '%#StatusLineBufferNrActive#'
|
|
|
|
else
|
|
|
|
let l:statusline .= '%#StatusLineBufferNr#'
|
|
|
|
endif
|
|
|
|
let l:statusline .= ' %n %* '
|
|
|
|
"}}}
|
|
|
|
|
2018-03-17 23:42:49 +00:00
|
|
|
" file percentage
|
2018-05-14 09:58:47 +00:00
|
|
|
let l:statusline .= '%#FoldColumn# ' "{{{
|
2018-03-18 00:24:20 +00:00
|
|
|
if a:isactive
|
2018-03-18 12:00:37 +00:00
|
|
|
let l:statusline .= '%#StatusLinePercentActive#'
|
2018-06-09 20:23:41 +00:00
|
|
|
let l:statusline .= '%P %#StatusLineDirActive#of %#StatusLineFileActive#%L %* '
|
2018-03-18 00:24:20 +00:00
|
|
|
else
|
2018-03-18 12:00:37 +00:00
|
|
|
let l:statusline .= '%#StatusLinePercent#'
|
2018-06-09 20:23:41 +00:00
|
|
|
let l:statusline .= '%P %#StatusLineDir#of %#StatusLinePercent#%L %* '
|
2018-03-18 00:24:20 +00:00
|
|
|
endif
|
2018-03-18 15:59:32 +00:00
|
|
|
"}}}
|
2018-03-17 23:42:49 +00:00
|
|
|
|
2018-03-18 00:24:20 +00:00
|
|
|
" non-empty buftype (help, quickfix, etc)
|
|
|
|
if a:isactive "{{{
|
2018-03-17 23:42:49 +00:00
|
|
|
let l:statusline .= l:active . "%{&buftype == '' ? '' : ' '}%q%h%w%#StatusLineActiveNoText#"
|
|
|
|
else
|
|
|
|
let l:statusline .= l:normal . "%{&buftype == '' ? '' : ' '}%q%h%w%#StatusLineNormalNoText#"
|
|
|
|
endif
|
|
|
|
let l:statusline .= "%{&buftype == '' ? '' : ' '}%s"
|
2018-03-18 00:24:20 +00:00
|
|
|
"}}}
|
2018-03-17 23:42:49 +00:00
|
|
|
|
|
|
|
" right/left divider
|
2018-03-28 20:02:37 +00:00
|
|
|
let l:statusline.=l:separator "{{{
|
|
|
|
" modified version
|
2018-03-17 23:42:49 +00:00
|
|
|
let l:color = 'StatusLineDivMod' . (a:isactive?'Active':'')
|
|
|
|
let l:statusline .= GetStatusFrag("&modified && mode() != 'i'", l:color, '%<', l:divider)
|
|
|
|
|
|
|
|
" unmodified version
|
|
|
|
let l:color = 'StatusLineDiv' . (a:isactive?'Active':'')
|
|
|
|
let l:statusline .= GetStatusFrag("!&modified && mode() != 'i'", l:color, '%<', l:divider)
|
|
|
|
|
|
|
|
" input mode version
|
|
|
|
if a:isactive
|
|
|
|
let l:statusline .= GetStatusFrag("mode() == 'i'", 'StatusLineDivInput', '%<', l:divider)
|
|
|
|
endif
|
2018-03-18 00:55:19 +00:00
|
|
|
|
2018-03-17 23:42:49 +00:00
|
|
|
let l:statusline.= l:separator . '%*%='
|
2018-03-18 00:55:19 +00:00
|
|
|
|
2018-05-14 10:07:53 +00:00
|
|
|
let l:statusline .= ' '
|
2018-03-28 20:02:37 +00:00
|
|
|
"}}}
|
|
|
|
|
2018-05-20 15:44:14 +00:00
|
|
|
" file info
|
|
|
|
if a:isactive == 1 "{{{
|
|
|
|
" let l:statusline.=l:active
|
|
|
|
let l:statusline.='%#StatusLineFileActive#'
|
|
|
|
" let l:statusline.=" %{strlen(&ft)?&ft:'none'} "
|
|
|
|
" let l:statusline.=l:separator . l:active
|
|
|
|
let l:statusline.=' %{strlen(&fenc)?&fenc:&enc} '
|
|
|
|
" let l:statusline.=l:separator . l:active
|
|
|
|
let l:statusline.=' %{&fileformat} '
|
|
|
|
let l:statusline.=l:separator . l:active
|
|
|
|
" let l:statusline.=' %{&spelllang} '
|
|
|
|
" let l:statusline.=l:separator
|
|
|
|
endif
|
|
|
|
"}}}
|
|
|
|
|
2018-03-28 20:02:37 +00:00
|
|
|
|
2018-03-18 00:24:20 +00:00
|
|
|
" path/filename.extension
|
|
|
|
if a:isactive "{{{
|
|
|
|
let l:statusline.='%#StatusLineDirActive# '
|
|
|
|
let l:statusline.="%{expand('%:p:h:t')}/"
|
|
|
|
let l:statusline.='%#StatusLineFileActive#'
|
2018-03-17 23:42:49 +00:00
|
|
|
|
2018-03-18 00:24:20 +00:00
|
|
|
let l:statusline.="%{expand('%:t:r')}"
|
2018-03-17 23:42:49 +00:00
|
|
|
|
2018-03-18 00:24:20 +00:00
|
|
|
let l:statusline.='%#StatusLineDotActive#'
|
|
|
|
let l:statusline.="%{strlen(expand('%:e'))?'.':''}"
|
|
|
|
let l:statusline.='%#StatusLineExtActive#'
|
2018-03-18 00:55:19 +00:00
|
|
|
let l:statusline.="%{strlen(expand('%:e'))?expand('%:e'):expand('%:e')} "
|
2018-03-28 20:30:44 +00:00
|
|
|
let l:statusline .= '%#InterfaceSignWarning# %R '
|
2018-03-18 00:24:20 +00:00
|
|
|
else
|
|
|
|
let l:statusline.='%#StatusLineDir# '
|
2018-04-17 17:59:30 +00:00
|
|
|
let l:statusline.="%{fnamemodify(expand('%:p:h'),':~')}/"
|
2018-03-18 00:24:20 +00:00
|
|
|
let l:statusline.='%#StatusLineFile#'
|
2018-03-17 23:42:49 +00:00
|
|
|
|
2018-03-18 00:24:20 +00:00
|
|
|
let l:statusline.="%{expand('%:t:r')}"
|
2018-03-17 23:42:49 +00:00
|
|
|
|
2018-03-18 00:24:20 +00:00
|
|
|
let l:statusline.='%#StatusLineDot#'
|
|
|
|
let l:statusline.="%{strlen(expand('%:e'))?'.':''}"
|
|
|
|
let l:statusline.='%#StatusLineExt#'
|
2018-03-18 00:55:19 +00:00
|
|
|
let l:statusline.="%{strlen(expand('%:e'))?expand('%:e'):expand('%:e')} "
|
2018-03-28 20:30:44 +00:00
|
|
|
let l:statusline .= '%#LinterWarningInactive# %R '
|
2018-03-18 00:24:20 +00:00
|
|
|
endif
|
2018-03-28 20:02:37 +00:00
|
|
|
let l:statusline.='%*'
|
2018-03-18 00:24:20 +00:00
|
|
|
"}}}
|
2018-03-17 23:42:49 +00:00
|
|
|
|
|
|
|
" linter status "
|
2018-03-18 00:24:20 +00:00
|
|
|
if a:isactive "{{{
|
2018-03-17 23:42:49 +00:00
|
|
|
" errors
|
2018-03-21 22:32:36 +00:00
|
|
|
let l:statusline .= "%#LinterDashActive#%{(GetLinterStatus('error') == 0?'-':'')}"
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= "%#LinterError#%{(GetLinterStatus('error') == 0?'':GetLinterStatus('error'))}"
|
2018-03-17 23:42:49 +00:00
|
|
|
" style errors
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= '%#LinterDash#|'
|
|
|
|
let l:statusline .= "%#LinterDashActive#%{(GetLinterStatus('style_error') == 0?'-':'')}"
|
|
|
|
let l:statusline .= "%#LinterErrorStyle#%{(GetLinterStatus('style_error') == 0?'':GetLinterStatus('style_error'))} "
|
2018-03-17 23:42:49 +00:00
|
|
|
|
|
|
|
" warnings
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= "%#LinterDashActive#%{(GetLinterStatus('warning') == 0?'-':'')}"
|
|
|
|
let l:statusline .= "%#LinterWarning#%{(GetLinterStatus('warning') == 0?'':GetLinterStatus('warning'))}"
|
2018-03-17 23:42:49 +00:00
|
|
|
" style warnings
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= '%#LinterDash#|'
|
|
|
|
let l:statusline .= "%#LinterDashActive#%{(GetLinterStatus('style_warning') == 0?'-':'')}"
|
|
|
|
let l:statusline .= "%#LinterWarningStyle#%{(GetLinterStatus('style_warning') == 0?'':GetLinterStatus('style_warning'))} "
|
2018-03-17 23:42:49 +00:00
|
|
|
|
|
|
|
" info
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= "%#LinterDashActive#%{(GetLinterStatus('info') == 0?'-':'')}"
|
|
|
|
let l:statusline .= "%#LinterInfo#%{(GetLinterStatus('info') == 0?'':GetLinterStatus('info'))}"
|
2018-03-17 23:42:49 +00:00
|
|
|
else
|
|
|
|
" errors
|
2018-03-21 22:32:36 +00:00
|
|
|
let l:statusline .= "%#LinterDash#%{(GetLinterStatus('error') == 0?'-':'')}"
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= "%#LinterErrorInactive#%{(GetLinterStatus('error') == 0?'':GetLinterStatus('error'))}"
|
2018-03-17 23:42:49 +00:00
|
|
|
" style errors
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= '%#LinterDash#|'
|
2018-03-17 23:42:49 +00:00
|
|
|
let l:statusline .= "%{(GetLinterStatus('style_error') == 0?'-':'')}"
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= "%#LinterErrorStyleInactive#%{(GetLinterStatus('style_error') == 0?'':GetLinterStatus('style_error'))} "
|
2018-03-17 23:42:49 +00:00
|
|
|
|
|
|
|
" warnings
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= "%#LinterDash#%{(GetLinterStatus('warning') == 0?'-':'')}"
|
|
|
|
let l:statusline .= "%#LinterWarningInactive#%{(GetLinterStatus('warning') == 0?'':GetLinterStatus('warning'))}"
|
2018-03-17 23:42:49 +00:00
|
|
|
" style warnings
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= '%#LinterDash#|'
|
2018-03-17 23:42:49 +00:00
|
|
|
let l:statusline .= "%{(GetLinterStatus('style_warning') == 0?'-':'')}"
|
2018-03-18 15:59:32 +00:00
|
|
|
let l:statusline .= "%#LinterWarningStyleInactive#%{(GetLinterStatus('style_warning') == 0?'':GetLinterStatus('style_warning'))} "
|
2018-03-17 23:42:49 +00:00
|
|
|
|
|
|
|
" info
|
2018-03-18 17:13:21 +00:00
|
|
|
let l:statusline .= "%#LinterDash#%{GetLinterStatus('info') == 0 ? '-' : GetLinterStatus('info')}"
|
2018-03-17 23:42:49 +00:00
|
|
|
endif
|
2018-03-18 00:24:20 +00:00
|
|
|
"}}}
|
2018-03-17 23:42:49 +00:00
|
|
|
|
|
|
|
return l:statusline
|
|
|
|
|
2018-04-01 15:07:11 +00:00
|
|
|
endfunction
|
|
|
|
"}}}
|
2018-04-17 16:47:15 +00:00
|
|
|
|
2018-04-01 15:07:11 +00:00
|
|
|
function! DoInsertEnter()
|
|
|
|
|
|
|
|
set cursorline"{{{
|
2018-05-10 15:16:49 +00:00
|
|
|
call SetColor('LineNr', '#262626', '', '#cccccc', '', '')
|
|
|
|
call SetColor('CursorLineNr', '#bcbcbc', '', '#999999', '', 'bold')
|
2018-04-01 15:07:11 +00:00
|
|
|
endfunction
|
|
|
|
"}}}
|
|
|
|
|
|
|
|
function! DoInsertLeave()
|
|
|
|
set nocursorline"{{{
|
2018-05-10 15:16:49 +00:00
|
|
|
call SetColor('LineNr', '#3a3a3a', '', '#999999', '', '')
|
|
|
|
call SetColor('CursorLineNr', '#767676', '', '#777777', '', 'bold')
|
2018-04-01 15:07:11 +00:00
|
|
|
endfunction
|
|
|
|
"}}}
|
2018-03-17 23:42:49 +00:00
|
|
|
|
|
|
|
|
2018-04-01 15:07:11 +00:00
|
|
|
" augroups
|
2018-03-17 23:42:49 +00:00
|
|
|
|
2018-04-01 15:07:11 +00:00
|
|
|
augroup statuscursorlines
|
|
|
|
au!
|
|
|
|
au InsertEnter * call DoInsertEnter()
|
|
|
|
au InsertLeave * call DoInsertLeave()
|
|
|
|
augroup END
|
2018-03-17 23:42:49 +00:00
|
|
|
|
|
|
|
" vim: foldmethod=marker
|