move highlighter code to correct place and test.

This commit is contained in:
Bailey Ling 2013-09-02 02:57:32 +00:00
parent 4b33adee42
commit f6900aeb0a
4 changed files with 59 additions and 32 deletions

View File

@ -13,6 +13,44 @@ function! s:gui2cui(rgb, fallback)
return rgb[0]+rgb[1]+rgb[2] return rgb[0]+rgb[1]+rgb[2]
endfunction endfunction
function! s:get_syn(group, what)
" need to pass in mode, known to break on 7.3.547
let mode = has('gui_running') ? 'gui' : 'cterm'
let color = synIDattr(synIDtrans(hlID(a:group)), a:what, mode)
if empty(color) || color == -1
let color = synIDattr(synIDtrans(hlID('Normal')), a:what, mode)
endif
if empty(color) || color == -1
if has('gui_running')
let color = a:what ==# 'fg' ? '#000000' : '#FFFFFF'
else
let color = a:what ==# 'fg' ? 0 : 1
endif
endif
return color
endfunction
function! s:get_array(fg, bg, opts)
let fg = a:fg
let bg = a:bg
return has('gui_running')
\ ? [ fg, bg, '', '', join(a:opts, ',') ]
\ : [ '', '', fg, bg, join(a:opts, ',') ]
endfunction
function! airline#highlighter#get_highlight(group, ...)
let fg = s:get_syn(a:group, 'fg')
let bg = s:get_syn(a:group, 'bg')
let reverse = synIDattr(synIDtrans(hlID(a:group)), 'reverse', has('gui_running') ? 'gui' : 'term')
return reverse ? s:get_array(bg, fg, a:000) : s:get_array(fg, bg, a:000)
endfunction
function! airline#highlighter#get_highlight2(fg, bg, ...)
let fg = s:get_syn(a:fg[0], a:fg[1])
let bg = s:get_syn(a:bg[0], a:bg[1])
return s:get_array(fg, bg, a:000)
endfunction
function! airline#highlighter#exec(group, colors) function! airline#highlighter#exec(group, colors)
let colors = a:colors let colors = a:colors
if s:is_win32term if s:is_win32term
@ -50,6 +88,7 @@ endfunction
function! airline#highlighter#add_separator(from, to, inverse) function! airline#highlighter#add_separator(from, to, inverse)
let s:separators[a:from.a:to] = [a:from, a:to, a:inverse] let s:separators[a:from.a:to] = [a:from, a:to, a:inverse]
call <sid>exec_separator({}, a:from, a:to, a:inverse, '')
endfunction endfunction
function! airline#highlighter#highlight(modes) function! airline#highlighter#highlight(modes)

View File

@ -15,42 +15,12 @@ function! airline#themes#generate_color_map(section1, section2, section3, file)
\ } \ }
endfunction endfunction
function! s:get_syn(group, what)
" need to pass in mode, known to break on 7.3.547
let mode = has('gui_running') ? 'gui' : 'cterm'
let color = synIDattr(synIDtrans(hlID(a:group)), a:what, mode)
if empty(color) || color == -1
let color = synIDattr(synIDtrans(hlID('Normal')), a:what, mode)
endif
if empty(color) || color == -1
if has('gui_running')
let color = a:what ==# 'fg' ? '#000000' : '#FFFFFF'
else
let color = a:what ==# 'fg' ? 0 : 1
endif
endif
return color
endfunction
function! s:get_array(fg, bg, opts)
let fg = a:fg
let bg = a:bg
return has('gui_running')
\ ? [ fg, bg, '', '', join(a:opts, ',') ]
\ : [ '', '', fg, bg, join(a:opts, ',') ]
endfunction
function! airline#themes#get_highlight(group, ...) function! airline#themes#get_highlight(group, ...)
let fg = s:get_syn(a:group, 'fg') return call('airline#highlighter#get_highlight', [a:group] + a:000)
let bg = s:get_syn(a:group, 'bg')
let reverse = synIDattr(synIDtrans(hlID(a:group)), 'reverse', has('gui_running') ? 'gui' : 'term')
return reverse ? s:get_array(bg, fg, a:000) : s:get_array(fg, bg, a:000)
endfunction endfunction
function! airline#themes#get_highlight2(fg, bg, ...) function! airline#themes#get_highlight2(fg, bg, ...)
let fg = s:get_syn(a:fg[0], a:fg[1]) return call('airline#highlighter#get_highlight2', [a:fg, a:bg] + a:000)
let bg = s:get_syn(a:bg[0], a:bg[1])
return s:get_array(fg, bg, a:000)
endfunction endfunction
function! airline#themes#patch(palette) function! airline#themes#patch(palette)

10
t/highligher.vim Normal file
View File

@ -0,0 +1,10 @@
describe 'highlighter'
it 'should create separator highlight groups'
hi Foo1 ctermfg=1 ctermbg=2
hi Foo2 ctermfg=3 ctermbg=4
call airline#highlighter#add_separator('Foo1', 'Foo2', 0)
let hl = airline#highlighter#get_highlight('Foo1_to_Foo2')
Expect hl == [ '', '', '4', '2', '' ]
end
end

View File

@ -25,5 +25,13 @@ describe 'themes'
Expect colors[2] == '222' Expect colors[2] == '222'
Expect colors[3] == '103' Expect colors[3] == '103'
end end
it 'should pass args through correctly'
let hl = airline#themes#get_highlight('Foo', 'bold', 'italic')
Expect hl == ['', '', 0, 1, 'bold,italic']
let hl = airline#themes#get_highlight2(['Foo','bg'], ['Foo','fg'], 'italic', 'bold')
Expect hl == ['', '', 1, 0, 'italic,bold']
end
end end