Re: psql: \pset pager 'always'? - Mailing list pgsql-general
From | Bruce Momjian |
---|---|
Subject | Re: psql: \pset pager 'always'? |
Date | |
Msg-id | 200209120059.g8C0xdH29348@candle.pha.pa.us Whole thread Raw |
In response to | Re: psql: \pset pager 'always'? (greg@turnstep.com) |
List | pgsql-general |
This has been saved for the 7.4 release: http://candle.pha.pa.us/cgi-bin/pgpatches2 --------------------------------------------------------------------------- greg@turnstep.com wrote: [ There is text before PGP section. ] > [ PGP not available, raw data follows ] > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > NotDashEscaped: You need GnuPG to verify this message > > > > I'm really annoyed by that little 'feature' of psql that decides whether > > to use pager or not. I personally use GNU 'less' with options -S -F as my > > pager, which allows me to scroll vertically AS WELL AS horizontally on > > long input. So a "use pager always" option with no strange automagic > > behaviour would be nice. > > Not a bad idea. Here is a patch that does just that, while maintaining the > "traditional" behavior, so the change should be transparent. Use the > command "\pset pager always" to turn it on. Anything else does the > normal toggle between "on" and "off" > > > Greg Sabino Mullane greg@turnstep.com > PGP Key: 0x14964AC8 200209111525 > > > Index: command.c > =================================================================== > RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/command.c,v > retrieving revision 1.80 > diff -c -r1.80 command.c > *** command.c 2002/09/04 20:31:35 1.80 > --- command.c 2002/09/11 19:24:41 > *************** > *** 1867,1877 **** > /* toggle use of pager */ > else if (strcmp(param, "pager") == 0) > { > ! popt->topt.pager = !popt->topt.pager; > if (!quiet) > { > ! if (popt->topt.pager) > puts(gettext("Using pager is on.")); > else > puts(gettext("Using pager is off.")); > } > --- 1867,1884 ---- > /* toggle use of pager */ > else if (strcmp(param, "pager") == 0) > { > ! if (strcasecmp(value, "always") == 0) > ! popt->topt.pager = 2; > ! else if (popt->topt.pager == 1) > ! popt->topt.pager = 0; > ! else > ! popt->topt.pager = 1; > if (!quiet) > { > ! if (popt->topt.pager == 1) > puts(gettext("Using pager is on.")); > + else if (popt->topt.pager == 2) > + puts(gettext("Using pager is always.")); > else > puts(gettext("Using pager is off.")); > } > Index: help.c > =================================================================== > RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/help.c,v > retrieving revision 1.56 > diff -c -r1.56 help.c > *** help.c 2002/09/04 20:31:35 1.56 > --- help.c 2002/09/11 19:24:41 > *************** > *** 159,165 **** > #endif > > void > ! slashUsage(bool pager) > { > FILE *output, > *pagerfd = NULL; > --- 159,165 ---- > #endif > > void > ! slashUsage(unsigned small int pager) > { > FILE *output, > *pagerfd = NULL; > *************** > *** 180,186 **** > struct winsize screen_size; > > result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size); > ! if (result == -1 || 50 > screen_size.ws_row) > { > #endif > pagerprog = getenv("PAGER"); > --- 180,186 ---- > struct winsize screen_size; > > result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size); > ! if (result == -1 || 50 > screen_size.ws_row || pager == 2) > { > #endif > pagerprog = getenv("PAGER"); > Index: help.h > =================================================================== > RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/help.h,v > retrieving revision 1.9 > diff -c -r1.9 help.h > *** help.h 2002/07/15 01:56:25 1.9 > --- help.h 2002/09/11 19:24:41 > *************** > *** 10,16 **** > > void usage(void); > > ! void slashUsage(bool pager); > > void helpSQL(const char *topic); > > --- 10,16 ---- > > void usage(void); > > ! void slashUsage(unsigned small int pager); > > void helpSQL(const char *topic); > > Index: print.c > =================================================================== > RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/print.c,v > retrieving revision 1.31 > diff -c -r1.31 print.c > *** print.c 2002/09/01 23:30:46 1.31 > --- print.c 2002/09/11 19:24:41 > *************** > *** 1022,1028 **** > lines++; > > result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size); > ! if (result == -1 || lines > screen_size.ws_row) > { > #endif > pagerprog = getenv("PAGER"); > --- 1022,1028 ---- > lines++; > > result = ioctl(fileno(stdout), TIOCGWINSZ, &screen_size); > ! if (result == -1 || lines > screen_size.ws_row || opt->pager == 2) > { > #endif > pagerprog = getenv("PAGER"); > Index: print.h > =================================================================== > RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/print.h,v > retrieving revision 1.14 > diff -c -r1.14 print.h > *** print.h 2002/09/04 20:31:36 1.14 > --- print.h 2002/09/11 19:24:41 > *************** > *** 26,33 **** > enum printFormat format; /* one of the above */ > bool expanded; /* expanded/vertical output (if supported > * by output format) */ > ! bool pager; /* use pager for output (if to stdout and > ! * stdout is a tty) */ > bool tuples_only; /* don't output headers, row counts, etc. */ > unsigned short int border; /* Print a border around the table. > * 0=none, 1=dividing lines, 2=full */ > --- 26,34 ---- > enum printFormat format; /* one of the above */ > bool expanded; /* expanded/vertical output (if supported > * by output format) */ > ! unsigned short int pager; /* use pager for output (if to stdout and > ! * stdout is a tty) > ! * 0=off 1=on 2=always */ > bool tuples_only; /* don't output headers, row counts, etc. */ > unsigned short int border; /* Print a border around the table. > * 0=none, 1=dividing lines, 2=full */ > Index: startup.c > =================================================================== > RCS file: /projects/cvsroot/pgsql-server/src/bin/psql/startup.c,v > retrieving revision 1.66 > diff -c -r1.66 startup.c > *** startup.c 2002/09/06 02:33:47 1.66 > --- startup.c 2002/09/11 19:24:41 > *************** > *** 137,143 **** > pset.popt.topt.format = PRINT_ALIGNED; > pset.queryFout = stdout; > pset.popt.topt.border = 1; > ! pset.popt.topt.pager = true; > pset.popt.default_footer = true; > > SetVariable(pset.vars, "VERSION", PG_VERSION_STR); > --- 137,143 ---- > pset.popt.topt.format = PRINT_ALIGNED; > pset.queryFout = stdout; > pset.popt.topt.border = 1; > ! pset.popt.topt.pager = 1; > pset.popt.default_footer = true; > > SetVariable(pset.vars, "VERSION", PG_VERSION_STR); > > -----BEGIN PGP SIGNATURE----- > Comment: http://www.turnstep.com/pgp.html > > iD8DBQE9f5klvJuQZxSWSsgRAuFGAJwNsHiudvGq+Xq8WpQO4bSrd+QUtwCgo1lB > iolPoprltuDfsb4YSjAHHs4= > =5Kt2 > -----END PGP SIGNATURE----- > > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org > [ Decrypting message... End of raw data. ] -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073
pgsql-general by date: