diff --git a/pg_stand_sync_tui.py b/pg_stand_sync_tui.py index 92fb7da..6682ab6 100644 --- a/pg_stand_sync_tui.py +++ b/pg_stand_sync_tui.py @@ -149,7 +149,11 @@ def clip(text: str, room: int) -> str: def highlighted_content(text: str, query: str) -> Content: - """Подсветить куски, из-за которых строка прошла фильтр: иначе непонятно, почему она тут.""" + """Подсветить куски, из-за которых строка прошла фильтр: иначе непонятно, почему она тут. + + Стиль только начертанием, без цвета: фон строки под курсором — тот же $primary, + и цветная подсветка на нём сливалась с фоном, съедая совпавшие буквы. + """ content = Content(text) if not query: return content @@ -157,7 +161,7 @@ def highlighted_content(text: str, query: str) -> Content: for word in query.lower().split(): start = low.find(word) if start >= 0: - content = content.stylize("bold $primary", start, start + len(word)) + content = content.stylize("bold underline", start, start + len(word)) return content diff --git a/tests_tui.py b/tests_tui.py index 901e900..c2f74ac 100644 --- a/tests_tui.py +++ b/tests_tui.py @@ -75,6 +75,14 @@ def test_matches_common_filter(): assert core.matches("что угодно", "") +def test_filter_highlight_has_no_color(): + """Фон строки под курсором — $primary: цветная подсветка совпадения слилась бы с ним.""" + content = tui.highlighted_content("zpas_core", "core") + styles = " ".join(str(span.style) for span in content.spans) + assert styles, "совпадение обязано быть выделено" + assert "$" not in styles and "color" not in styles + + def test_pick_uses_matches(monkeypatch): """Текстовый режим и TUI обязаны фильтровать одинаково — через одну функцию.""" answers = iter(["zp core", "1"])