mirror of
https://github.com/vim-airline/vim-airline-themes.git
synced 2025-01-06 09:23:47 +08:00
Merge pull request #950 from chrisbra/msdos_colors
Better algorightm, to get msdos colors
This commit is contained in:
commit
82d1cab392
|
@ -9,12 +9,11 @@ let s:accents = {}
|
||||||
function! s:gui2cui(rgb, fallback)
|
function! s:gui2cui(rgb, fallback)
|
||||||
if a:rgb == ''
|
if a:rgb == ''
|
||||||
return a:fallback
|
return a:fallback
|
||||||
elseif match(a:rgb, 'NONE\|[fb]g')
|
elseif match(a:rgb, '^\%(NONE\|[fb]g\)$') > -1
|
||||||
return a:rgb
|
return a:rgb
|
||||||
endif
|
endif
|
||||||
let rgb = map(matchlist(a:rgb, '#\(..\)\(..\)\(..\)')[1:3], '0 + ("0x".v:val)')
|
let rgb = map(split(a:rgb[1:], '..\zs'), '0 + ("0x".v:val)')
|
||||||
let rgb = [rgb[0] > 127 ? 4 : 0, rgb[1] > 127 ? 2 : 0, rgb[2] > 127 ? 1 : 0]
|
return airline#msdos#round_msdos_colors(rgb)
|
||||||
return rgb[0]+rgb[1]+rgb[2]
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_syn(group, what)
|
function! s:get_syn(group, what)
|
||||||
|
|
57
autoload/airline/msdos.vim
Normal file
57
autoload/airline/msdos.vim
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
" MIT License. Copyright (c) 2013-2016 Bailey Ling.
|
||||||
|
" vim: et ts=2 sts=2 sw=2
|
||||||
|
|
||||||
|
" basic 16 msdos from MSDOS
|
||||||
|
" see output of color, should be
|
||||||
|
" 0 Black
|
||||||
|
" 1 DarkBlue
|
||||||
|
" 2 DarkGreen
|
||||||
|
" 3 DarkCyan
|
||||||
|
" 4 DarkRed
|
||||||
|
" 5 DarkMagenta
|
||||||
|
" 6 Brown
|
||||||
|
" 7 LightGray
|
||||||
|
" 8 DarkGray
|
||||||
|
" 9 Blue
|
||||||
|
" 10 Green
|
||||||
|
" 11 Cyan
|
||||||
|
" 12 Red
|
||||||
|
" 13 Magenta
|
||||||
|
" 14 Yellow
|
||||||
|
" 15 White
|
||||||
|
|
||||||
|
let s:basic16 = [
|
||||||
|
\ [ 0x00, 0x00, 0x00 ],
|
||||||
|
\ [ 0x00, 0x00, 0x80 ],
|
||||||
|
\ [ 0x00, 0x80, 0x00 ],
|
||||||
|
\ [ 0x00, 0x80, 0x80 ],
|
||||||
|
\ [ 0x80, 0x00, 0x00 ],
|
||||||
|
\ [ 0x80, 0x00, 0x80 ],
|
||||||
|
\ [ 0x80, 0x80, 0x00 ],
|
||||||
|
\ [ 0xC0, 0xC0, 0xC0 ],
|
||||||
|
\ [ 0x80, 0x80, 0x80 ],
|
||||||
|
\ [ 0x00, 0x00, 0xFF ],
|
||||||
|
\ [ 0x00, 0xFF, 0x00 ],
|
||||||
|
\ [ 0x00, 0xFF, 0xFF ],
|
||||||
|
\ [ 0xFF, 0x00, 0x00 ],
|
||||||
|
\ [ 0xFF, 0x00, 0xFF ],
|
||||||
|
\ [ 0xFF, 0xFF, 0x00 ],
|
||||||
|
\ [ 0xFF, 0xFF, 0xFF ]
|
||||||
|
\ ]
|
||||||
|
|
||||||
|
function! airline#msdos#round_msdos_colors(rgblist)
|
||||||
|
" Check for values from MSDOS 16 color terminal
|
||||||
|
let best = []
|
||||||
|
let min = 100000
|
||||||
|
let list = s:basic16
|
||||||
|
for value in list
|
||||||
|
let t = abs(value[0] - a:rgblist[0]) +
|
||||||
|
\ abs(value[1] - a:rgblist[1]) +
|
||||||
|
\ abs(value[2] - a:rgblist[2])
|
||||||
|
if min > t
|
||||||
|
let min = t
|
||||||
|
let best = value
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return index(s:basic16, best)
|
||||||
|
endfunction
|
Loading…
Reference in New Issue
Block a user