[backport 22.11] modules/git: make options passed to less(1)
for diff-so-fancy
configurable (#3751)
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.
(cherry picked from commit cccd7622bd
)
Co-authored-by: Maximilian Bosch <maximilian@mbosch.me>
This commit is contained in:
parent
86bb69b0b1
commit
07b0b43a92
|
@ -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 {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
|
@ -550,7 +558,9 @@ in {
|
|||
programs.git.iniContent =
|
||||
let dsfCommand = "${pkgs.diff-so-fancy}/bin/diff-so-fancy";
|
||||
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";
|
||||
diff-so-fancy = {
|
||||
markEmptyLines = cfg.diff-so-fancy.markEmptyLines;
|
||||
|
|
Loading…
Reference in a new issue