Last active
December 20, 2015 12:29
-
-
Save alvinfrancis/6131135 to your computer and use it in GitHub Desktop.
Very Vanilla Vim Powerline
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" Very Vanilla Powerline | |
function! GetMode() " {{{ | |
let mode = mode() | |
if mode ==# 'v' | |
let mode = "VISUAL" | |
elseif mode ==# 'V' | |
let mode = "V.LINE" | |
elseif mode ==# ' ' | |
let mode = "V.BLOCK" | |
elseif mode ==# 's' | |
let mode = "SELECT" | |
elseif mode ==# 'S' | |
let mode = "S.LINE" | |
elseif mode ==# ' ' | |
let mode = "S.BLOCK" | |
elseif mode =~# '\vi' | |
let mode = "INSERT" | |
elseif mode =~# '\v(R|Rv)' | |
let mode = "REPLACE" | |
else | |
" Fallback to normal mode | |
let mode = "NORMAL" | |
endif | |
return mode | |
endfunction " }}} | |
function! GetFilepath() " {{{ | |
" Recalculate the filepath when cwd changes. | |
let cwd = getcwd() | |
if exists("b:Powerline_cwd") && cwd != b:Powerline_cwd | |
unlet! b:Powerline_filepath | |
endif | |
let b:Powerline_cwd = cwd | |
if exists('b:Powerline_filepath') | |
return b:Powerline_filepath | |
endif | |
let dirsep = has('win32') && ! &shellslash ? '\' : '/' | |
let filepath = expand('%:p') | |
if empty(filepath) | |
return '' | |
endif | |
let ret = '' | |
" Display a relative path, similar to the %f statusline item | |
let ret = fnamemodify(filepath, ':~:.:h') . dirsep | |
if ret == ('.' . dirsep) | |
let ret = '' | |
endif | |
let b:Powerline_filepath = ret | |
return ret | |
endfunction " }}} | |
function! GetBranch(symbol) " {{{ | |
if exists('fugitive#statusline') | |
let ret = fugitive#statusline() | |
else | |
let ret = '' | |
endif | |
let ret = substitute(ret, '\c\v\[?GIT\(([a-z0-9\-_\./:]+)\)\]?', a:symbol .' \1', 'g') | |
return ret | |
endfunction " }}} | |
function! MyStatusline(current) " {{{ | |
let s = {} | |
let s['n'] = '%(%(%#StatusLine1# %{&paste ? "PASTE" : ""} %)%#StatusLine2#%)%(%(%#StatusLine3# %{GetMode()} %)%#StatusLine4#%)%(%(%#StatusLine5# %{GetBranch("BR:")} %)%#StatusLine5#│%)%( %(%#StatusLine6#%{&readonly ? "RO" : ""} %)%(%#StatusLine7#%{GetFilepath()}%)%(%#StatusLine8#%t %)%(%#StatusLine6#%M %)%(%#StatusLine6#%H%W %)%#StatusLine9#%)%<%#StatusLine10#%=%(%#StatusLine11#%(%#StatusLine12# %{&fileformat} %)%)%(%#StatusLine12#│%(%#StatusLine12# %{(&fenc == "" ? &enc : &fenc)} %)%)%(%#StatusLine12#│%(%#StatusLine12# %{strlen(&ft) ? &ft : "no ft"} %)%)%(%#StatusLine9#%(%#StatusLine5# %3p%% %)%)%(%#StatusLine7#%(%#StatusLine13# LN %3l%)%(%#StatusLine14#:%-2v%) %)' | |
let s['i'] = '%(%(%#StatusLine1# %{&paste ? "PASTE" : ""} %)%#StatusLine15#%)%(%(%#StatusLine16# %{GetMode()} %)%#StatusLine17#%)%(%(%#StatusLine18# %{GetBranch("BR:")} %)%#StatusLine18#│%)%( %(%#StatusLine19#%{&readonly ? "RO" : ""} %)%(%#StatusLine18#%{GetFilepath()}%)%(%#StatusLine20#%t %)%(%#StatusLine19#%M %)%(%#StatusLine19#%H%W %)%#StatusLine21#%)%<%#StatusLine22#%=%(%#StatusLine23#%(%#StatusLine24# %{&fileformat} %)%)%(%#StatusLine24#│%(%#StatusLine24# %{(&fenc == "" ? &enc : &fenc)} %)%)%(%#StatusLine24#│%(%#StatusLine24# %{strlen(&ft) ? &ft : "no ft"} %)%)%(%#StatusLine21#%(%#StatusLine18# %3p%% %)%)%(%#StatusLine18#%(%#StatusLine25# LN %3l%)%(%#StatusLine26#:%-2v%) %)' | |
let s['N'] = '%(%(%#StatusLine27# %{GetBranch("BR:")} %)%#StatusLine28#%)%( %(%#StatusLine29#%{&readonly ? "RO" : ""} %)%(%#StatusLine30#%{GetFilepath()}%)%(%#StatusLine31#%t %)%(%#StatusLine29#%M %)%(%#StatusLine29#%H%W %)%#StatusLine32#%)%<%#StatusLine33#%=%(%#StatusLine28#%(%#StatusLine27# %3p%% %)%)%(%#StatusLine34#│%(%#StatusLine34# LN %3l%)%(%#StatusLine35#:%-2v%) %)' | |
let s['v'] = '%(%(%#StatusLine1# %{&paste ? "PASTE" : ""} %)%#StatusLine36#%)%(%(%#StatusLine37# %{GetMode()} %)%#StatusLine38#%)%(%(%#StatusLine5# %{GetBranch("BR:")} %)%#StatusLine5#│%)%( %(%#StatusLine6#%{&readonly ? "RO" : ""} %)%(%#StatusLine7#%{GetFilepath()}%)%(%#StatusLine8#%t %)%(%#StatusLine6#%M %)%(%#StatusLine6#%H%W %)%#StatusLine9#%)%<%#StatusLine10#%=%(%#StatusLine11#%(%#StatusLine12# %{&fileformat} %)%)%(%#StatusLine12#│%(%#StatusLine12# %{(&fenc == "" ? &enc : &fenc)} %)%)%(%#StatusLine12#│%(%#StatusLine12# %{strlen(&ft) ? &ft : "no ft"} %)%)%(%#StatusLine9#%(%#StatusLine5# %3p%% %)%)%(%#StatusLine7#%(%#StatusLine13# LN %3l%)%(%#StatusLine14#:%-2v%) %)' | |
let s['s'] = '%(%(%#StatusLine1# %{&paste ? "PASTE" : ""} %)%#StatusLine39#%)%(%(%#StatusLine40# %{GetMode()} %)%#StatusLine41#%)%(%(%#StatusLine5# %{GetBranch("BR:")} %)%#StatusLine5#│%)%( %(%#StatusLine6#%{&readonly ? "RO" : ""} %)%(%#StatusLine7#%{GetFilepath()}%)%(%#StatusLine8#%t %)%(%#StatusLine6#%M %)%(%#StatusLine6#%H%W %)%#StatusLine9#%)%<%#StatusLine10#%=%(%#StatusLine11#%(%#StatusLine12# %{&fileformat} %)%)%(%#StatusLine12#│%(%#StatusLine12# %{(&fenc == "" ? &enc : &fenc)} %)%)%(%#StatusLine12#│%(%#StatusLine12# %{strlen(&ft) ? &ft : "no ft"} %)%)%(%#StatusLine9#%(%#StatusLine5# %3p%% %)%)%(%#StatusLine7#%(%#StatusLine13# LN %3l%)%(%#StatusLine14#:%-2v%) %)' | |
let s['r'] = '%(%(%#StatusLine1# %{&paste ? "PASTE" : ""} %)%#StatusLine1#│%)%(%(%#StatusLine1# %{GetMode()} %)%#StatusLine42#%)%(%(%#StatusLine5# %{GetBranch("BR:")} %)%#StatusLine5#│%)%( %(%#StatusLine6#%{&readonly ? "RO" : ""} %)%(%#StatusLine7#%{GetFilepath()}%)%(%#StatusLine8#%t %)%(%#StatusLine6#%M %)%(%#StatusLine6#%H%W %)%#StatusLine9#%)%<%#StatusLine10#%=%(%#StatusLine11#%(%#StatusLine12# %{&fileformat} %)%)%(%#StatusLine12#│%(%#StatusLine12# %{(&fenc == "" ? &enc : &fenc)} %)%)%(%#StatusLine12#│%(%#StatusLine12# %{strlen(&ft) ? &ft : "no ft"} %)%)%(%#StatusLine9#%(%#StatusLine5# %3p%% %)%)%(%#StatusLine7#%(%#StatusLine13# LN %3l%)%(%#StatusLine14#:%-2v%) %)' | |
let mode = mode() | |
if ! a:current | |
let mode = 'N' " Normal (non-current) | |
elseif mode =~# '\v(v|V| )' | |
let mode = 'v' " Visual mode | |
elseif mode =~# '\v(s|S| )' | |
let mode = 's' " Select mode | |
elseif mode =~# '\vi' | |
let mode = 'i' " Insert mode | |
elseif mode =~# '\v(R|Rv)' | |
let mode = 'r' " Replace mode | |
else | |
" Fallback to normal mode | |
let mode = 'n' " Normal (current) | |
endif | |
return s[mode] | |
endfunction " }}} | |
function! ResetStatusLineColors() " {{{ | |
hi StatusLine1 cterm=bold ctermfg=231 ctermbg=160 gui=bold guifg=#ffffff guibg=#d70000 | |
hi StatusLine10 ctermfg=231 ctermbg=236 guifg=#ffffff guibg=#303030 | |
hi StatusLine11 ctermfg=236 ctermbg=236 guifg=#303030 guibg=#303030 | |
hi StatusLine12 ctermfg=247 ctermbg=236 guifg=#9e9e9e guibg=#303030 | |
hi StatusLine13 cterm=bold ctermfg=236 ctermbg=252 gui=bold guifg=#303030 guibg=#d0d0d0 | |
hi StatusLine14 ctermfg=244 ctermbg=252 guifg=#808080 guibg=#d0d0d0 | |
hi StatusLine15 ctermfg=160 ctermbg=231 guifg=#d70000 guibg=#ffffff | |
hi StatusLine16 cterm=bold ctermfg=23 ctermbg=231 gui=bold guifg=#005f5f guibg=#ffffff | |
hi StatusLine17 ctermfg=231 ctermbg=31 guifg=#ffffff guibg=#0087af | |
hi StatusLine18 ctermfg=117 ctermbg=31 guifg=#87d7ff guibg=#0087af | |
hi StatusLine19 cterm=bold ctermfg=196 ctermbg=31 gui=bold guifg=#ff0000 guibg=#0087af | |
hi StatusLine2 ctermfg=160 ctermbg=148 guifg=#d70000 guibg=#afd700 | |
hi StatusLine20 cterm=bold ctermfg=231 ctermbg=31 gui=bold guifg=#ffffff guibg=#0087af | |
hi StatusLine21 ctermfg=31 ctermbg=24 guifg=#0087af guibg=#005f87 | |
hi StatusLine22 ctermfg=231 ctermbg=24 guifg=#ffffff guibg=#005f87 | |
hi StatusLine23 ctermfg=24 ctermbg=24 guifg=#005f87 guibg=#005f87 | |
hi StatusLine24 ctermfg=117 ctermbg=24 guifg=#87d7ff guibg=#005f87 | |
hi StatusLine25 cterm=bold ctermfg=23 ctermbg=117 gui=bold guifg=#005f5f guibg=#87d7ff | |
hi StatusLine26 ctermfg=23 ctermbg=117 guifg=#005f5f guibg=#87d7ff | |
hi StatusLine27 ctermfg=240 ctermbg=235 guifg=#585858 guibg=#262626 | |
hi StatusLine28 ctermfg=235 ctermbg=233 guifg=#262626 guibg=#121212 | |
hi StatusLine29 ctermfg=88 ctermbg=233 guifg=#870000 guibg=#121212 | |
hi StatusLine3 cterm=bold ctermfg=22 ctermbg=148 gui=bold guifg=#005f00 guibg=#afd700 | |
hi StatusLine30 ctermfg=241 ctermbg=233 guifg=#626262 guibg=#121212 | |
hi StatusLine31 cterm=bold ctermfg=245 ctermbg=233 gui=bold guifg=#8a8a8a guibg=#121212 | |
hi StatusLine32 ctermfg=233 ctermbg=233 guifg=#121212 guibg=#121212 | |
hi StatusLine33 ctermfg=231 ctermbg=233 guifg=#ffffff guibg=#121212 | |
hi StatusLine34 cterm=bold ctermfg=245 ctermbg=235 gui=bold guifg=#8a8a8a guibg=#262626 | |
hi StatusLine35 ctermfg=241 ctermbg=235 guifg=#626262 guibg=#262626 | |
hi StatusLine36 ctermfg=160 ctermbg=208 guifg=#d70000 guibg=#ff8700 | |
hi StatusLine37 cterm=bold ctermfg=88 ctermbg=208 gui=bold guifg=#870000 guibg=#ff8700 | |
hi StatusLine38 ctermfg=208 ctermbg=240 guifg=#ff8700 guibg=#585858 | |
hi StatusLine39 ctermfg=160 ctermbg=241 guifg=#d70000 guibg=#626262 | |
hi StatusLine4 ctermfg=148 ctermbg=240 guifg=#afd700 guibg=#585858 | |
hi StatusLine40 cterm=bold ctermfg=231 ctermbg=241 gui=bold guifg=#ffffff guibg=#626262 | |
hi StatusLine41 ctermfg=241 ctermbg=240 guifg=#626262 guibg=#585858 | |
hi StatusLine42 ctermfg=160 ctermbg=240 guifg=#d70000 guibg=#585858 | |
hi StatusLine5 ctermfg=250 ctermbg=240 guifg=#bcbcbc guibg=#585858 | |
hi StatusLine6 cterm=bold ctermfg=196 ctermbg=240 gui=bold guifg=#ff0000 guibg=#585858 | |
hi StatusLine7 ctermfg=252 ctermbg=240 guifg=#d0d0d0 guibg=#585858 | |
hi StatusLine8 cterm=bold ctermfg=231 ctermbg=240 gui=bold guifg=#ffffff guibg=#585858 | |
hi StatusLine9 ctermfg=240 ctermbg=236 guifg=#585858 guibg=#303030 | |
endfunction "}}} | |
" Autocommands {{{ | |
function! s:Startup() | |
augroup StatuslineMain | |
autocmd! | |
autocmd ColorScheme * call ResetStatusLineColors() | |
autocmd BufEnter,WinEnter,FileType,BufUnload,CmdWinEnter * | |
\ call setwinvar(winnr(), '&statusline', | |
\ '%!MyStatusline(1)') | |
autocmd BufLeave,WinLeave,CmdWinLeave * | |
\ call setwinvar(winnr(), '&statusline', | |
\ '%!MyStatusline(0)') | |
augroup END | |
let curwindow = winnr() | |
for window in range(1, winnr('$')) | |
call ResetStatusLineColors() | |
call setwinvar(winnr(), '&statusline', | |
\ '%!MyStatusline('. (window == curwindow) .')') | |
endfor | |
endfunction | |
augroup StatuslineStartup | |
autocmd! | |
autocmd VimEnter * call s:Startup() | |
augroup END | |
" }}} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment