vim9: Rewrite highlighter in Vim9 Script

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.
This commit is contained in:
Christian Brabandt
2021-05-08 13:36:55 +02:00
parent 7e295c859f
commit a2f298ba8f
3 changed files with 695 additions and 315 deletions

View File

@@ -41,19 +41,43 @@ let s:basic16 = [
\ [ 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
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