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