]> git.phdru.name Git - dotfiles.git/blobdiff - lib/python/init.py
init.py: pipe output to pager
[dotfiles.git] / lib / python / init.py
index 363a10a1e6d0aaf8ceb66e64dda3296d44f0dc3b..2450f75a6aeb98a35cee223ac0fbc41d61119933 100644 (file)
@@ -114,17 +114,34 @@ 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
+    try:
+        from subprocess import Popen, PIPE
+    except ImportError:
+        use_subprocess = False
+    else:
+        use_subprocess = True
+    pager = os.environ.get("PAGER") or 'more'
+
+    def displayhook(value):
+        if value is not None:
+            __builtin__._ = value
+            if use_subprocess:
+                _pipe = Popen(pager, shell=True, stdin=PIPE)
+                pipe = _pipe.stdin
+            else:
+                pipe = os.popen(pager, 'w')
+            pprint(value, stream=pipe)
+            pipe.close()
+            if use_subprocess:
+                _pipe.wait()
 
-        except (ImportError, locale.Error):
-            pass  # no locale support or unsupported locale
+    sys.displayhook = displayhook
 
     # utilities
 
@@ -231,7 +248,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()