mirror of
https://github.com/nix-community/home-manager.git
synced 2024-12-14 11:57:55 +00:00
git: add diff-highlight diff pager option
This adds a new diff-highlight option to make use of the simple included git diff highlighter that comes with canonical git. For more info, see https://github.com/git/git/blob/master/contrib/diff-highlight/README
This commit is contained in:
parent
503af483e1
commit
43845d04f8
1 changed files with 37 additions and 3 deletions
|
@ -214,6 +214,24 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
diff-highlight = {
|
||||
enable = mkEnableOption "" // {
|
||||
description = ''
|
||||
Enable the contrib {command}`diff-highlight` syntax highlighter.
|
||||
See <https://github.com/git/git/blob/master/contrib/diff-highlight/README>,
|
||||
'';
|
||||
};
|
||||
|
||||
pagerOpts = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
example = [ "--tabs=4" "-RFX" ];
|
||||
description = ''
|
||||
Arguments to be passed to {command}`less`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
difftastic = {
|
||||
enable = mkEnableOption "" // {
|
||||
description = ''
|
||||
|
@ -360,11 +378,15 @@ in {
|
|||
home.packages = [ cfg.package ];
|
||||
assertions = [{
|
||||
assertion = let
|
||||
enabled =
|
||||
[ cfg.delta.enable cfg.diff-so-fancy.enable cfg.difftastic.enable ];
|
||||
enabled = [
|
||||
cfg.delta.enable
|
||||
cfg.diff-so-fancy.enable
|
||||
cfg.difftastic.enable
|
||||
cfg.diff-highlight.enable
|
||||
];
|
||||
in count id enabled <= 1;
|
||||
message =
|
||||
"Only one of 'programs.git.delta.enable' or 'programs.git.difftastic.enable' or 'programs.git.diff-so-fancy.enable' can be set to true at the same time.";
|
||||
"Only one of 'programs.git.delta.enable' or 'programs.git.difftastic.enable' or 'programs.git.diff-so-fancy.enable' or 'programs.git.diff-highlight' can be set to true at the same time.";
|
||||
}];
|
||||
|
||||
programs.git.iniContent.user = {
|
||||
|
@ -479,6 +501,18 @@ in {
|
|||
};
|
||||
})
|
||||
|
||||
(mkIf cfg.diff-highlight.enable {
|
||||
programs.git.iniContent = let
|
||||
dhCommand =
|
||||
"${cfg.package}/share/git/contrib/diff-highlight/diff-highlight";
|
||||
in {
|
||||
core.pager = "${dhCommand} | ${getExe pkgs.less} ${
|
||||
escapeShellArgs cfg.diff-highlight.pagerOpts
|
||||
}";
|
||||
interactive.diffFilter = dhCommand;
|
||||
};
|
||||
})
|
||||
|
||||
(mkIf cfg.difftastic.enable {
|
||||
home.packages = [ cfg.difftastic.package ];
|
||||
|
||||
|
|
Loading…
Reference in a new issue