]> git.phdru.name Git - dotfiles.git/blobdiff - lib/python/init.py
Fix(python/init.py): Do not use `ColoredFile` at unrecognized terminals
[dotfiles.git] / lib / python / init.py
index 71526b9198f4a4e8d1ce5d44b9860b0abaa899f2..f828226c9576264e0fcd931fe7f5056a809982e0 100644 (file)
@@ -36,16 +36,22 @@ def init():
                 or os.path.expanduser('~/.inputrc')
             readline.read_init_file(initfile)
 
-            histfile = os.path.expanduser('~/.python_history')
-            try:
-                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")
 
+            histfiles = ['~/.python_history']
+            # if 'VIRTUAL_ENV' in os.environ:
+            #     histfiles.append('$VIRTUAL_ENV/.python_history')
+            for histfile in histfiles:
+                try:
+                    histfile = os.path.expandvars(histfile)
+                    histfile = os.path.expanduser(histfile)
+                    readline.read_history_file(histfile)
+                except IOError:
+                    pass  # No such file
+
             def savehist():
                 histsize = os.environ.get('HISTSIZE')
                 if histsize:
@@ -55,7 +61,13 @@ def init():
                         pass
                     else:
                         readline.set_history_length(histsize)
-                readline.write_history_file(histfile)
+                histfile = histfiles[-1]
+                histfile = os.path.expandvars(histfile)
+                histfile = os.path.expanduser(histfile)
+                try:
+                    readline.write_history_file(histfile)
+                except IOError:
+                    pass
 
             import atexit
             atexit.register(savehist)
@@ -163,10 +175,11 @@ def init():
         def write(self, value):
             self.stdout.write(value)
 
-        def pprint(self, value):
-            pprint(value,
-                   stream=ColoredFile(self.stdout,
-                                      '\033[1;3%sm' % stdout_color))
+        if _term_found:
+            def pprint(self, value):
+                pprint(value,
+                       stream=ColoredFile(self.stdout,
+                                          '\033[1;3%sm' % stdout_color))
 
         def close(self):
             self.stdout.close()
@@ -195,7 +208,8 @@ def init():
         try:
             pager.pprint(value)
         except:  # noqa
-            pager.stdout = ColoredFile(pager.stdout, '\033[31m')  # red
+            if _term_found:
+                pager.stdout = ColoredFile(pager.stdout, '\033[31m')  # red
             print_exc(file=pager)
         pager.close()
 
@@ -204,7 +218,8 @@ def init():
     def excepthook(etype, evalue, etraceback):
         lines = format_exception(etype, evalue, etraceback)
         pager = Pager()
-        pager.stdout = ColoredFile(pager.stdout, '\033[31m')  # red
+        if _term_found:
+            pager.stdout = ColoredFile(pager.stdout, '\033[31m')  # red
         for line in lines:
             pager.write(line)
         pager.close()