Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions cursorless-talon/src/cheatsheet/sections/modifiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ def get_modifiers() -> list[ListItemDescriptor]:
"trailing": "Trailing delimiter range",
"start": "Empty position at start of target",
"end": "Empty position at end of target",
"filename": "File name including extension",
"filenameWithoutExtension": "File name without extension",
},
)

Expand Down
1 change: 1 addition & 0 deletions cursorless-talon/src/modifiers/modifiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ def cursorless_simple_modifier(m) -> dict[str, str]:
"<user.cursorless_interior_modifier>", # inside
"<user.cursorless_head_tail_modifier>", # head, tail
"<user.cursorless_position_modifier>", # start of, end of
"<user.cursorless_reference_modifier>", # reference formats
*head_tail_swallowed_modifiers,
]

Expand Down
89 changes: 89 additions & 0 deletions cursorless-talon/src/modifiers/reference.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
from typing import Any

from talon import Context, Module

mod = Module()

mod.list(
"cursorless_reference_modifier",
desc="Cursorless reference modifiers with snippet outputs",
)


REFERENCE_MODIFIER_DATA: dict[str, dict[str, Any]] = {
"relative": [
{
"body": "$relative",
},
],
"absolute": [
{
"body": "$absolute",
},
],
"remote": [
{
"body": "$remote",
},
],
"remoteCanonical": [
{
"body": "$remoteCanonical",
},
],
"relativeText": [
{
"body": " $relative (`$content`) ",
"lineMode": "singleLine",
},
{
"body": "\n\n$relative:\n\n```$languageId\n$content\n```\n\n",
"lineMode": "multiLine",
},
],
"remoteText": [
{
"body": " $remote (`$content`) ",
"lineMode": "singleLine",
},
{
"body": "\n\n$remote:\n\n```$languageId\n$content\n```\n\n",
"lineMode": "multiLine",
},
],
"remoteLink": [
{
"body": "[`$name`]($remote)",
},
],
"relativeLink": [
{
"body": "[`$name`]($relative)",
},
],
}

REFERENCE_SPOKEN_FORMS: dict[str, str] = {
"local": "relative",
"absolute": "absolute",
"remote": "remote",
"canonical": "remoteCanonical",
"local text": "relativeText",
"remote text": "remoteText",
"local link": "relativeLink",
"remote link": "remoteLink",
}

ctx = Context()
ctx.lists["user.cursorless_reference_modifier"] = REFERENCE_SPOKEN_FORMS


@mod.capture(rule="{user.cursorless_reference_modifier}")
def cursorless_reference_modifier(m) -> dict[str, Any]:
"""Reference modifier snippets"""
modifier_id = m.cursorless_reference_modifier
data = REFERENCE_MODIFIER_DATA[modifier_id]
return {
"type": "reference",
"snippets": data,
}
5 changes: 4 additions & 1 deletion cursorless-talon/src/spoken_forms.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,10 @@
"content": "keepContentFilter",
"empty": "keepEmptyFilter",
"its": "inferPreviousMark",
"visible": "visible"
"visible": "visible",
"reference": "reference",
"file name": "filename",
"base": "filenameWithoutExtension"
},
"every_scope_modifier": { "every": "every" },
"ancestor_scope_modifier": { "grand": "ancestor" },
Expand Down
37 changes: 37 additions & 0 deletions data/fixtures/recorded/modifiers/bringBasename.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
languageId: plaintext
command:
version: 7
spokenForm: bring basename
action:
name: replaceWithTarget
source:
type: primitive
modifiers:
- {type: filenameWithoutExtension}
destination: {type: implicit}
usePrePhraseSnapshot: true
initialState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
marks: {}
finalState:
documentContents: Untitled-1
selections:
- anchor: {line: 0, character: 10}
active: {line: 0, character: 10}
thatMark:
- type: UntypedTarget
contentRange:
start: {line: 0, character: 0}
end: {line: 0, character: 10}
isReversed: false
hasExplicitRange: true
sourceMark:
- type: UntypedTarget
contentRange:
start: {line: 0, character: 10}
end: {line: 0, character: 10}
isReversed: false
hasExplicitRange: true
37 changes: 37 additions & 0 deletions data/fixtures/recorded/modifiers/bringFilename.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
languageId: plaintext
command:
version: 7
spokenForm: bring filename
action:
name: replaceWithTarget
source:
type: primitive
modifiers:
- {type: filename}
destination: {type: implicit}
usePrePhraseSnapshot: true
initialState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
marks: {}
finalState:
documentContents: Untitled-1
selections:
- anchor: {line: 0, character: 10}
active: {line: 0, character: 10}
thatMark:
- type: UntypedTarget
contentRange:
start: {line: 0, character: 0}
end: {line: 0, character: 10}
isReversed: false
hasExplicitRange: true
sourceMark:
- type: UntypedTarget
contentRange:
start: {line: 0, character: 10}
end: {line: 0, character: 10}
isReversed: false
hasExplicitRange: true
42 changes: 42 additions & 0 deletions data/fixtures/recorded/modifiers/bringReference.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
languageId: plaintext
command:
version: 7
spokenForm: bring reference
action:
name: replaceWithTarget
source:
type: primitive
modifiers:
- {type: reference}
destination: {type: implicit}
usePrePhraseSnapshot: true
initialState:
documentContents: |+
aaa bbb ccc

