Mercurial > hg
changeset 6323:6e1308a09ffd
Use the pager given by the environment to display long output
Unix systems usually have a PAGER environment variable set.
If it is set, mercurial will use the pager application to display
output.
Two configuration variables are available to influence the
behaviour of the pager:
pager.application
sets the application to be used
pager.quiet
silences Broken Pipe errors that might occur when the user
quits the pager before mercurial finished to write the output
author | David Soria Parra <dsp@php.net> |
---|---|
date | Thu, 20 Mar 2008 00:57:14 +0100 |
parents | 108636b9b981 |
children | ee1077b41d5c |
files | hgext/pager.py |
diffstat | 1 files changed, 54 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hgext/pager.py Thu Mar 20 00:57:14 2008 +0100 @@ -0,0 +1,54 @@ +# pager.py - display output using a pager +# +# Copyright 2008 David Soria Parra <dsp@php.net> +# +# This software may be used and distributed according to the terms +# of the GNU General Public License, incorporated herein by reference. +# +# To load the extension add it to your .hgrc file +# +# [extension] +# hgext.pager = +# +# To set the pager that should be used, set the application variable +# +# [pager] +# application = less +# +# You can also set environment variables there +# +# [pager] +# application = LESS='FSRX' less +# +# If no application is set, the pager extensions use the environment +# variable $PAGER. If neither pager.application, nor +# $PAGER is set, no pager is used. +# +# If you notice "BROKEN PIPE" error messages, you can disable them +# by setting +# +# [pager] +# quiet = True +# + +import sys, os, signal + +def getpager(ui): + '''return a pager + + We separate this method from the pager class as we don't want to + instantiate a pager if it is not used at all + ''' + if sys.stdout.isatty(): + return (ui.config("pager", "application") + or os.environ.get("PAGER")) + +def uisetup(ui): + # disable broken pipe error messages + if ui.configbool('pager', 'quiet', False): + signal.signal(signal.SIGPIPE, signal.SIG_DFL) + + if getpager(ui): + pager = os.popen(getpager(ui), 'wb') + sys.stderr = pager + sys.stdout = pager