summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Slenders <jonathan@slenders.be>2016-01-02 23:56:07 +0100
committerJonathan Slenders <jonathan@slenders.be>2016-01-02 23:56:07 +0100
commit8b9d1a94dc0b00e2dfa2c09d3a1f46f688caacda (patch)
treebba11e38d48b4608c07425c56989ba7f4b353f38
parent70855c996d66a196339b129520eff8c1200c2bec (diff)
Allow true_color to be a SimpleFilter. (Make it possible to configure at runtime.)
-rw-r--r--prompt_toolkit/shortcuts.py2
-rw-r--r--prompt_toolkit/terminal/vt100_output.py10
2 files changed, 8 insertions, 4 deletions
diff --git a/prompt_toolkit/shortcuts.py b/prompt_toolkit/shortcuts.py
index e973c587..e3c35037 100644
--- a/prompt_toolkit/shortcuts.py
+++ b/prompt_toolkit/shortcuts.py
@@ -87,8 +87,10 @@ def create_output(stdout=None, true_color=False):
line.
:param true_color: When True, use 24bit colors instead of 256 colors.
+ (`bool` or :class:`~prompt_toolkit.filters.SimpleFilter`.)
"""
stdout = stdout or sys.__stdout__
+ true_color = to_simple_filter(true_color)
if is_windows():
if is_conemu_ansi():
diff --git a/prompt_toolkit/terminal/vt100_output.py b/prompt_toolkit/terminal/vt100_output.py
index ca5877c7..1d9eee20 100644
--- a/prompt_toolkit/terminal/vt100_output.py
+++ b/prompt_toolkit/terminal/vt100_output.py
@@ -1,6 +1,7 @@
from __future__ import unicode_literals
from pygments.formatters.terminal256 import Terminal256Formatter
+from prompt_toolkit.filters import to_simple_filter
from prompt_toolkit.layout.screen import Size
from prompt_toolkit.renderer import Output
from prompt_toolkit.styles import ANSI_COLOR_NAMES
@@ -84,6 +85,7 @@ class _EscapeCodeCache(dict):
:param true_color: When True, use 24bit colors instead of 256 colors.
"""
def __init__(self, true_color=False):
+ assert isinstance(true_color, bool)
self.true_color = true_color
def __missing__(self, attrs):
@@ -173,13 +175,13 @@ class Vt100_Output(Output):
"""
:param get_size: A callable which returns the `Size` of the output terminal.
:param stdout: Any object with has a `write` and `flush` method.
- :param true_color: Use 24bit color instead of 256 colors.
+ :param true_color: Use 24bit color instead of 256 colors. (Can be a :class:`SimpleFilter`.)
"""
def __init__(self, stdout, get_size, true_color=False):
self._buffer = []
self.stdout = stdout
self.get_size = get_size
- self.true_color = true_color
+ self.true_color = to_simple_filter(true_color)
@classmethod
def from_pty(cls, stdout, true_color=False):
@@ -192,7 +194,7 @@ class Vt100_Output(Output):
rows, columns = _get_size(stdout.fileno())
return Size(rows=rows, columns=columns)
- return cls(stdout, get_size)
+ return cls(stdout, get_size, true_color=true_color)
def write_raw(self, data):
"""
@@ -268,7 +270,7 @@ class Vt100_Output(Output):
:param attrs: `Attrs` instance.
"""
- if self.true_color:
+ if self.true_color():
self.write_raw(_ESCAPE_CODE_CACHE_TRUE_COLOR[attrs])
else:
self.write_raw(_ESCAPE_CODE_CACHE[attrs])