selections:
- anchor: {line: 2, character: 0}
active: {line: 2, character: 0}
marks: {}
finalState:
documentContents: |-
aaa bbb ccc

Untitled-1#L3
selections:
- anchor: {line: 2, character: 13}
active: {line: 2, character: 13}
thatMark:
- type: UntypedTarget
contentRange:
start: {line: 2, character: 0}
end: {line: 2, character: 13}
isReversed: false
hasExplicitRange: true
sourceMark:
- type: UntypedTarget
contentRange:
start: {line: 2, character: 13}
end: {line: 2, character: 13}
isReversed: false
hasExplicitRange: true
46 changes: 46 additions & 0 deletions data/fixtures/recorded/modifiers/bringReferenceAir.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
languageId: plaintext
command:
version: 7
spokenForm: bring reference air
action:
name: replaceWithTarget
source:
type: primitive
mark: {type: decoratedSymbol, symbolColor: default, character: a}
modifiers:
- {type: reference}
destination: {type: implicit}
usePrePhraseSnapshot: true
initialState:
documentContents: |+
aaa bbb ccc

selections:
- anchor: {line: 2, character: 0}
active: {line: 2, character: 0}
marks:
default.a:
start: {line: 0, character: 0}
end: {line: 0, character: 3}
finalState:
documentContents: |-
aaa bbb ccc

Untitled-1#L1
selections:
- anchor: {line: 2, character: 13}
active: {line: 2, character: 13}
thatMark:
- type: UntypedTarget
contentRange:
start: {line: 2, character: 0}
end: {line: 2, character: 13}
isReversed: false
hasExplicitRange: true
sourceMark:
- type: UntypedTarget
contentRange:
start: {line: 0, character: 0}
end: {line: 0, character: 3}
isReversed: false
hasExplicitRange: true
51 changes: 51 additions & 0 deletions data/fixtures/recorded/modifiers/bringReferenceAirAfterBat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
languageId: plaintext
command:
version: 7
spokenForm: bring reference air after bat
action:
name: replaceWithTarget
source:
type: primitive
mark: {type: decoratedSymbol, symbolColor: default, character: a}
modifiers:
- {type: reference}
destination:
type: primitive
insertionMode: after
target:
type: primitive
mark: {type: decoratedSymbol, symbolColor: default, character: b}
usePrePhraseSnapshot: true
initialState:
documentContents: |
aaa bbb
selections:
- anchor: {line: 1, character: 0}
active: {line: 1, character: 0}
marks:
default.a:
start: {line: 0, character: 0}
end: {line: 0, character: 3}
default.b:
start: {line: 0, character: 4}
end: {line: 0, character: 7}
finalState:
documentContents: |
aaa bbb Untitled-1#L1
selections:
- anchor: {line: 1, character: 0}
active: {line: 1, character: 0}
thatMark:
- type: UntypedTarget
contentRange:
start: {line: 0, character: 8}
end: {line: 0, character: 21}
isReversed: false
hasExplicitRange: true
sourceMark:
- type: UntypedTarget
contentRange:
start: {line: 0, character: 0}
end: {line: 0, character: 3}
isReversed: false
hasExplicitRange: true
59 changes: 59 additions & 0 deletions data/fixtures/recorded/modifiers/bringReferenceAirAndBat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
languageId: plaintext
command:
version: 7
spokenForm: bring reference air and bat
action:
name: replaceWithTarget
source:
type: list
elements:
- type: primitive
mark: {type: decoratedSymbol, symbolColor: default, character: a}
modifiers:
- {type: reference}
- type: primitive
mark: {type: decoratedSymbol, symbolColor: default, character: b}
destination: {type: implicit}
usePrePhraseSnapshot: true
initialState:
documentContents: |
aaa
bbb
selections:
- anchor: {line: 2, character: 0}
active: {line: 2, character: 0}
marks:
default.a:
start: {line: 0, character: 0}
end: {line: 0, character: 3}
default.b:
start: {line: 1, character: 0}
end: {line: 1, character: 3}
finalState:
documentContents: |-
aaa
bbb
Untitled-1#L1, Untitled-1#L2
selections:
- anchor: {line: 2, character: 28}
active: {line: 2, character: 28}
thatMark:
- type: UntypedTarget
contentRange:
start: {line: 2, character: 0}
end: {line: 2, character: 28}
isReversed: false
hasExplicitRange: true
sourceMark:
- type: UntypedTarget
contentRange:
start: {line: 0, character: 0}
end: {line: 0, character: 3}
isReversed: false
hasExplicitRange: true
- type: UntypedTarget
contentRange:
start: {line: 1, character: 0}
end: {line: 1, character: 3}
isReversed: false
hasExplicitRange: true
Loading
Loading