summaryrefslogtreecommitdiff
path: root/.vim
diff options
context:
space:
mode:
Diffstat (limited to '.vim')
-rw-r--r--.vim/miniplugins/statusline.vim161
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
+" }}}