mirror of
https://github.com/nix-community/home-manager
synced 2024-11-27 13:39:46 +01:00
modules/git: make options passed to less(1)
for diff-so-fancy
configurable (#3704)
The `-X` prevents that screen is cleared when showing a diff that's larger than my screen. I.e. when running `git diff` and press `q`, the last thing I want to see is the prompt with `git diff` and *not* the part of the diff I browsed, to be clear $ git diff $ <cursor> Considering that this is somewhat opinionated, I decided to build an option which allows you to pass arbitrary commands to the less invocation.
This commit is contained in:
parent
bf76afbb06
commit
635bbcdd6f
1 changed files with 11 additions and 1 deletions
|
@ -340,6 +340,14 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pagerOpts = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [ "--tabs=4" "-RFX" ];
|
||||||
|
description = ''
|
||||||
|
Arguments to be passed to <command>less</command>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
markEmptyLines = mkOption {
|
markEmptyLines = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
|
@ -547,7 +555,9 @@ in {
|
||||||
programs.git.iniContent =
|
programs.git.iniContent =
|
||||||
let dsfCommand = "${pkgs.diff-so-fancy}/bin/diff-so-fancy";
|
let dsfCommand = "${pkgs.diff-so-fancy}/bin/diff-so-fancy";
|
||||||
in {
|
in {
|
||||||
core.pager = "${dsfCommand} | ${pkgs.less}/bin/less --tabs=4 -RFX";
|
core.pager = "${dsfCommand} | ${pkgs.less}/bin/less ${
|
||||||
|
escapeShellArgs cfg.diff-so-fancy.pagerOpts
|
||||||
|
}";
|
||||||
interactive.diffFilter = "${dsfCommand} --patch";
|
interactive.diffFilter = "${dsfCommand} --patch";
|
||||||
diff-so-fancy = {
|
diff-so-fancy = {
|
||||||
markEmptyLines = cfg.diff-so-fancy.markEmptyLines;
|
markEmptyLines = cfg.diff-so-fancy.markEmptyLines;
|
||||||
|
|
Loading…
Reference in a new issue