modules/visuals: add highlight-undo

a plugin for highlighting undo/redo targets
This commit is contained in:
NotAShelf 2023-10-22 01:22:31 +03:00
parent d7cf84c514
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

@ -79,14 +79,17 @@ inputs: let
nvimWebDevicons.enable = true; nvimWebDevicons.enable = true;
scrollBar.enable = true; scrollBar.enable = true;
smoothScroll.enable = true; smoothScroll.enable = true;
cellularAutomaton.enable = isMaximal; cellularAutomaton.enable = false;
fidget-nvim.enable = true; fidget-nvim.enable = true;
highlight-undo.enable = true;
indentBlankline = { indentBlankline = {
enable = true; enable = true;
fillChar = null; fillChar = null;
eolChar = null; eolChar = null;
showCurrContext = true; showCurrContext = true;
}; };
cursorline = { cursorline = {
enable = true; enable = true;
lineTimeout = 0; lineTimeout = 0;

View file

@ -368,6 +368,11 @@
flake = false; flake = false;
}; };
highlight-undo = {
url = "github:tzachar/highlight-undo.nvim";
flake = false;
};
# Markdown # Markdown
glow-nvim = { glow-nvim = {
url = "github:ellisonleao/glow.nvim"; url = "github:ellisonleao/glow.nvim";

View file

@ -94,6 +94,7 @@ with lib; let
"copilot-cmp" "copilot-cmp"
"lsp-lines" "lsp-lines"
"vim-dirtytalk" "vim-dirtytalk"
"highlight-undo"
]; ];
# You can either use the name of the plugin or a package. # You can either use the name of the plugin or a package.
pluginType = with types; pluginType = with types;

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"; 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";
};
};
};
}; };
} }