{ config, lib, ... }: with lib; with builtins; let cfg = config.vim.utility.ccc; self = import ./ccc.nix {inherit lib;}; mappingDefinitions = self.options.vim.utility.ccc.mappings; mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; in { config = mkIf (cfg.enable) { vim.startPlugins = [ "ccc" ]; vim.maps.normal = mkMerge [ (mkSetLuaBinding mappings.quit "require('ccc').mapping.quit") (mkSetLuaBinding mappings.increase10 "require('ccc').mapping.increase10") (mkSetLuaBinding mappings.decrease10 "require('ccc').mapping.decrease10") ]; vim.luaConfigRC.ccc = nvim.dag.entryAnywhere '' local ccc = require("ccc") ccc.setup { highlighter = { auto_enable = true, max_byte = 2 * 1024 * 1024, -- 2mb lsp = true, filetypes = colorPickerFts, }, pickers = { ccc.picker.hex, ccc.picker.css_rgb, ccc.picker.css_hsl, ccc.picker.ansi_escape { meaning1 = "bright", -- whether the 1 means bright or yellow }, }, alpha_show = "hide", -- needed when highlighter.lsp is set to true recognize = { output = true }, -- automatically recognize color format under cursor inputs = { ccc.input.hsl }, outputs = { ccc.output.css_hsl, ccc.output.css_rgb, ccc.output.hex, }, convert = { { ccc.picker.hex, ccc.output.css_hsl }, { ccc.picker.css_rgb, ccc.output.css_hsl }, { ccc.picker.css_hsl, ccc.output.hex }, }, } ''; }; }