From 0480df7c0a12b43769e48a9beb38e65e7b45eefe Mon Sep 17 00:00:00 2001 From: Shahovalov MIkhail Date: Thu, 20 Aug 2026 10:49:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D1=81=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=BF=D1=80=D0=BE=D0=BF=D0=B0=D0=B4=D0=B0=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BD=D0=B0=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=20=D0=BA=D1=83=D1=80=D1=81=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pg_stand_sync_tui.py | 8 ++++++-- tests_tui.py | 8 ++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) 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"])