diff options
author | Jonathan Slenders <jonathan@slenders.be> | 2016-01-02 23:56:07 +0100 |
---|---|---|
committer | Jonathan Slenders <jonathan@slenders.be> | 2016-01-02 23:56:07 +0100 |
commit | 8b9d1a94dc0b00e2dfa2c09d3a1f46f688caacda (patch) | |
tree | bba11e38d48b4608c07425c56989ba7f4b353f38 | |
parent | 70855c996d66a196339b129520eff8c1200c2bec (diff) |
Allow true_color to be a SimpleFilter. (Make it possible to configure at runtime.)
-rw-r--r-- | prompt_toolkit/shortcuts.py | 2 | ||||
-rw-r--r-- | prompt_toolkit/terminal/vt100_output.py | 10 |
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]) |