diff options
author | Junio C Hamano <junkio@cox.net> | 2006-06-06 16:58:40 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-07-09 03:27:03 -0700 |
commit | 85fb65ed6e41e93760a91b33b512d3d9dc67ac66 (patch) | |
tree | e8b00ceee2a8b5880d192609ac80ebfbbeeb0a6d | |
parent | cfc01c038709e4cdbf506d29937cac2bc1b76d39 (diff) | |
download | git-85fb65ed6e41e93760a91b33b512d3d9dc67ac66.tar.gz |
"git -p cmd" to page anywhere
This allows you to say:
git -p diff v2.6.16-rc5..
and the command pipes the output of any git command to your pager.
[jc: this resurrects a month old RFC patch with improvement
suggested by Linus to call it --paginate instead of --less.]
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | cache.h | 1 | ||||
-rw-r--r-- | diff.c | 2 | ||||
-rw-r--r-- | git.c | 5 | ||||
-rw-r--r-- | pager.c | 4 |
4 files changed, 11 insertions, 1 deletions
@@ -382,6 +382,7 @@ extern int receive_keep_pack(int fd[2], const char *me, int quiet, int); /* pager.c */ extern void setup_pager(void); +extern int pager_in_use; /* base85 */ int decode_85(char *dst, char *line, int linelen); @@ -112,7 +112,7 @@ int git_diff_config(const char *var, const char *value) diff_use_color_default = 1; /* bool */ else if (!strcasecmp(value, "auto")) { diff_use_color_default = 0; - if (isatty(1)) { + if (isatty(1) || pager_in_use) { char *term = getenv("TERM"); if (term && strcmp(term, "dumb")) diff_use_color_default = 1; @@ -251,6 +251,11 @@ int main(int argc, const char **argv, char **envp) cmd = *++argv; argc--; + if (!strcmp(cmd, "-p") || !strcmp(cmd, "--paginate")) { + setup_pager(); + continue; + } + if (strncmp(cmd, "--", 2)) break; @@ -5,6 +5,8 @@ * something different on Windows, for example. */ +int pager_in_use; + static void run_pager(const char *pager) { execlp(pager, pager, NULL); @@ -24,6 +26,8 @@ void setup_pager(void) else if (!*pager || !strcmp(pager, "cat")) return; + pager_in_use = 1; /* means we are emitting to terminal */ + if (pipe(fd) < 0) return; pid = fork(); |