Dotfiles/nvim/.config/nvim/plugin/statusline.vim
2020-12-21 16:15:30 +00:00

110 lines
3.1 KiB
VimL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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