+ def __del__(self):
+ self.less.stdin.close()
+ self.less.wait()
+
+
+def LessHighlighter():
+ if sys.stdout.isatty():
+ try:
+ less = subprocess.Popen(
+ args = ['less', '-FRXn'],
+ stdin = subprocess.PIPE
+ )
+ except OSError:
+ return ColorHighlighter()
+ else:
+ return _LessHighlighter(less)
+ return PlainHighlighter(sys.stdout)