| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- local interpolate = function(source, target, percent)
- local result = "#"
- for _, i in pairs({ 2, 4, 6 }) do
- local sval = tonumber(source:sub(i, i + 1), 16)
- local tval = tonumber(target:sub(i, i + 1), 16)
- local difference = tval - sval
- local delta = math.floor(difference * (percent / 100))
- local value = string.format("%x",
- math.max(math.min(sval + delta, 255), 0))
- if value:len() == 1 then value = "0" .. value end
- result = result .. value
- end
- return result
- end
- return {
- load = function()
- local loaded = {}
- local output = vim.fn.system([[
- echo BLACK=$JONATHANDARKER_COLOR_00;
- echo RED=$JONATHANDARKER_COLOR_01;
- echo GREEN=$JONATHANDARKER_COLOR_02;
- echo ORANGE=$JONATHANDARKER_COLOR_03;
- echo CYAN=$JONATHANDARKER_COLOR_04;
- echo MAGENTA=$JONATHANDARKER_COLOR_05;
- echo LILAC=$JONATHANDARKER_COLOR_06;
- echo SILVER=$JONATHANDARKER_COLOR_07;
- echo GREY=$JONATHANDARKER_COLOR_08;
- echo BURGUNDY=$JONATHANDARKER_COLOR_09;
- echo CHARTREUSE=$JONATHANDARKER_COLOR_10;
- echo YELLOW=$JONATHANDARKER_COLOR_11;
- echo BLUE=$JONATHANDARKER_COLOR_12;
- echo PLUM=$JONATHANDARKER_COLOR_13;
- echo PERIWINKLE=$JONATHANDARKER_COLOR_14;
- echo WHITE=$JONATHANDARKER_COLOR_15;
- echo BACKGROUND=$JONATHANDARKER_COLOR_BG;
- echo BACKGROUNDALT=$JONATHANDARKER_COLOR_BA;
- echo FOREGROUND=$JONATHANDARKER_COLOR_FG;
- echo FOREGROUNDALT=$JONATHANDARKER_COLOR_FA;
- ]])
- for definition in string.gmatch(output, "[^%s]+=[^%s]+") do
- local name = definition:match("[^%s]+="):sub(1, -2)
- local value = definition:match("=[^%s]+"):sub(2)
- loaded[name] = value
- end
- loaded.SPECIAL_SUBTLE = interpolate(loaded.BACKGROUND,
- loaded.FOREGROUND, 12)
- loaded.SPECIAL_CURSOR = interpolate(loaded.FOREGROUND,
- loaded.BACKGROUND, 10)
- loaded.hset = function(group, config)
- vim.api.nvim_set_hl(0, group, config)
- end
- loaded.link = function(group, target)
- vim.api.nvim_set_hl(0, group, { link = target })
- end
- return loaded
- end
- }
|