diff --git a/cursorless-talon/src/modifiers/head_tail.py b/cursorless-talon/src/modifiers/head_tail.py index 85dcff2731..e326891086 100644 --- a/cursorless-talon/src/modifiers/head_tail.py +++ b/cursorless-talon/src/modifiers/head_tail.py @@ -13,14 +13,32 @@ ) -@mod.capture(rule="{user.cursorless_head_tail_modifier} *") +@mod.capture( + rule=( + "{user.cursorless_head_tail_modifier} " + "[] " + "[]" + ) +) def cursorless_head_tail_modifier(m) -> dict[str, str]: """Cursorless head and tail modifier""" - result = { - "type": m.cursorless_head_tail_modifier, - } + modifiers = [] + try: - result["modifiers"] = m.cursorless_modifier_list + modifiers.append(m.cursorless_interior_modifier) except AttributeError: pass + + try: + modifiers.append(m.cursorless_modifier) + except AttributeError: + pass + + result = { + "type": m.cursorless_head_tail_modifier, + } + + if modifiers: + result["modifiers"] = modifiers + return result diff --git a/cursorless-talon/src/modifiers/interior.py b/cursorless-talon/src/modifiers/interior.py new file mode 100644 index 0000000000..62307f9ac3 --- /dev/null +++ b/cursorless-talon/src/modifiers/interior.py @@ -0,0 +1,22 @@ +from talon import Module + +# NOTE: Please do not change these dicts. Use the CSVs for customization. +# See https://www.cursorless.org/docs/user/customization/ +interior_modifiers = { + "inside": "interiorOnly", +} + +mod = Module() + +mod.list( + "cursorless_interior_modifier", + desc="Cursorless interior modifier", +) + + +@mod.capture(rule="{user.cursorless_interior_modifier}") +def cursorless_interior_modifier(m) -> dict[str, str]: + """Cursorless interior modifier""" + return { + "type": m.cursorless_interior_modifier, + } diff --git a/cursorless-talon/src/modifiers/modifiers.py b/cursorless-talon/src/modifiers/modifiers.py index b4481808fd..72ed83a700 100644 --- a/cursorless-talon/src/modifiers/modifiers.py +++ b/cursorless-talon/src/modifiers/modifiers.py @@ -2,6 +2,7 @@ from ..csv_overrides import init_csv_and_watch_changes from .head_tail import head_tail_modifiers +from .interior import interior_modifiers from .range_type import range_types mod = Module() @@ -9,7 +10,6 @@ # NOTE: Please do not change these dicts. Use the CSVs for customization. # See https://www.cursorless.org/docs/user/customization/ simple_modifiers = { - "inside": "interiorOnly", "bounds": "excludeInterior", "just": "toRawSelection", "leading": "leading", @@ -32,7 +32,8 @@ def cursorless_simple_modifier(m) -> dict[str, str]: modifiers = [ "", # before, end of - "", # inside, bounds, just, leading, trailing + "", # bounds, just, leading, trailing + "", # inside "", # head, tail "", # funk, state, class "", # first past second word @@ -51,6 +52,7 @@ def on_ready(): "modifiers", { "simple_modifier": simple_modifiers, + "interior_modifier": interior_modifiers, "head_tail_modifier": head_tail_modifiers, "range_type": range_types, },