comparison hgext/pager.py @ 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
children ee1077b41d5c
comparison
equal deleted inserted replaced
6322:108636b9b981 6323:6e1308a09ffd
1 # pager.py - display output using a pager
2 #
3 # Copyright 2008 David Soria Parra <dsp@php.net>
4 #
5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference.
7 #
8 # To load the extension add it to your .hgrc file
9 #
10 # [extension]
11 # hgext.pager =
12 #
13 # To set the pager that should be used, set the application variable
14 #
15 # [pager]
16 # application = less
17 #
18 # You can also set environment variables there
19 #
20 # [pager]
21 # application = LESS='FSRX' less
22 #
23 # If no application is set, the pager extensions use the environment
24 # variable $PAGER. If neither pager.application, nor
25 # $PAGER is set, no pager is used.
26 #
27 # If you notice "BROKEN PIPE" error messages, you can disable them
28 # by setting
29 #
30 # [pager]
31 # quiet = True
32 #
33
34 import sys, os, signal
35
36 def getpager(ui):
37 '''return a pager
38
39 We separate this method from the pager class as we don't want to
40 instantiate a pager if it is not used at all
41 '''
42 if sys.stdout.isatty():
43 return (ui.config("pager", "application")
44 or os.environ.get("PAGER"))
45
46 def uisetup(ui):
47 # disable broken pipe error messages
48 if ui.configbool('pager', 'quiet', False):
49 signal.signal(signal.SIGPIPE, signal.SIG_DFL)
50
51 if getpager(ui):
52 pager = os.popen(getpager(ui), 'wb')
53 sys.stderr = pager
54 sys.stdout = pager