diff options
Diffstat (limited to '.vimrc')
| -rw-r--r-- | .vimrc | 95 |
1 files changed, 78 insertions, 17 deletions
@@ -121,8 +121,8 @@ function! StatuslineMode() endif endfunction -set statusline= -set statusline+=%#Color458588# +"set statusline= +"set statusline+=%#Color458588# "set statusline+=%#DiffAdd#%{(mode()=='n')?'\ \ NORMAL\ ':''} "set statusline+=%#Color458588#%{(mode()=='i')?'\ \ INSERT\ ':''} @@ -130,19 +130,80 @@ set statusline+=%#Color458588# "set statusline+=%#VisualColor#%{(mode()=='v')?'\ \ VISUAL\ ':''} "set statusline+=%#PmenuSel#%{(mode()=='\<C-V>')?'\ \ BLOCK\ ':''} -set statusline+=\ %{StatuslineMode()}\ -set statusline+=%#DiffAdd# -set statusline+=%{StatuslineGit()} -set statusline+=\ %F -set statusline+=\ %r -set statusline+=%m -set statusline+=%#CursorColumn# -set statusline+=%= -set statusline+=\ %y\ -set statusline+=%#DiffAdd# -set statusline+=\ %{&fileencoding?&fileencoding:&encoding} -set statusline+=\[%{&fileformat}\] -set statusline+=\ %p%% -set statusline+=\ %l:%c -set statusline+=\ +"set statusline+=\ %{StatuslineMode()}\ +"set statusline+=%#DiffAdd# +"set statusline+=%{StatuslineGit()} +"set statusline+=\ %F +"set statusline+=\ %r +"set statusline+=%m +"set statusline+=%#CursorColumn# +"set statusline+=%= +"set statusline+=\ %y\ +"set statusline+=%#DiffAdd# +"set statusline+=\ %{&fileencoding?&fileencoding:&encoding} +"set statusline+=\[%{&fileformat}\] +"set statusline+=\ %p%% +"set statusline+=\ %l:%c +"set statusline+=\ + +let g:mode_colors = { + \ 'n': 'StatusLineSection', + \ 'v': 'StatusLineSectionV', + \ "\<C-V>": 'StatusLineSectionV', + \ 'i': 'StatusLineSectionI', + \ 'c': 'StatusLineSectionC', + \ 'r': 'StatusLineSectionR' + \ } + +fun! StatusLineRenderer() + let hl = '%#' . get(g:mode_colors, tolower(mode()), g:mode_colors.n) . '#' + + return hl + \ . ' %{StatuslineMode()} ' + \ . '%#DiffAdd#' + \ . '%{StatuslineGit()}' + \ . '%#DiffAdd#' + \ . ' %F ' + \ . ' %r ' + \ . (&modified ? ' + ' : '') + \ . '%#CursorColumn#%=' + \ . hl + \ . '%#DiffAdd#' + \ . ' %{&fileencoding?&fileencoding:&encoding}' + \ . ' [%{&fileformat}]' + \ . ' %p%% ' + \ . ' %l:%c ' +endfun + +fun! <SID>StatusLineHighlights() + hi StatusLine ctermbg=8 guibg=#313131 ctermfg=15 guifg=#cccccc + hi StatusLineNC ctermbg=0 guibg=#313131 ctermfg=8 guifg=#999999 + hi StatusLineSection ctermbg=8 guibg=#b8bb26 ctermfg=0 guifg=#333333 + hi StatusLineSectionV ctermbg=11 guibg=#928374 ctermfg=0 guifg=#000000 + hi StatusLineSectionI ctermbg=10 guibg=#83a598 ctermfg=0 guifg=#ffffff + hi StatusLineSectionC ctermbg=12 guibg=#db7b55 ctermfg=0 guifg=#000000 + hi StatusLineSectionR ctermbg=12 guibg=#ed3f45 ctermfg=0 guifg=#000000 +endfun + +call <SID>StatusLineHighlights() + +" only set default statusline once on initial startup. +" ignored on subsequent 'so $MYVIMRC' calls to prevent +" active buffer statusline from being 'blurred'. +if has('vim_starting') + let &statusline = ' %{StatusLineFilename()}%= %l:%c ' +endif + +augroup vimrc + au! + " show focussed buffer statusline + au FocusGained,VimEnter,WinEnter,BufWinEnter * + \ setlocal statusline=%!StatusLineRenderer() + + " show blurred buffer statusline + au FocusLost,VimLeave,WinLeave,BufWinLeave * + \ setlocal statusline& + " restore statusline highlights on colorscheme update + au Colorscheme * call <SID>StatusLineHighlights() +augroup END |
