ai-bot-test
/
venv
/lib
/python3.11
/site-packages
/prompt_toolkit
/key_binding
/bindings
/search.py
""" | |
Search related key bindings. | |
""" | |
from __future__ import annotations | |
from prompt_toolkit import search | |
from prompt_toolkit.application.current import get_app | |
from prompt_toolkit.filters import Condition, control_is_searchable, is_searching | |
from prompt_toolkit.key_binding.key_processor import KeyPressEvent | |
from ..key_bindings import key_binding | |
__all__ = [ | |
"abort_search", | |
"accept_search", | |
"start_reverse_incremental_search", | |
"start_forward_incremental_search", | |
"reverse_incremental_search", | |
"forward_incremental_search", | |
"accept_search_and_accept_input", | |
] | |
E = KeyPressEvent | |
def abort_search(event: E) -> None: | |
""" | |
Abort an incremental search and restore the original | |
line. | |
(Usually bound to ControlG/ControlC.) | |
""" | |
search.stop_search() | |
def accept_search(event: E) -> None: | |
""" | |
When enter pressed in isearch, quit isearch mode. (Multiline | |
isearch would be too complicated.) | |
(Usually bound to Enter.) | |
""" | |
search.accept_search() | |
def start_reverse_incremental_search(event: E) -> None: | |
""" | |
Enter reverse incremental search. | |
(Usually ControlR.) | |
""" | |
search.start_search(direction=search.SearchDirection.BACKWARD) | |
def start_forward_incremental_search(event: E) -> None: | |
""" | |
Enter forward incremental search. | |
(Usually ControlS.) | |
""" | |
search.start_search(direction=search.SearchDirection.FORWARD) | |
def reverse_incremental_search(event: E) -> None: | |
""" | |
Apply reverse incremental search, but keep search buffer focused. | |
""" | |
search.do_incremental_search(search.SearchDirection.BACKWARD, count=event.arg) | |
def forward_incremental_search(event: E) -> None: | |
""" | |
Apply forward incremental search, but keep search buffer focused. | |
""" | |
search.do_incremental_search(search.SearchDirection.FORWARD, count=event.arg) | |
def _previous_buffer_is_returnable() -> bool: | |
""" | |
True if the previously focused buffer has a return handler. | |
""" | |
prev_control = get_app().layout.search_target_buffer_control | |
return bool(prev_control and prev_control.buffer.is_returnable) | |
def accept_search_and_accept_input(event: E) -> None: | |
""" | |
Accept the search operation first, then accept the input. | |
""" | |
search.accept_search() | |
event.current_buffer.validate_and_handle() | |