110 lines
3.1 KiB
VimL
110 lines
3.1 KiB
VimL
" Always show a statusline
|
||
set laststatus=2
|
||
|
||
" Get current filetype
|
||
function! CheckFT(filetype)
|
||
if a:filetype == ''
|
||
return '-'
|
||
else
|
||
return tolower(a:filetype)
|
||
endif
|
||
endfunction
|
||
|
||
" set colors for statusline based on mode
|
||
function! DetectMode(mode)
|
||
if empty($DISPLAY)
|
||
let left=""
|
||
let right=""
|
||
else
|
||
let left=""
|
||
let right=""
|
||
end
|
||
|
||
let statusline=""
|
||
" Mode
|
||
if a:mode == 'n'
|
||
let statusline .= "%#GruvboxBg4#\ " . left
|
||
let statusline .= "%#PmenuThumb#NORMAL"
|
||
let statusline .= "%#GruvboxBg4#" . right . "\ "
|
||
elseif a:mode == 'i'
|
||
let statusline .= "%#GruvboxBlue#\ " . left
|
||
let statusline .= "%#PmenuSel#INSERT"
|
||
let statusline .= "%#GruvboxBlue#" . right . "\ "
|
||
elseif a:mode == 'R'
|
||
let statusline .= "%#GruvboxRed#\ " . left
|
||
let statusline .= "%#DiffDelete#REPLACE"
|
||
let statusline .= "%#GruvboxRed#" . right . "\ "
|
||
elseif a:mode ==# 'v'
|
||
let statusline .= "%#GruvboxAqua#\ " . left
|
||
let statusline .= "%#DiffChange#VISUAL"
|
||
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||
elseif a:mode ==# 'V'
|
||
let statusline .= "%#GruvboxAqua#\ " . left
|
||
let statusline .= "%#DiffChange#VISUAL"
|
||
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||
elseif a:mode ==# ''
|
||
let statusline .= "%#GruvboxAqua#\ " . left
|
||
let statusline .= "%#DiffChange#VISUAL"
|
||
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||
elseif a:mode ==# 'c'
|
||
let statusline .= "%#GruvboxBg2#\ " . left
|
||
let statusline .= "%#Pmenu#COMMAND"
|
||
let statusline .= "%#GruvboxBg2#" . right . "\ "
|
||
elseif a:mode ==# 't'
|
||
let statusline .= "%#ModeTFGCS#\ " . left
|
||
let statusline .= "%#ModeTFGC#\ TERMINAL\ "
|
||
let statusline .= "%#ModeTFGCS#" . right . "\ " . left
|
||
let statusline .= "%#ModeTFGC#%[%n\ ̷%{bufnr('$')}\ "
|
||
elseif a:mode == 's' || a:mode == 'S' || a:mode == '^S'
|
||
let statusline .= "%#GruvboxAqua#\ " . left
|
||
let statusline .= "%#DiffChange#VISUAL"
|
||
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||
endif
|
||
" Filename
|
||
" grey = normal
|
||
" aqua = modified
|
||
" red = read only and not modified
|
||
if &mod == 1
|
||
let statusline .= "%#GruvboxAqua#\ " . left
|
||
let statusline .= "%#DiffChange#%.30f"
|
||
let statusline .= "%#GruvboxAqua#" . right . "\ "
|
||
else
|
||
if &readonly == 1
|
||
let statusline .= "%#GruvboxRed#\ " . left
|
||
let statusline .= "%#DiffDelete#%.30f"
|
||
let statusline .= "%#GruvboxRed#" . right . "\ "
|
||
else
|
||
let statusline .= "%#GruvboxBg4#\ " . left
|
||
let statusline .= "%#PmenuThumb#%.30f"
|
||
let statusline .= "%#GruvboxBg4#" . right . "\ "
|
||
endif
|
||
endif
|
||
|
||
" Seperator
|
||
let statusline .= "%="
|
||
|
||
" git branch
|
||
if exists("*FugitiveHead")
|
||
let head = FugitiveHead()
|
||
if head != ''
|
||
let statusline .= "%#GruvboxBg4#\ " . left
|
||
let statusline .= "%#PmenuThumb#" . head
|
||
let statusline .= "%#GruvboxBg4#" . right . "\ "
|
||
endif
|
||
endif
|
||
|
||
" Filetype
|
||
let statusline .= "%#GruvboxBlue#\ " . left
|
||
let statusline .= "%#PmenuSel#%{CheckFT(&filetype)}"
|
||
let statusline .= "%#GruvboxBlue#" . right . "\ "
|
||
|
||
" Cursor location and file length
|
||
let statusline .= "%#GruvboxYellow#\ " . left
|
||
let statusline .= "%#Search#%c:%l\ %#IncSearch#\ %L"
|
||
let statusline .= "%#GruvboxOrange#" . right . "\ "
|
||
|
||
|
||
return statusline
|
||
endfunction
|
||
|
||
set statusline=%!DetectMode(mode())
|