summaryrefslogtreecommitdiff
path: root/.vim/miniplugins/statusline.vim
blob: 92b9f105b43f36d8ae78521fcbcef53393d96096 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
" Needed settings
set laststatus=2
set timeoutlen=1000 ttimeoutlen=10
set noshowmode

" call hlset([#{name: 'StatusLine', ctermfg: '252', ctermbg: '239'}])

" Logic

let leftcap = ''
let rightcap = ''
let leftmcap = ''
let rightmcap = ''

set statusline=
" Mode

" Values are, in order, for: normal (default), insert, replace, visual modes
"	[ctermfg, ctermbg]
let s:modecolors = [
\	['236', '117'],
\	['236', '119'],
\	['236', '203'],
\	['236', '216'],
\]

let modestring = ''

hi SLMode  ctermfg=1 ctermbg=0
hi SLModeC ctermfg=1 ctermbg=0


function! SLModeSetter()
	let cm = mode()
	let ind = 0
	
	if cm == 'i'
		let ind = 1
	elseif cm == 'R'
		let ind = 2
		let cm = 'r'
	elseif cm == 'v'
		let ind = 3
	endif

	call hlset([#{name: 'SLMode',  ctermfg: s:modecolors[l:ind][0], ctermbg: s:modecolors[l:ind][1]}])
	call hlset([#{name: 'SLModeC', ctermfg: s:modecolors[l:ind][1], ctermbg: '239'}])
	let g:modestring = l:cm

	return ''
endfunction

set statusline+=%{SLModeSetter()}%#SLModeC#%{leftcap}%#SLMode#%{modestring}%#SLModeC#%{rightcap}
"                                \______leftcap______/\________mode_______/\______rightcap_____/

" Filename

set statusline+=%#StatusLine#\ %f\ %{rightmcap}

" File stat

function! SLReadonly()
	return (&ft !~? 'vimfiler' && &readonly) ? ' ' : ''
endfunction

function! SLModified()
	return (&ft =~ 'vimfiler') ? '' : (&modified ? '' : (&modifiable ? '' : ''))
endfunction

set statusline+=\ %{SLReadonly()}%{SLModified()}\ 

" Middle separator
set statusline+=%=

" Filetype
set statusline+=%{leftmcap}\ %{WebDevIconsGetFileTypeSymbol()}\ %{&ft}\ 

" Line and column count
hi SLRowCol  ctermfg=238 ctermbg=244
hi SLRowColC ctermfg=244 ctermbg=239
set statusline+=%#SLRowColC#%{leftcap}%#SLRowCol#%l:%c%#SLRowColC#%{rightcap}