3232--- @return RGB rgb_table
3333--- FIXME: this currently does not support transparent backgrounds. Need a replacement for bg_rgb
3434function M .rgba_to_rgb (rgba , bg_rgb )
35- if vim .fn .has (" nvim-0.11" ) == 1 then
36- vim .validate (" rgba" , rgba , " table" , true )
37- vim .validate (" bg_rgb" , bg_rgb , " table" , false )
38- vim .validate (" r" , rgba .r , " number" , true )
39- vim .validate (" g" , rgba .g , " number" , true )
40- vim .validate (" b" , rgba .b , " number" , true )
41- vim .validate (" a" , rgba .a , " number" , true )
42- vim .validate (" bg_r" , bg_rgb .r , " number" , true )
43- vim .validate (" bg_g" , bg_rgb .g , " number" , true )
44- vim .validate (" bg_b" , bg_rgb .b , " number" , true )
45- else
46- vim .validate ({
47- rgba = { rgba , " table" , true },
48- bg_rgb = { bg_rgb , " table" , false },
49- r = { rgba .r , " number" , true },
50- g = { rgba .g , " number" , true },
51- b = { rgba .b , " number" , true },
52- a = { rgba .a , " number" , true },
53- })
54-
55- vim .validate ({
56- bg_r = { bg_rgb .r , " number" , true },
57- bg_g = { bg_rgb .g , " number" , true },
58- bg_b = { bg_rgb .b , " number" , true },
59- })
60- end
35+ vim .validate (" rgba" , rgba , " table" , true )
36+ vim .validate (" bg_rgb" , bg_rgb , " table" , false )
37+ vim .validate (" r" , rgba .r , " number" , true )
38+ vim .validate (" g" , rgba .g , " number" , true )
39+ vim .validate (" b" , rgba .b , " number" , true )
40+ vim .validate (" a" , rgba .a , " number" , true )
41+ vim .validate (" bg_r" , bg_rgb .r , " number" , true )
42+ vim .validate (" bg_g" , bg_rgb .g , " number" , true )
43+ vim .validate (" bg_b" , bg_rgb .b , " number" , true )
6144
6245 local r = rgba .r * rgba .a + bg_rgb .r * (1 - rgba .a )
6346 local g = rgba .g * rgba .a + bg_rgb .g * (1 - rgba .a )
7053--- @param rgb RGB with keys ' r' , ' g' , ' b' in [0,255]
7154--- @return string 6 digit hex representing the rgb params
7255local function rgb_to_hex (rgb )
73- if vim .fn .has (" nvim-0.11" ) == 1 then
74- vim .validate (" rgb" , rgb , " table" , false )
75- vim .validate (" r" , rgb .r , " number" , false )
76- vim .validate (" g" , rgb .g , " number" , false )
77- vim .validate (" b" , rgb .b , " number" , false )
78- else
79- vim .validate ({
80- rgb = { rgb , " table" , false },
81- r = { rgb .r , " number" , false },
82- g = { rgb .g , " number" , false },
83- b = { rgb .b , " number" , false },
84- })
85- end
56+ vim .validate (" rgb" , rgb , " table" , false )
57+ vim .validate (" r" , rgb .r , " number" , false )
58+ vim .validate (" g" , rgb .g , " number" , false )
59+ vim .validate (" b" , rgb .b , " number" , false )
8660 return tohex (bor (lshift (rgb .r , 16 ), lshift (rgb .g , 8 ), rgb .b ), 6 )
8761end
8862
@@ -98,11 +72,7 @@ function M.rgba_to_hex(rgba, bg_rgb) return rgb_to_hex(M.rgba_to_rgb(rgba, bg_rg
9872--- @param rgb_24bit number 24-bit RGB value
9973--- @return RGB
10074function M .decode_24bit_rgb (rgb_24bit )
101- if vim .fn .has (" nvim-0.11" ) == 1 then
102- vim .validate (" rgb_24bit" , rgb_24bit , " number" , true )
103- else
104- vim .validate ({ rgb_24bit = { rgb_24bit , " number" , true } })
105- end
75+ vim .validate (" rgb_24bit" , rgb_24bit , " number" , true )
10676 local r = band (rshift (rgb_24bit , 16 ), 255 )
10777 local g = band (rshift (rgb_24bit , 8 ), 255 )
10878 local b = band (rgb_24bit , 255 )
219189--- @param color_infos table of ` ColorInformation` objects to highlight.
220190-- See https://microsoft.github.io/language-server-protocol/specification#textDocument_documentColor
221191function M .buf_color (client_id , bufnr , color_infos , _ )
222- if vim .fn .has (" nvim-0.11" ) == 1 then
223- vim .validate (" bufnr" , bufnr , " number" , true )
224- vim .validate (" color_infos" , color_infos , " table" , true )
225- else
226- vim .validate ({
227- bufnr = { bufnr , " number" , true },
228- color_infos = { color_infos , " table" , true },
229- })
230- end
192+ vim .validate (" bufnr" , bufnr , " number" , true )
193+ vim .validate (" color_infos" , color_infos , " table" , true )
231194 if not color_infos or not bufnr then return end
232195 local c = config .lsp .color
233196
250213--- @param client_id number client id
251214--- @param bufnr number buffer id
252215function M .buf_clear_color (client_id , bufnr )
253- if vim .fn .has (" nvim-0.11" ) == 1 then
254- vim .validate (" client_id" , client_id , " number" , true )
255- vim .validate (" bufnr" , bufnr , " number" , true )
256- else
257- vim .validate ({
258- client_id = { client_id , " number" , true },
259- bufnr = { bufnr , " number" , true },
260- })
261- end
216+ vim .validate (" client_id" , client_id , " number" , true )
217+ vim .validate (" bufnr" , bufnr , " number" , true )
262218 if api .nvim_buf_is_valid (bufnr ) then api .nvim_buf_clear_namespace (bufnr , CLIENT_NS , 0 , - 1 ) end
263219end
264220
0 commit comments