mirror of
https://github.com/vim-airline/vim-airline.git
synced 2024-12-13 22:36:08 +08:00
a2f298ba8f
This is the one script, that is usually causing the most slow down. Converting it to Vim9 Script should keep vim responsive and the users happy. Hopefully that works now.
84 lines
1.8 KiB
VimL
84 lines
1.8 KiB
VimL
" MIT License. Copyright (c) 2013-2021 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 ]
|
|
\ ]
|
|
|
|
if !exists(":def") || (exists(":def") && get(g:, "airline_experimental", 0) == 0)
|
|
|
|
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
|
|
|
|
finish
|
|
|
|
else
|
|
|
|
def airline#msdos#round_msdos_colors(rgblist: list<number>): string
|
|
# Check for values from MSDOS 16 color terminal
|
|
var best = []
|
|
var min = 100000
|
|
var t = 0
|
|
for value in s:basic16
|
|
t = abs(value[0] - rgblist[0]) +
|
|
abs(value[1] - rgblist[1]) +
|
|
abs(value[2] - rgblist[2])
|
|
if min > t
|
|
min = t
|
|
best = value
|
|
endif
|
|
endfor
|
|
return string(index(s:basic16, best))
|
|
enddef
|
|
endif
|