56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
from typing import Optional
|
|
|
|
from talon import Module, actions
|
|
|
|
from ..targets.target_types import CursorlessTarget
|
|
|
|
mod = Module()
|
|
|
|
|
|
@mod.action_class
|
|
class Actions:
|
|
def cursorless_get_text(
|
|
target: CursorlessTarget, # pyright: ignore [reportGeneralTypeIssues]
|
|
hide_decorations: bool = False,
|
|
) -> str:
|
|
"""Get target text. If hide_decorations is True, don't show decorations"""
|
|
return cursorless_get_text_action(
|
|
target,
|
|
show_decorations=not hide_decorations,
|
|
ensure_single_target=True,
|
|
)[0]
|
|
|
|
def cursorless_get_text_list(
|
|
target: CursorlessTarget, # pyright: ignore [reportGeneralTypeIssues]
|
|
hide_decorations: bool = False,
|
|
) -> list[str]:
|
|
"""Get texts for multiple targets. If hide_decorations is True, don't show decorations"""
|
|
return cursorless_get_text_action(
|
|
target,
|
|
show_decorations=not hide_decorations,
|
|
ensure_single_target=False,
|
|
)
|
|
|
|
|
|
def cursorless_get_text_action(
|
|
target: CursorlessTarget,
|
|
*,
|
|
show_decorations: Optional[bool] = None,
|
|
ensure_single_target: Optional[bool] = None,
|
|
) -> list[str]:
|
|
"""Get target texts"""
|
|
options: dict[str, bool] = {}
|
|
|
|
if show_decorations is not None:
|
|
options["showDecorations"] = show_decorations
|
|
|
|
if ensure_single_target is not None:
|
|
options["ensureSingleTarget"] = ensure_single_target
|
|
|
|
return actions.user.private_cursorless_command_get(
|
|
{
|
|
"name": "getText",
|
|
"options": options,
|
|
"target": target,
|
|
}
|
|
)
|