aboutsummaryrefslogtreecommitdiff
path: root/.vimrc
diff options
context:
space:
mode:
Diffstat (limited to '.vimrc')
-rw-r--r--.vimrc95
1 files changed, 78 insertions, 17 deletions
diff --git a/.vimrc b/.vimrc
index 11dee54..cb955f1 100644
--- a/.vimrc
+++ b/.vimrc
@@ -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