]> git.phdru.name Git - dotfiles.git/blobdiff - lib/python/init.py
Fix(init.py): Do not intercept EOF in `myinput`
[dotfiles.git] / lib / python / init.py
index 1a91f049395ecceb52dee640983f53d3b18cedd2..eb832c1b77f640d8899815d3633754bc1ebcf1d2 100644 (file)
@@ -64,7 +64,10 @@ def init():
                 histfile = histfiles[-1]
                 histfile = os.path.expandvars(histfile)
                 histfile = os.path.expanduser(histfile)
-                readline.write_history_file(histfile)
+                try:
+                    readline.write_history_file(histfile)
+                except IOError:
+                    pass
 
             import atexit
             atexit.register(savehist)
@@ -77,8 +80,10 @@ def init():
     # terminal
 
     term = os.environ.get('TERM', '')
-    if 'linux' in term:
-        background = 'dark'
+    for _term in ['cygwin', 'linux', 'putty']:
+        if _term in term:
+            background = 'dark'
+            break
     else:
         background = os.environ.get('BACKGROUND', 'light').lower()
 
@@ -86,7 +91,8 @@ def init():
     # https://mail.python.org/pipermail/python-list/2001-March/112696.html
 
     _term_found = False
-    for _term in ['linux', 'rxvt', 'screen', 'term', 'vt100']:
+    for _term in ['cygwin', 'linux', 'putty', 'rxvt',
+                  'screen', 'term', 'vt100']:
         if _term in term:
             _term_found = True
             break
@@ -126,10 +132,7 @@ def init():
         def myinput(prompt=None):
             save_stdout = sys.stdout
             sys.stdout = sys.__stdout__
-            try:
-                result = builtin_input(prompt)
-            except EOFError:
-                result = None
+            result = builtin_input(prompt)
             sys.stdout = save_stdout
             return result
 
@@ -172,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()
@@ -204,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()
 
@@ -213,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()