From 6294093de6b03ee711b57f2cb25421c0d65f7d5e Mon Sep 17 00:00:00 2001 From: Jonathan Slenders Date: Tue, 11 Nov 2025 20:39:10 +0000 Subject: [PATCH 1/3] Fix nested completer which got broken after previous 'get_word_before_cursor' fix. --- src/prompt_toolkit/document.py | 3 ++- tests/test_document.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/prompt_toolkit/document.py b/src/prompt_toolkit/document.py index 382fb93e3..d2657a50e 100644 --- a/src/prompt_toolkit/document.py +++ b/src/prompt_toolkit/document.py @@ -457,10 +457,11 @@ def get_word_before_cursor( def _is_word_before_cursor_complete( self, WORD: bool = False, pattern: Pattern[str] | None = None ) -> bool: - if not self.text_before_cursor == "" or self.text_before_cursor[-1:].isspace(): + if self.text_before_cursor == "" or self.text_before_cursor[-1:].isspace(): return True if pattern: return self.find_start_of_previous_word(WORD=WORD, pattern=pattern) is None + return False def find_start_of_previous_word( self, count: int = 1, WORD: bool = False, pattern: Pattern[str] | None = None diff --git a/tests/test_document.py b/tests/test_document.py index f10232a21..b5a02f135 100644 --- a/tests/test_document.py +++ b/tests/test_document.py @@ -77,4 +77,4 @@ def test_get_word_before_cursor_with_whitespace_and_pattern(): assert document.get_word_before_cursor() == "" _FIND_WORD_RE = re.compile(r"([a-zA-Z0-9_]+|[^a-zA-Z0-9_\s]+)") - assert document.get_word_before_cursor(pattern=_FIND_WORD_RE) == "" \ No newline at end of file + assert document.get_word_before_cursor(pattern=_FIND_WORD_RE) == "" From 621876c50e5ecf3eb88339fc5814423fd13859a5 Mon Sep 17 00:00:00 2001 From: Jonathan Slenders Date: Tue, 11 Nov 2025 20:43:03 +0000 Subject: [PATCH 2/3] Ruff-related fixes. --- src/prompt_toolkit/shortcuts/dialogs.py | 1 - tests/test_document.py | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/prompt_toolkit/shortcuts/dialogs.py b/src/prompt_toolkit/shortcuts/dialogs.py index 6d1f59cc6..1b2f177f8 100644 --- a/src/prompt_toolkit/shortcuts/dialogs.py +++ b/src/prompt_toolkit/shortcuts/dialogs.py @@ -1,7 +1,6 @@ from __future__ import annotations import functools -from asyncio import get_running_loop from typing import Any, Callable, Sequence, TypeVar from prompt_toolkit.application import Application diff --git a/tests/test_document.py b/tests/test_document.py index b5a02f135..ff54310d5 100644 --- a/tests/test_document.py +++ b/tests/test_document.py @@ -1,8 +1,9 @@ from __future__ import annotations -import pytest import re +import pytest + from prompt_toolkit.document import Document From 9e98b095fa56d0295c76ee3c754def1bbd5be6ce Mon Sep 17 00:00:00 2001 From: Jonathan Slenders Date: Tue, 11 Nov 2025 21:01:31 +0000 Subject: [PATCH 3/3] Fix typing issue in dialogs.py. --- src/prompt_toolkit/shortcuts/dialogs.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/prompt_toolkit/shortcuts/dialogs.py b/src/prompt_toolkit/shortcuts/dialogs.py index 1b2f177f8..d12bbb03a 100644 --- a/src/prompt_toolkit/shortcuts/dialogs.py +++ b/src/prompt_toolkit/shortcuts/dialogs.py @@ -289,8 +289,10 @@ def set_percentage(value: int) -> None: app.invalidate() def log_text(text: str) -> None: - app.loop.call_soon_threadsafe(text_area.buffer.insert_text, text) - app.invalidate() + loop = app.loop + if loop is not None: + loop.call_soon_threadsafe(text_area.buffer.insert_text, text) + app.invalidate() # Run the callback in the executor. When done, set a return value for the # UI, so that it quits.