msdos.vim 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. " MIT License. Copyright (c) 2013-2021 Bailey Ling Christian Brabandt et al.
  2. " vim: et ts=2 sts=2 sw=2
  3. scriptencoding utf-8
  4. " basic 16 msdos from MSDOS
  5. " see output of color, should be
  6. " 0 Black
  7. " 1 DarkBlue
  8. " 2 DarkGreen
  9. " 3 DarkCyan
  10. " 4 DarkRed
  11. " 5 DarkMagenta
  12. " 6 Brown
  13. " 7 LightGray
  14. " 8 DarkGray
  15. " 9 Blue
  16. " 10 Green
  17. " 11 Cyan
  18. " 12 Red
  19. " 13 Magenta
  20. " 14 Yellow
  21. " 15 White
  22. let s:basic16 = [
  23. \ [ 0x00, 0x00, 0x00 ],
  24. \ [ 0x00, 0x00, 0x80 ],
  25. \ [ 0x00, 0x80, 0x00 ],
  26. \ [ 0x00, 0x80, 0x80 ],
  27. \ [ 0x80, 0x00, 0x00 ],
  28. \ [ 0x80, 0x00, 0x80 ],
  29. \ [ 0x80, 0x80, 0x00 ],
  30. \ [ 0xC0, 0xC0, 0xC0 ],
  31. \ [ 0x80, 0x80, 0x80 ],
  32. \ [ 0x00, 0x00, 0xFF ],
  33. \ [ 0x00, 0xFF, 0x00 ],
  34. \ [ 0x00, 0xFF, 0xFF ],
  35. \ [ 0xFF, 0x00, 0x00 ],
  36. \ [ 0xFF, 0x00, 0xFF ],
  37. \ [ 0xFF, 0xFF, 0x00 ],
  38. \ [ 0xFF, 0xFF, 0xFF ]
  39. \ ]
  40. if !exists(":def") || !airline#util#has_vim9_script()
  41. function! airline#msdos#round_msdos_colors(rgblist)
  42. " Check for values from MSDOS 16 color terminal
  43. let best = []
  44. let min = 100000
  45. let list = s:basic16
  46. for value in list
  47. let t = abs(value[0] - a:rgblist[0]) +
  48. \ abs(value[1] - a:rgblist[1]) +
  49. \ abs(value[2] - a:rgblist[2])
  50. if min > t
  51. let min = t
  52. let best = value
  53. endif
  54. endfor
  55. return index(s:basic16, best)
  56. endfunction
  57. finish
  58. else
  59. def airline#msdos#round_msdos_colors(rgblist: list<number>): string
  60. # Check for values from MSDOS 16 color terminal
  61. var best = []
  62. var min = 100000
  63. var t = 0
  64. for value in s:basic16
  65. t = abs(value[0] - rgblist[0]) +
  66. abs(value[1] - rgblist[1]) +
  67. abs(value[2] - rgblist[2])
  68. if min > t
  69. min = t
  70. best = value
  71. endif
  72. endfor
  73. return string(index(s:basic16, best))
  74. enddef
  75. endif