Mercurial > public > mercurial-scm > hg
comparison mercurial/ui.py @ 6302:8e3dc3de7e73
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. ui.pager sets the pager application. The pager is
only used if ui.usepager is true. By default ui.usepager is disabled.
author | David Soria Parra <dsp@php.net> |
---|---|
date | Tue, 18 Mar 2008 22:12:34 +0100 |
parents | ffaf2419de44 |
children | 577a7da1d44b |
comparison
equal
deleted
inserted
replaced
6301:68cfd7d208a5 | 6302:8e3dc3de7e73 |
---|---|
29 def __init__(self, verbose=False, debug=False, quiet=False, | 29 def __init__(self, verbose=False, debug=False, quiet=False, |
30 interactive=True, traceback=False, report_untrusted=True, | 30 interactive=True, traceback=False, report_untrusted=True, |
31 parentui=None): | 31 parentui=None): |
32 self.overlay = None | 32 self.overlay = None |
33 self.buffers = [] | 33 self.buffers = [] |
34 self.pager = None | |
34 if parentui is None: | 35 if parentui is None: |
35 # this is the parent of all ui children | 36 # this is the parent of all ui children |
36 self.parentui = None | 37 self.parentui = None |
37 self.quiet = quiet | 38 self.quiet = quiet |
38 self.verbose = verbose | 39 self.verbose = verbose |
62 self.overlay = dupconfig(self.parentui.overlay) | 63 self.overlay = dupconfig(self.parentui.overlay) |
63 | 64 |
64 def __getattr__(self, key): | 65 def __getattr__(self, key): |
65 return getattr(self.parentui, key) | 66 return getattr(self.parentui, key) |
66 | 67 |
68 def __del__(self): | |
69 if self.pager: | |
70 try: | |
71 self.pager.close() | |
72 except IOException: | |
73 # we might get into an broken pipe if the users quit | |
74 # the pager before we finished io | |
75 pass | |
76 | |
67 def isatty(self): | 77 def isatty(self): |
68 if ui._isatty is None: | 78 if ui._isatty is None: |
69 ui._isatty = sys.stdin.isatty() | 79 ui._isatty = sys.stdin.isatty() |
70 return ui._isatty | 80 return ui._isatty |
71 | 81 |
368 | 378 |
369 def popbuffer(self): | 379 def popbuffer(self): |
370 return "".join(self.buffers.pop()) | 380 return "".join(self.buffers.pop()) |
371 | 381 |
372 def write(self, *args): | 382 def write(self, *args): |
383 """Write to a pager if available, otherwise to stdout""" | |
373 if self.buffers: | 384 if self.buffers: |
374 self.buffers[-1].extend([str(a) for a in args]) | 385 self.buffers[-1].extend([str(a) for a in args]) |
375 else: | 386 else: |
387 if self.getpager() and not self.pager: | |
388 self.pager = os.popen(self.getpager(), "w") | |
389 sys.stderr = self.pager | |
390 sys.stdout = self.pager | |
376 for a in args: | 391 for a in args: |
377 sys.stdout.write(str(a)) | 392 sys.stdout.write(str(a)) |
378 | 393 |
379 def write_err(self, *args): | 394 def write_err(self, *args): |
380 try: | 395 try: |
476 return (os.environ.get("HGEDITOR") or | 491 return (os.environ.get("HGEDITOR") or |
477 self.config("ui", "editor") or | 492 self.config("ui", "editor") or |
478 os.environ.get("VISUAL") or | 493 os.environ.get("VISUAL") or |
479 os.environ.get("EDITOR", "vi")) | 494 os.environ.get("EDITOR", "vi")) |
480 | 495 |
496 def getpager(self): | |
497 '''return a pager''' | |
498 if self.configbool("ui", "usepager", False): | |
499 return (self.config("ui", "pager") | |
500 or os.environ.get("PAGER")) |