From 38435e8a053923c9e0b3e7c9a9d43dd6725c06b8 Mon Sep 17 00:00:00 2001 From: Dan Strokirk Date: Mon, 18 Jan 2016 17:13:56 +0100 Subject: [PATCH] python: Add missing I/O methods to RedirectStream `RedirectStream` is used to redirect `stdout` and `stderr`, but are missing certain I/O methods available on other file-like objects. This causes external plugins (like `colorama`) to crash. Inheriting from `io.IOBase` adds an abstract implementation of these methods, which will at least keep the python code running. Fixes #4045 --- runtime/autoload/provider/script_host.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/runtime/autoload/provider/script_host.py b/runtime/autoload/provider/script_host.py index 96d70e0330..416b4070bb 100644 --- a/runtime/autoload/provider/script_host.py +++ b/runtime/autoload/provider/script_host.py @@ -1,5 +1,6 @@ """Legacy python/python3-vim emulation.""" import imp +import io import logging import os import sys @@ -151,7 +152,7 @@ class ScriptHost(object): current.range = current.buffer.range(start, stop) -class RedirectStream(object): +class RedirectStream(io.IOBase): def __init__(self, redirect_handler): self.redirect_handler = redirect_handler @@ -161,9 +162,6 @@ class RedirectStream(object): def writelines(self, seq): self.redirect_handler('\n'.join(seq)) - def flush(self): - pass - class LegacyEvalHook(neovim.SessionHook):