vim-airline/autoload/airline/msdos.vim
2020-01-06 11:22:49 +09:00

60 lines
1.3 KiB
VimL

" MIT License. Copyright (c) 2013-2020 Bailey Ling Christian Brabandt et al.
" vim: et ts=2 sts=2 sw=2
scriptencoding utf-8
" 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