dotfiles

Configuration for the software I use.
git clone https://git.jaderune.net/jbauer/dotfiles
Log | Files | Refs | README | LICENSE

statusline.vim (2713B)


      1 " Courtesy for tutorial: https://irrellia.github.io/blogs/vim-statusline/
      2 " Colours for the statusline
      3 " Modi colours are defined further down
      4 autocmd ColorScheme *
      5 	\ if &background == "dark"|
      6 	\	hi Base ctermbg=238 ctermfg=7|
      7 	\	hi Mode ctermbg=240 ctermfg=7 cterm=bold|
      8 	\	hi Git  ctermbg=240 ctermfg=7|
      9 	\	hi Filetype ctermbg=240 ctermfg=7|
     10 	\	hi LineCol ctermbg=238 ctermfg=7|
     11 	\	hi Warn ctermbg=238 ctermfg=9 cterm=bold|
     12 	\ else|
     13 	\	hi Base ctermbg=252 ctermfg=0|
     14 	\	hi Mode ctermbg=254 ctermfg=0 cterm=bold|
     15 	\	hi Git  ctermbg=254 ctermfg=0|
     16 	\	hi Filetype ctermbg=254 ctermfg=0|
     17 	\	hi LineCol ctermbg=252 ctermfg=0|
     18 	\	hi Warn ctermbg=252 ctermfg=9 cterm=bold|
     19 	\ endif
     20 
     21 let g:modes={
     22 	\'n'  : 'Normal ',
     23 	\'no' : 'N·Operator Pending ',
     24 	\'v'  : 'Visual ',
     25 	\'V'  : 'V·Line ',
     26 	\'^V' : 'V·Block ',
     27 	\'s'  : 'Select ',
     28 	\'S'  : 'S·Line ',
     29 	\'^S' : 'S·Block ',
     30 	\'i'  : 'Insert ',
     31 	\'R'  : 'Replace ',
     32 	\'Rv' : 'V·Replace ',
     33 	\'c'  : 'Command ',
     34 	\'cv' : 'Vim Ex ',
     35 	\'ce' : 'Ex ',
     36 	\'r'  : 'Prompt ',
     37 	\'rm' : 'More ',
     38 	\'r?' : 'Confirm ',
     39 	\'!'  : 'Shell ',
     40 	\'t'  : 'Terminal '
     41 	\}
     42 
     43 " Determine current mode
     44 function! CurrentMode() abort
     45 	let l:currentmode = mode()
     46 	let l:modelist = toupper(get(g:modes, l:currentmode, 'V·Block '))
     47 	let l:current_status_mode = l:modelist
     48 	return l:current_status_mode
     49 endfunction
     50 
     51 function! CheckModified(modi)
     52 	if a:modi == 1
     53 		if &background == "dark"
     54 			hi Modi ctermbg=238 ctermfg=7 cterm=bold
     55 		else
     56 			hi Modi ctermbg=252 ctermfg=0 cterm=bold
     57 		endif
     58 		if expand('%') == ""
     59 			return '[New File]'.'*'
     60 		else
     61 			return expand('%:t').'*'
     62 		endif
     63 	else
     64 		if &background == "dark"
     65 			hi Modi ctermbg=238 ctermfg=7 cterm=NONE
     66 		else
     67 			hi Modi ctermbg=252 ctermfg=0 cterm=NONE
     68 		endif
     69 		if expand('%') == ""
     70 			return '[New File]'
     71 		else
     72 			return expand('%:t')
     73 		endif
     74 	endif
     75 endfunction
     76 
     77 function! CheckFileType(filetype)
     78 	if a:filetype == ''
     79 		return '-'
     80 	else
     81 		return tolower(a:filetype)
     82 	endif
     83 endfunction
     84 
     85 function! CheckRO(roflag)
     86 	if a:roflag == 0
     87 		return ''
     88 	else
     89 		return '⊖'
     90 	endif
     91 endfunction
     92 
     93 " Statusline format and layout
     94 function! StatusLine()
     95 	let statusline  = ""
     96 	let statusline .= "%#Base#"
     97 	let statusline .= "%#Mode# %{CurrentMode()}"
     98 	let statusline .= "%#Warn#%( %{CheckRO(&readonly)}%w%)"
     99 	let statusline .= "%#Modi# %{CheckModified(&modified)} "
    100 	let statusline .= "%#Base#"
    101 	let statusline .= "%="
    102 	let statusline .= "%{gutentags#statusline('[', ']')} "
    103 	let statusline .= "%#FileType# %{CheckFileType(&filetype)} "
    104 	let statusline .= "%#LineCol# %p%% Ln %l/%L : %c "
    105 	return statusline
    106 endfunction
    107 
    108 " Activate the custom statusline
    109 augroup enableStatusLine
    110 	autocmd!
    111 	autocmd VimEnter * set statusline=%!StatusLine()
    112 augroup END