Mercurial > hg > mercurial-crew
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 |