X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=lib%2Fpython%2Finit.py;h=15bcb32596c22a22b8768f215dc208a7117db1bd;hb=86f5aae3b239280df0db5304b6e0092b1ad2124b;hp=363a10a1e6d0aaf8ceb66e64dda3296d44f0dc3b;hpb=580013920401a783a31124a179d328fc68952d31;p=dotfiles.git diff --git a/lib/python/init.py b/lib/python/init.py index 363a10a..15bcb32 100644 --- a/lib/python/init.py +++ b/lib/python/init.py @@ -27,6 +27,7 @@ def init(): # https://mail.python.org/pipermail/python-list/2001-March/062888.html try: + import rlcompleter # noqa: need for completion import readline initfile = os.environ.get('INPUTRC') \ or os.path.expanduser('~/.inputrc') @@ -114,17 +115,61 @@ def init(): try: locale.setlocale(locale.LC_ALL, '') - from pprint import pprint + except (ImportError, locale.Error): + pass # no locale support or unsupported locale - def displayhook(value): - if value is not None: - __builtin__._ = value - pprint(value) + # set displayhook - sys.displayhook = displayhook + from pprint import pprint - except (ImportError, locale.Error): - pass # no locale support or unsupported locale + class BasePPrintPager: + def pipe(self, value): + pprint(value, stream=self.stdin) + + def close(self): + self.stdin.close() + + try: + from subprocess import Popen, PIPE + except ImportError: + class PPrintPager(BasePPrintPager): + def __init__(self): + self.pipe = Popen(pager, shell=True, stdin=PIPE) + self.stdin = self.pipe.stdin + + def close(self): + BasePPrintPager.close(self) + self.pipe.wait() + else: + class PPrintPager(BasePPrintPager): + def __init__(self): + self.stdin = os.popen(pager, 'w') + pager = os.environ.get("PAGER") or 'more' + + def displayhook(value): + if value is not None: + __builtin__._ = value + pprint_pager = PPrintPager() + pprint_pager.pipe(value) + pprint_pager.close() + + sys.displayhook = displayhook + + from traceback import print_exception + + def excepthook(etype, evalue, etraceback): + print_exception(etype, evalue, etraceback) + + sys.excepthook = excepthook + + # From Thomas Heller: + # https://mail.python.org/pipermail/python-list/2001-April/099020.html + + # import pdb + # + # def info(*args): + # pdb.pm() + # sys.excepthook = info # utilities @@ -163,15 +208,6 @@ def init(): __builtin__.ls = DirLister() __builtin__.cd = DirChanger() - # From Thomas Heller: - # https://mail.python.org/pipermail/python-list/2001-April/099020.html - - # import pdb - # - # def info(*args): - # pdb.pm() - # sys.excepthook = info - # print working directory class Pwd: @@ -231,7 +267,6 @@ def init(): return "Usage: pager('filename')" def __call__(self, filename): - pager = os.environ.get("PAGER") or 'more' os.system("%s '%s'" % (pager, filename.replace("'", '"\'"'))) __builtin__.pager = _Pager()