diff options
Diffstat (limited to '.vim/miniplugins/statusline.vim')
| -rw-r--r-- | .vim/miniplugins/statusline.vim | 161 |
1 files changed, 92 insertions, 69 deletions
diff --git a/.vim/miniplugins/statusline.vim b/.vim/miniplugins/statusline.vim index 92b9f10..8cc14cc 100644 --- a/.vim/miniplugins/statusline.vim +++ b/.vim/miniplugins/statusline.vim @@ -3,8 +3,6 @@ set laststatus=2 set timeoutlen=1000 ttimeoutlen=10 set noshowmode -" call hlset([#{name: 'StatusLine', ctermfg: '252', ctermbg: '239'}]) - " Logic let leftcap = '' @@ -12,70 +10,95 @@ let rightcap = '' let leftmcap = '' let rightmcap = '' -set statusline= -" Mode - -" Values are, in order, for: normal (default), insert, replace, visual modes -" [ctermfg, ctermbg] -let s:modecolors = [ -\ ['236', '117'], -\ ['236', '119'], -\ ['236', '203'], -\ ['236', '216'], -\] - -let modestring = '' - -hi SLMode ctermfg=1 ctermbg=0 -hi SLModeC ctermfg=1 ctermbg=0 - - -function! SLModeSetter() - let cm = mode() - let ind = 0 - - if cm == 'i' - let ind = 1 - elseif cm == 'R' - let ind = 2 - let cm = 'r' - elseif cm == 'v' - let ind = 3 - endif - - call hlset([#{name: 'SLMode', ctermfg: s:modecolors[l:ind][0], ctermbg: s:modecolors[l:ind][1]}]) - call hlset([#{name: 'SLModeC', ctermfg: s:modecolors[l:ind][1], ctermbg: '239'}]) - let g:modestring = l:cm - - return '' -endfunction - -set statusline+=%{SLModeSetter()}%#SLModeC#%{leftcap}%#SLMode#%{modestring}%#SLModeC#%{rightcap} -" \______leftcap______/\________mode_______/\______rightcap_____/ - -" Filename - -set statusline+=%#StatusLine#\ %f\ %{rightmcap} - -" File stat - -function! SLReadonly() - return (&ft !~? 'vimfiler' && &readonly) ? ' ' : '' -endfunction - -function! SLModified() - return (&ft =~ 'vimfiler') ? '' : (&modified ? '' : (&modifiable ? '' : '')) -endfunction - -set statusline+=\ %{SLReadonly()}%{SLModified()}\ - -" Middle separator -set statusline+=%= - -" Filetype -set statusline+=%{leftmcap}\ %{WebDevIconsGetFileTypeSymbol()}\ %{&ft}\ - -" Line and column count -hi SLRowCol ctermfg=238 ctermbg=244 -hi SLRowColC ctermfg=244 ctermbg=239 -set statusline+=%#SLRowColC#%{leftcap}%#SLRowCol#%l:%c%#SLRowColC#%{rightcap} +let g:activesl = '' +let g:inactivesl = '' + +" Mode {{{ + " Values are, in order, for: normal (default), insert, replace, visual modes + " [ctermfg, ctermbg] + let s:modecolors = [ + \ ['236', '117'], + \ ['236', '119'], + \ ['236', '203'], + \ ['236', '216'], + \] + + let g:modestring = '' + + hi SLMode ctermfg=1 ctermbg=0 + hi SLModeC ctermfg=1 ctermbg=0 + + function! SLModeSetter() + let cm = mode() + let ind = 0 + + if cm == 'i' + let ind = 1 + elseif cm == 'R' + let ind = 2 + let cm = 'r' + elseif cm == 'v' + let ind = 3 + endif + + call hlset([#{name: 'SLMode', ctermfg: s:modecolors[l:ind][0], ctermbg: s:modecolors[l:ind][1]}]) + call hlset([#{name: 'SLModeC', ctermfg: s:modecolors[l:ind][1], ctermbg: '239'}]) + let g:modestring = l:cm + + return '' + endfunction + + let g:activesl ..= '%{SLModeSetter()}%#SLModeC#%{leftcap}%#SLMode#%{modestring}%#SLModeC#%{rightcap}' + " \______leftcap______/\________mode_______/\______rightcap_____/ + let g:inactivesl ..= '%#StatusLine# ' +" }}} + +" Filename {{{ + let g:_filename = '%#StatusLine# %f %{rightmcap}' + let g:activesl ..= g:_filename + let g:inactivesl ..= g:_filename +" }}} + +" File stat {{{ + function! SLReadonly() + return (&ft !~? 'vimfiler' && &readonly) ? ' ' : '' + endfunction + + function! SLModified() + return (&ft =~ 'vimfiler') ? '' : (&modified ? '' : (&modifiable ? '' : '')) + endfunction + + let g:_filestat = ' %{SLReadonly()}%{SLModified()} ' + let g:activesl ..= g:_filestat + let g:inactivesl ..= g:_filestat +" }}} + +" Middle separator {{{ + let g:activesl ..= '%=' + let g:inactivesl ..= '%=' +" }}} + +" Filetype {{{ + let g:_filetype = '%{leftmcap} %{WebDevIconsGetFileTypeSymbol()} %{&ft} ' + let g:activesl ..= g:_filetype + let g:inactivesl ..= g:_filetype +" }}} + +" Line and column count {{{ + hi SLRowCol ctermfg=238 ctermbg=244 + hi SLRowColC ctermfg=244 ctermbg=239 + + let g:_linecol = '%#SLRowColC#%{leftcap}%#SLRowCol#%l:%c%#SLRowColC#%{rightcap}' + let g:activesl ..= g:_linecol + let g:inactivesl ..= g:_linecol +" }}} + +" Statusline setting {{{ + set statusline= + + augroup SLModeAU + au! + au WinEnter,BufEnter * setlocal statusline=%!g:activesl + au WinLeave,BufLeave * setlocal statusline=%!g:inactivesl + augroup end +" }}} |
