summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2014-06-06 11:02:59 -0700
committerJunio C Hamano <gitster@pobox.com>2014-06-06 11:02:59 -0700
commit561d952ed412889da454d852f027fd985d532c44 (patch)
tree20b2ed62f60c8c1c56105ff37031faea03e92225
parent79dcccc503ac228630ecf15dcf8e1d9455daef2d (diff)
parentb3275838d969b7ecb91aae584226fccbeb046aca (diff)
downloadgit-561d952ed412889da454d852f027fd985d532c44.tar.gz
Merge branch 'mm/pager-less-sans-S'
Since the very beginning of Git, we gave the LESS environment a default value "FRSX" when we spawn "less" as the pager. "S" (chop long lines instead of wrapping) has been removed from this default set of options, because it is more or less a personal taste thing, as opposed to others that have good justifications (i.e. "R" is very much justified because many kinds of output we produce are colored and "FX" is justified because output we produce is often shorter than a page). Existing users who prefer not to see line-wrapped output may want to set $ git config core.pager "less -S" to restore the traditional behaviour. It is expected that people find output from the most subcommands easier to read with the new default, except for "blame" which tends to produce really long lines. To override the new default only for "git blame", you can do this: $ git config pager.blame "less -S" * mm/pager-less-sans-S: pager: remove 'S' from $LESS by default
-rw-r--r--Documentation/config.txt15
-rw-r--r--git-sh-setup.sh2
-rw-r--r--pager.c2
-rw-r--r--perl/Git/SVN/Log.pm2
4 files changed, 13 insertions, 8 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 1932e9b9a2..9c4ceb3c27 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -558,14 +558,19 @@ core.pager::
configuration, then `$PAGER`, and then the default chosen at
compile time (usually 'less').
+
-When the `LESS` environment variable is unset, Git sets it to `FRSX`
+When the `LESS` environment variable is unset, Git sets it to `FRX`
(if `LESS` environment variable is set, Git does not change it at
all). If you want to selectively override Git's default setting
-for `LESS`, you can set `core.pager` to e.g. `less -+S`. This will
+for `LESS`, you can set `core.pager` to e.g. `less -S`. This will
be passed to the shell by Git, which will translate the final
-command to `LESS=FRSX less -+S`. The environment tells the command
-to set the `S` option to chop long lines but the command line
-resets it to the default to fold long lines.
+command to `LESS=FRX less -S`. The environment does not set the
+`S` option but the command line does, instructing less to truncate
+long lines. Similarly, setting `core.pager` to `less -+F` will
+deactivate the `F` option specified by the environment from the
+command-line, deactivating the "quit if one screen" behavior of
+`less`. One can specifically activate some flags for particular
+commands: for example, setting `pager.blame` to `less -S` enables
+line truncation only for `git blame`.
+
Likewise, when the `LV` environment variable is unset, Git sets it
to `-c`. You can override this setting by exporting `LV` with
diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index 5f28b32dc7..9447980330 100644
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
@@ -160,7 +160,7 @@ git_pager() {
else
GIT_PAGER=cat
fi
- : ${LESS=-FRSX}
+ : ${LESS=-FRX}
: ${LV=-c}
export LESS LV
diff --git a/pager.c b/pager.c
index 0cc75a8eee..f75e8aece0 100644
--- a/pager.c
+++ b/pager.c
@@ -85,7 +85,7 @@ void setup_pager(void)
int i = 0;
if (!getenv("LESS"))
- env[i++] = "LESS=FRSX";
+ env[i++] = "LESS=FRX";
if (!getenv("LV"))
env[i++] = "LV=-c";
env[i] = NULL;
diff --git a/perl/Git/SVN/Log.pm b/perl/Git/SVN/Log.pm
index 34f2869ab5..664105357c 100644
--- a/perl/Git/SVN/Log.pm
+++ b/perl/Git/SVN/Log.pm
@@ -116,7 +116,7 @@ sub run_pager {
return;
}
open STDIN, '<&', $rfd or fatal "Can't redirect stdin: $!";
- $ENV{LESS} ||= 'FRSX';
+ $ENV{LESS} ||= 'FRX';
$ENV{LV} ||= '-c';
exec $pager or fatal "Can't run pager: $! ($pager)";
}