modules/visuals: add highlight-undo

a plugin for highlighting undo/redo targets
This commit is contained in:
raf 2023-10-22 01:22:31 +03:00
commit c353329620
No known key found for this signature in database
GPG key ID: 02D1DD3FA08B6B29
5 changed files with 70 additions and 1 deletions

View file

@ -118,5 +118,30 @@ in {
}
'';
})
(mkIf cfg.highlight-undo.enable {
vim.startPlugins = ["highlight-undo"];
vim.luaConfigRC.fidget-nvim = nvim.dag.entryAnywhere ''
require('highlight-undo').setup({
duration = ${toString cfg.highlight-undo.duration},
highlight_for_count = ${boolToString cfg.highlight-undo.highlightForCount},
undo = {
hlgroup = ${cfg.highlight-undo.undo.hlGroup},
mode = 'n',
lhs = 'u',
map = 'undo',
opts = {}
},
redo = {
hlgroup = ${cfg.highlight-undo.redo.hlGroup},
mode = 'n',
lhs = '<C-r>',
map = 'redo',
opts = {}
},
})
'';
})
]);
}

View file

@ -103,5 +103,40 @@ in {
defaultText = literalExpression "config.vim.treesitter.enable";
};
};
highlight-undo = {
enable = mkEnableOption "highlight undo [highlight-undo]";
highlightForCount = mkOption {
type = types.bool;
default = true;
description = ''
Enable support for highlighting when a `<count>` is provided before the key
If set to false it will only highlight when the mapping is not prefixed with a `<count>`
'';
};
duration = mkOption {
type = types.int;
description = "Duration of highlight";
default = 200;
};
undo = {
hlGroup = mkOption {
type = types.str;
description = "Highlight group for undo";
default = "HighlightUndo";
};
};
redo = {
hlGroup = mkOption {
type = types.str;
description = "Highlight group for redo";
default = "HighlightUndo";
};
};
};
};
}