Skip to content

Commit 6747dfc

Browse files
committed
Handle words
1 parent 30f515d commit 6747dfc

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

packages/cursorless-engine/src/processTargets/modifiers/InstanceStage.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@ function getFilterScopeType(target: Target): ScopeType | null {
160160
return { type: "token" };
161161
}
162162

163+
if (target.isWord) {
164+
return { type: "word" };
165+
}
166+
163167
return null;
164168
}
165169

packages/cursorless-engine/src/processTargets/targets/BaseTarget.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export default abstract class BaseTarget implements Target {
3737
isRaw = false;
3838
isImplicit = false;
3939
isNotebookCell = false;
40+
isWord = false;
4041

4142
constructor(parameters: CommonTargetParameters) {
4243
this.state = {

packages/cursorless-engine/src/processTargets/targets/SubTokenWordTarget.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export default class SubTokenWordTarget extends BaseTarget {
1414
private trailingDelimiterRange_?: Range;
1515
insertionDelimiter: string;
1616
isToken = false;
17+
isWord = true;
1718

1819
constructor(parameters: SubTokenTargetParameters) {
1920
super(parameters);

packages/cursorless-engine/src/typings/target.types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ export interface Target {
4747
/** If true this target should be treated as a token */
4848
readonly isToken: boolean;
4949

50+
/** If true this target should be treated as a word */
51+
readonly isWord: boolean;
52+
5053
/**
5154
* If `true`, then this target has an explicit scope type, and so should never
5255
* be automatically expanded to a containing scope.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
languageId: plaintext
2+
command:
3+
version: 5
4+
spokenForm: clear two instances its last word air
5+
action: {name: clearAndSetSelection}
6+
targets:
7+
- type: primitive
8+
modifiers:
9+
- type: relativeScope
10+
scopeType: {type: instance}
11+
offset: 0
12+
length: 2
13+
direction: forward
14+
- {type: inferPreviousMark}
15+
- type: ordinalScope
16+
scopeType: {type: word}
17+
start: -1
18+
length: 1
19+
mark: {type: decoratedSymbol, symbolColor: default, character: a}
20+
usePrePhraseSnapshot: true
21+
initialState:
22+
documentContents: |
23+
aaaBbb cccBbbb dddBbb
24+
selections:
25+
- anchor: {line: 1, character: 0}
26+
active: {line: 1, character: 0}
27+
marks:
28+
default.a:
29+
start: {line: 0, character: 0}
30+
end: {line: 0, character: 6}
31+
finalState:
32+
documentContents: |
33+
aaa cccBbbb ddd
34+
selections:
35+
- anchor: {line: 0, character: 3}
36+
active: {line: 0, character: 3}
37+
- anchor: {line: 0, character: 15}
38+
active: {line: 0, character: 15}

0 commit comments

Comments
 (0)