You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

110 lines
3.1 KiB

" 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())