{lib, ...}: let inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.types) attrsOf listOf str bool int submodule; inherit (lib.nvim.types) mkPluginSetupOption; mkHintType = description: mkOption { inherit description; default = {}; type = attrsOf (submodule { options = { text = mkOption { type = str; description = "The easier-to-read depiction of the motion"; }; prio = mkOption { type = int; default = 1; description = "The priority of the hint"; example = 10; }; }; }); }; in { options.vim.utility.motion.precognition = { enable = mkEnableOption "assisted motion discovery[precognition.nvim]"; setupOpts = mkPluginSetupOption "precognition.nvim" { startVisible = mkOption { type = bool; default = true; description = "Whether to start 'precognition' automatically"; }; showBlankVirtLine = mkOption { type = bool; default = true; description = "Whether to show a blank virtual line when no movements are shown"; }; highlightColor = mkOption { type = attrsOf str; default = {link = "Comment";}; example = literalExpression '' { link = "Comment"; } # or { foreground = "#0000FF"; background = "#000000"; }; ''; description = "The highlight for the virtual text"; }; disabled_fts = mkOption { type = listOf str; default = ["startify"]; example = literalExpression ''["startify"]''; description = "Filetypes that automatically disable 'precognition'"; }; hints = mkHintType "What motions display, and at what priority"; gutterHints = mkHintType '' What motions display and at what priority. Only appears in gutters ''; }; }; }