utility/precognition: init

This commit is contained in:
Nowaaru 2024-11-03 17:25:24 -07:00
parent 8ff50562d7
commit 7b17023780
No known key found for this signature in database
3 changed files with 117 additions and 0 deletions

View file

@ -0,0 +1,46 @@
{
config,
lib,
...
}: let
cfg = config.vim.utility.motion.precognition;
inherit (lib.modules) mkIf;
inherit (lib.nvim.dag) entryAnywhere;
in {
config =
mkIf cfg.enable
{
vim.startPlugins = [
"precognition-nvim"
];
vim.pluginRC.precognition-nvim = entryAnywhere ''
require("precognition").setup({
startVisible = true,
showBlankVirtLine = true,
highlightColor = { link = "Comment" },
hints = {
Caret = { text = "^", prio = 2 },
Dollar = { text = "$", prio = 1 },
MatchingPair = { text = "%", prio = 5 },
Zero = { text = "0", prio = 1 },
w = { text = "w", prio = 10 },
b = { text = "b", prio = 9 },
e = { text = "e", prio = 8 },
W = { text = "W", prio = 7 },
B = { text = "B", prio = 6 },
E = { text = "E", prio = 5 },
},
gutterHints = {
G = { text = "G", prio = 10 },
gg = { text = "gg", prio = 9 },
PrevParagraph = { text = "{", prio = 8 },
NextParagraph = { text = "}", prio = 8 },
},
disabled_fts = {
"startify",
},
})
'';
};
}

View file

@ -0,0 +1,71 @@
{ lib, ... }:
let
inherit (lib.options) mkEnableOption mkOption literalExpression;
inherit (lib.types) attrsOf listOf str bool int submodule;
in
{
options.vim.utility.motion.precognition = rec {
enable = mkEnableOption "precognition.nvim plugin";
startVisible = mkOption {
type = bool;
description = "Whether to start 'precognition' automatically.";
default = true;
};
showBlankVirtLine = mkOption {
type = bool;
description = "Whether to show a blank virtual line when no movements are shown.";
default = true;
};
highlightColor = mkOption {
type = attrsOf str;
example = literalExpression ''
{ link = "Comment"; }
# or
{ foreground = "#0000FF", background = "#000000" };
'';
default = { link = "Comment"; };
description = "The highlight for the virtual text.";
};
hints = {
type = attrsOf (submodule {
options = {
text = mkOption {
type = str;
description = "The easier-to-read depiction of the motion.";
};
prio = {
type = str;
description = "The priority of the hint.";
example = str;
};
};
});
};
gutterHints = hints;
disabled_fts = mkOption {
type = listOf str;
default = [ "startify" ];
example = literalExpression ''[ "startify" ]'';
};
mappings = {
# enable = mkOption {
# };
#
# disable = mkOption {
# };
#
# toggle = mkOption {
# };
};
};
}