44 lines
826 B
VimL
44 lines
826 B
VimL
|
function! Pl#Match#Add(pat, expr) " {{{
|
||
|
return [a:pat, a:expr]
|
||
|
endfunction " }}}
|
||
|
function! Pl#Match#Any(...) " {{{
|
||
|
let matches = []
|
||
|
|
||
|
for match_name in a:000
|
||
|
if empty(match_name)
|
||
|
" Skip empty match parameters
|
||
|
continue
|
||
|
endif
|
||
|
|
||
|
if has_key(g:Powerline#Matches#matches, match_name)
|
||
|
call add(matches, g:Powerline#Matches#matches[match_name])
|
||
|
endif
|
||
|
|
||
|
unlet! match_name
|
||
|
endfor
|
||
|
|
||
|
return ['match', 'any', matches]
|
||
|
endfunction " }}}
|
||
|
function! Pl#Match#Validate(theme) " {{{
|
||
|
let match = a:theme.matches[1]
|
||
|
|
||
|
if match == 'none'
|
||
|
return 0
|
||
|
elseif match == 'any'
|
||
|
let matches = a:theme.matches[2]
|
||
|
|
||
|
if ! len(matches)
|
||
|
" Empty match array matches everything
|
||
|
return 1
|
||
|
endif
|
||
|
|
||
|
for [eval, re] in matches
|
||
|
if match(eval(eval), '\v'. re) != -1
|
||
|
return 1
|
||
|
endif
|
||
|
endfor
|
||
|
|
||
|
return 0
|
||
|
endif
|
||
|
endfunction " }}}
|