|
28 | 28 | from dataclasses import dataclass, field, fields |
29 | 29 |
|
30 | 30 | from . import commands, console, input |
31 | | -from .utils import wlen, unbracket, disp_str, gen_colors, THEME |
| 31 | +from .utils import wlen, unbracket, disp_str, gen_colors, ColorSpan, THEME |
32 | 32 | from .trace import trace |
33 | 33 |
|
34 | 34 |
|
35 | 35 | # types |
36 | 36 | Command = commands.Command |
37 | | -from .types import Callback, SimpleContextManager, KeySpec, CommandName |
| 37 | +from .types import ( |
| 38 | + Callable, |
| 39 | + Callback, |
| 40 | + Iterator, |
| 41 | + SimpleContextManager, |
| 42 | + KeySpec, |
| 43 | + CommandName, |
| 44 | +) |
38 | 45 |
|
39 | 46 |
|
40 | 47 | # syntax classes |
@@ -213,6 +220,7 @@ class Reader: |
213 | 220 | lxy: tuple[int, int] = field(init=False) |
214 | 221 | scheduled_commands: list[str] = field(default_factory=list) |
215 | 222 | can_colorize: bool = False |
| 223 | + gen_colors: Callable[[str], Iterator[ColorSpan]] = field(default=gen_colors) |
216 | 224 | threading_hook: Callback | None = None |
217 | 225 |
|
218 | 226 | ## cached metadata to speed up screen refreshes |
@@ -312,7 +320,7 @@ def calc_screen(self) -> list[str]: |
312 | 320 | prompt_from_cache = (offset and self.buffer[offset - 1] != "\n") |
313 | 321 |
|
314 | 322 | if self.can_colorize: |
315 | | - colors = list(gen_colors(self.get_unicode())) |
| 323 | + colors = list(self.gen_colors(self.get_unicode())) |
316 | 324 | else: |
317 | 325 | colors = None |
318 | 326 | trace("colors = {colors}", colors=colors) |
|
0 commit comments