X-Git-Url: https://git.phdru.name/?p=dotfiles.git;a=blobdiff_plain;f=lib%2Fpython%2Finit.py;h=71526b9198f4a4e8d1ce5d44b9860b0abaa899f2;hp=6a6ff9a8208bda3d0b25858c43d75c2d7c273e33;hb=02382ef710f05b6939bdc54b9b1ab7ef248dc104;hpb=39f8e222d98465fede4fd3ff208e17329902fe75 diff --git a/lib/python/init.py b/lib/python/init.py index 6a6ff9a..71526b9 100644 --- a/lib/python/init.py +++ b/lib/python/init.py @@ -41,6 +41,10 @@ def init(): readline.read_history_file(histfile) except IOError: pass # No such file + # if 'libedit' in readline.__doc__: + # readline.parse_and_bind("bind ^I rl_complete") + # else: + # readline.parse_and_bind("tab: complete") def savehist(): histsize = os.environ.get('HISTSIZE') @@ -72,10 +76,13 @@ def init(): # From Randall Hopper: # https://mail.python.org/pipermail/python-list/2001-March/112696.html + _term_found = False for _term in ['linux', 'rxvt', 'screen', 'term', 'vt100']: - if _term not in term: - continue + if _term in term: + _term_found = True + break + if _term_found: if background == 'dark': ps1_color = '3' # yellow stdout_color = '7' # bold white @@ -107,7 +114,24 @@ def init(): sys.stdout = ColoredFile(sys.stdout, '\033[1;3%sm' % stdout_color) sys.stderr = ColoredFile(sys.stderr, '\033[31m') # red - break + def myinput(prompt=None): + save_stdout = sys.stdout + sys.stdout = sys.__stdout__ + try: + result = builtin_input(prompt) + except EOFError: + result = None + sys.stdout = save_stdout + return result + + try: + builtins.raw_input + except AttributeError: # PY3 + builtin_input = builtins.input + builtins.input = myinput + else: + builtin_input = builtins.raw_input + builtins.raw_input = myinput try: import locale @@ -122,6 +146,8 @@ def init(): # set displayhook and excepthook from pprint import pprint + from traceback import format_exception, print_exc + pager = os.environ.get("PAGER") or 'more' # if your pager is 'less', options '-F' and '-R' must be passed to it, @@ -150,28 +176,31 @@ def init(): except ImportError: class Pager(BasePager): def __init__(self): - self.pipe = Popen(pager, shell=True, stdin=PIPE) + self.stdout = os.popen(pager, 'w') + else: + class Pager(BasePager): + def __init__(self): + self.pipe = Popen(pager, shell=True, stdin=PIPE, + universal_newlines=True) self.stdout = self.pipe.stdin def close(self): BasePager.close(self) self.pipe.wait() - else: - class Pager(BasePager): - def __init__(self): - self.stdout = os.popen(pager, 'w') def displayhook(value): if value is not None: builtins._ = value pager = Pager() - pager.pprint(value) + try: + pager.pprint(value) + except: # noqa + pager.stdout = ColoredFile(pager.stdout, '\033[31m') # red + print_exc(file=pager) pager.close() sys.displayhook = displayhook - from traceback import format_exception - def excepthook(etype, evalue, etraceback): lines = format_exception(etype, evalue, etraceback) pager = Pager() @@ -182,13 +211,13 @@ def init(): sys.excepthook = excepthook - #try: - # import cgitb - #except ImportError: - # pass - #else: - # # cgitb.enable() overrides sys.excepthook - # cgitb.enable(format='text') + # try: + # import cgitb + # except ImportError: + # pass + # else: + # # cgitb.enable() overrides sys.excepthook + # cgitb.enable(format='text') # From Thomas Heller: # https://mail.python.org/pipermail/python-list/2001-April/099020.html @@ -258,10 +287,6 @@ def init(): builtins.x = _Exit() - # In Python 2.5+ exit and quit are objects - if isinstance(builtins.exit, str): - builtins.exit = builtins.quit = x # noqa: x is defined as _Exit - # print conten of a file class _Cat: