comparison mercurial/ui.py @ 6325:41c77bb8d7f3

pager: remove pager code from core
author Matt Mackall <mpm@selenic.com>
date Thu, 20 Mar 2008 11:12:35 -0500
parents 7240204121af
children f477afeb3a0f
comparison
equal deleted inserted replaced
6324:ee1077b41d5c 6325:41c77bb8d7f3
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
35 if parentui is None: 34 if parentui is None:
36 # this is the parent of all ui children 35 # this is the parent of all ui children
37 self.parentui = None 36 self.parentui = None
38 self.quiet = quiet 37 self.quiet = quiet
39 self.verbose = verbose 38 self.verbose = verbose
64 self.buffers = parentui.buffers 63 self.buffers = parentui.buffers
65 64
66 def __getattr__(self, key): 65 def __getattr__(self, key):
67 return getattr(self.parentui, key) 66 return getattr(self.parentui, key)
68 67
69 def __del__(self):
70 if self.pager:
71 try:
72 self.pager.close()
73 except IOException:
74 # we might get into an broken pipe if the users quit
75 # the pager before we finished io
76 pass
77
78 def isatty(self): 68 def isatty(self):
79 if ui._isatty is None: 69 if ui._isatty is None:
80 ui._isatty = sys.stdin.isatty() 70 ui._isatty = sys.stdin.isatty()
81 return ui._isatty 71 return ui._isatty
82 72
379 369
380 def popbuffer(self): 370 def popbuffer(self):
381 return "".join(self.buffers.pop()) 371 return "".join(self.buffers.pop())
382 372
383 def write(self, *args): 373 def write(self, *args):
384 """Write to a pager if available, otherwise to stdout"""
385 if self.buffers: 374 if self.buffers:
386 self.buffers[-1].extend([str(a) for a in args]) 375 self.buffers[-1].extend([str(a) for a in args])
387 else: 376 else:
388 if self.getpager() and not self.pager:
389 self.pager = os.popen(self.getpager(), "wb")
390 sys.stderr = self.pager
391 sys.stdout = self.pager
392 for a in args: 377 for a in args:
393 sys.stdout.write(str(a)) 378 sys.stdout.write(str(a))
394 379
395 def write_err(self, *args): 380 def write_err(self, *args):
396 try: 381 try:
491 '''return editor to use''' 476 '''return editor to use'''
492 return (os.environ.get("HGEDITOR") or 477 return (os.environ.get("HGEDITOR") or
493 self.config("ui", "editor") or 478 self.config("ui", "editor") or
494 os.environ.get("VISUAL") or 479 os.environ.get("VISUAL") or
495 os.environ.get("EDITOR", "vi")) 480 os.environ.get("EDITOR", "vi"))
496
497 def getpager(self):
498 '''return a pager'''
499 if sys.stdout.isatty() and self.configbool("ui", "usepager", False):
500 return (self.config("ui", "pager")
501 or os.environ.get("PAGER"))