You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
"""
|
|
Filters decide whether something is active or not (they decide about a boolean
|
|
state). This is used to enable/disable features, like key bindings, parts of
|
|
the layout and other stuff. For instance, we could have a `HasSearch` filter
|
|
attached to some part of the layout, in order to show that part of the user
|
|
interface only while the user is searching.
|
|
|
|
Filters are made to avoid having to attach callbacks to all event in order to
|
|
propagate state. However, they are lazy, they don't automatically propagate the
|
|
state of what they are observing. Only when a filter is called (it's actually a
|
|
callable), it will calculate its value. So, its not really reactive
|
|
programming, but it's made to fit for this framework.
|
|
|
|
Filters can be chained using ``&`` and ``|`` operations, and inverted using the
|
|
``~`` operator, for instance::
|
|
|
|
filter = has_focus('default') & ~ has_selection
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from .app import *
|
|
from .base import Always, Condition, Filter, FilterOrBool, Never
|
|
from .cli import *
|
|
from .utils import is_true, to_filter
|
|
|
|
__all__ = [
|
|
# app
|
|
"has_arg",
|
|
"has_completions",
|
|
"completion_is_selected",
|
|
"has_focus",
|
|
"buffer_has_focus",
|
|
"has_selection",
|
|
"has_validation_error",
|
|
"is_done",
|
|
"is_read_only",
|
|
"is_multiline",
|
|
"renderer_height_is_known",
|
|
"in_editing_mode",
|
|
"in_paste_mode",
|
|
"vi_mode",
|
|
"vi_navigation_mode",
|
|
"vi_insert_mode",
|
|
"vi_insert_multiple_mode",
|
|
"vi_replace_mode",
|
|
"vi_selection_mode",
|
|
"vi_waiting_for_text_object_mode",
|
|
"vi_digraph_mode",
|
|
"vi_recording_macro",
|
|
"emacs_mode",
|
|
"emacs_insert_mode",
|
|
"emacs_selection_mode",
|
|
"shift_selection_mode",
|
|
"is_searching",
|
|
"control_is_searchable",
|
|
"vi_search_direction_reversed",
|
|
# base.
|
|
"Filter",
|
|
"Never",
|
|
"Always",
|
|
"Condition",
|
|
"FilterOrBool",
|
|
# utils.
|
|
"is_true",
|
|
"to_filter",
|
|
]
|
|
|
|
from .cli import __all__ as cli_all
|
|
|
|
__all__.extend(cli_all)
|