From e42b2d458886900cecee0c04d3c4f4d74ca0cdf4 Mon Sep 17 00:00:00 2001 From: elenapan Date: Thu, 1 Aug 2019 11:22:47 +0300 Subject: [PATCH] Added vim statusline configuration Former-commit-id: 170a08588828f1068a81aa712355f21f440be1fd Former-commit-id: efb1cc95f315a89ed9028bbe9945aeb31449e107 Former-commit-id: c153cd41149fcbcf7be88a20457c0f0e99d044bf Former-commit-id: cb6aa69bd1196b4374f05908c3226b6366fd7178 --- config/nvim/statusline.vim | 121 +++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 config/nvim/statusline.vim diff --git a/config/nvim/statusline.vim b/config/nvim/statusline.vim new file mode 100644 index 0000000..41c9492 --- /dev/null +++ b/config/nvim/statusline.vim @@ -0,0 +1,121 @@ +" Make sure to source this file somewhere at the bottom of your config. +" ==================================================================== +" ==================================================================== + +" Do not show mode under the statusline since the statusline itself changes +" color depending on mode +set noshowmode + +set laststatus=2 +" ~~~~ Statusline configuration ~~~~ +" ':help statusline' is your friend! +function! RedrawModeColors(mode) " {{{ + " Normal mode + if a:mode == 'n' + hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE + hi MyStatuslineFilename ctermfg=4 cterm=none ctermbg=0 + hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=4 + " Insert mode + elseif a:mode == 'i' + hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE + hi MyStatuslineFilename ctermfg=1 cterm=none ctermbg=0 + hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=1 + " Replace mode + elseif a:mode == 'R' + hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE + hi MyStatuslineFilename ctermfg=3 cterm=none ctermbg=0 + hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=3 + " Visual mode + elseif a:mode == 'v' || a:mode == 'V' || a:mode == '^V' + hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE + hi MyStatuslineFilename ctermfg=5 cterm=none ctermbg=0 + hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=5 + " Command mode + elseif a:mode == 'c' + hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE + hi MyStatuslineFilename ctermfg=6 cterm=none ctermbg=0 + hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=6 + " Terminal mode + elseif a:mode == 't' + hi MyStatuslineAccent ctermfg=8 cterm=NONE ctermbg=NONE + hi MyStatuslineFilename ctermfg=1 cterm=none ctermbg=0 + hi MyStatuslineAccentBody ctermbg=8 cterm=NONE ctermfg=1 + endif + " Return empty string so as not to display anything in the statusline + return '' +endfunction +" }}} +function! SetModifiedSymbol(modified) " {{{ + if a:modified == 1 + hi MyStatuslineModifiedBody ctermbg=0 cterm=bold ctermfg=1 + else + hi MyStatuslineModifiedBody ctermbg=0 cterm=bold ctermfg=8 + endif + return '●' +endfunction +" }}} +function! SetFiletype(filetype) " {{{ + if a:filetype == '' + return '-' + else + return a:filetype + endif +endfunction +" }}} + +" Statusbar items +" ==================================================================== + +" This will not be displayed, but the function RedrawModeColors will be +" called every time the mode changes, thus updating the colors used for the +" components. +set statusline=%{RedrawModeColors(mode())} +" Left side items +" ======================= +set statusline+=%#MyStatuslineAccent# +set statusline+=%#MyStatuslineAccentBody#\ +" Filename +set statusline+=%#MyStatuslineFilename#\ %.20f +set statusline+=%#MyStatuslineSeparator#\ +" Modified status +set statusline+=%#MyStatuslineModified# +set statusline+=%#MyStatuslineModifiedBody#%{SetModifiedSymbol(&modified)} +set statusline+=%#MyStatuslineModified# +" Right side items +" ======================= +set statusline+=%= +" Line and Column +set statusline+=%#MyStatuslineLineCol# +set statusline+=%#MyStatuslineLineColBody#%2l +set statusline+=\/%#MyStatuslineLineColBody#%2c +set statusline+=%#MyStatuslineLineCol# +" Padding +set statusline+=\ +" Current scroll percentage and total lines of the file +set statusline+=%#MyStatuslinePercentage# +set statusline+=%#MyStatuslinePercentageBody#%P +set statusline+=\/\%#MyStatuslinePercentageBody#%L +set statusline+=%#MyStatuslinePercentage# +" Padding +set statusline+=\ +" Filetype +set statusline+=%#MyStatuslineFiletype# +set statusline+=%#MyStatuslineFiletypeBody#%{SetFiletype(&filetype)} +set statusline+=%#MyStatuslineFiletype# + +" Setup the colors +hi StatusLine ctermfg=5 ctermbg=NONE cterm=NONE +hi StatusLineNC ctermfg=8 ctermbg=NONE cterm=bold + +hi MyStatuslineSeparator ctermfg=0 cterm=NONE ctermbg=NONE + +hi MyStatuslineModified ctermfg=0 cterm=NONE ctermbg=NONE + +hi MyStatuslineFiletype ctermbg=NONE cterm=NONE ctermfg=0 +hi MyStatuslineFiletypeBody ctermfg=5 cterm=italic ctermbg=0 + +hi MyStatuslinePercentage ctermfg=0 cterm=NONE ctermbg=NONE +hi MyStatuslinePercentageBody ctermbg=0 cterm=none ctermfg=6 + +hi MyStatuslineLineCol ctermfg=0 cterm=NONE ctermbg=NONE +hi MyStatuslineLineColBody ctermbg=0 cterm=none ctermfg=2