Skip to content

Commit 09cd5c7

Browse files
committed
Add isToken property to Target
1 parent 91ef761 commit 09cd5c7

File tree

10 files changed

+22
-1
lines changed

10 files changed

+22
-1
lines changed

packages/cursorless-engine/src/processTargets/marks/CursorStage.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export default class CursorStage implements MarkStage {
1616
isReversed: selection.selection.isReversed,
1717
contentRange: selection.selection,
1818
hasExplicitRange: !selection.selection.isEmpty,
19+
isToken: false,
1920
}),
2021
);
2122
}

packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/CharacterScopeHandler.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ export default class CharacterScopeHandler extends NestedScopeHandler {
3838
editor,
3939
contentRange: range,
4040
isReversed,
41+
isToken: false,
4142
}),
4243
}),
4344
);

packages/cursorless-engine/src/processTargets/targetUtil/createContinuousRange.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,6 @@ export function createContinuousRangeUntypedTarget(
6363
includeStart,
6464
includeEnd,
6565
),
66+
isToken: startTarget.isToken && endTarget.isToken,
6667
});
6768
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export interface CloneWithParameters {
3131
export default abstract class BaseTarget implements Target {
3232
protected readonly state: CommonTargetParameters;
3333
isLine = false;
34+
isToken = true;
3435
hasExplicitScopeType = true;
3536
hasExplicitRange = true;
3637
isRaw = false;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export default class ImplicitTarget extends BaseTarget {
1111
isRaw = true;
1212
hasExplicitScopeType = false;
1313
isImplicit = true;
14+
isToken = false;
1415

1516
getLeadingDelimiterTarget = () => undefined;
1617
getTrailingDelimiterTarget = () => undefined;

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import BaseTarget from "./BaseTarget";
1+
import BaseTarget, { CommonTargetParameters } from "./BaseTarget";
2+
3+
interface PlainTargetParameters extends CommonTargetParameters {
4+
readonly isToken?: boolean;
5+
}
26

37
/**
48
* A target that has no leading or trailing delimiters so it's removal range
@@ -7,6 +11,11 @@ import BaseTarget from "./BaseTarget";
711
export default class PlainTarget extends BaseTarget {
812
insertionDelimiter = "";
913

14+
constructor(parameters: PlainTargetParameters) {
15+
super(parameters);
16+
this.isToken = parameters.isToken ?? true;
17+
}
18+
1019
getLeadingDelimiterTarget = () => undefined;
1120
getTrailingDelimiterTarget = () => undefined;
1221
getRemovalRange = () => this.contentRange;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import BaseTarget from "./BaseTarget";
88
export default class RawSelectionTarget extends BaseTarget {
99
insertionDelimiter = "";
1010
isRaw = true;
11+
isToken = false;
1112

1213
getLeadingDelimiterTarget = () => undefined;
1314
getTrailingDelimiterTarget = () => undefined;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export default class SubTokenWordTarget extends BaseTarget {
1313
private leadingDelimiterRange_?: Range;
1414
private trailingDelimiterRange_?: Range;
1515
insertionDelimiter: string;
16+
isToken = false;
1617

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

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010

1111
interface UntypedTargetParameters extends CommonTargetParameters {
1212
readonly hasExplicitRange: boolean;
13+
readonly isToken?: boolean;
1314
}
1415

1516
/**
@@ -24,6 +25,7 @@ export default class UntypedTarget extends BaseTarget {
2425
constructor(parameters: UntypedTargetParameters) {
2526
super(parameters);
2627
this.hasExplicitRange = parameters.hasExplicitRange;
28+
this.isToken = parameters.isToken ?? true;
2729
}
2830

2931
getLeadingDelimiterTarget(): Target | undefined {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ export interface Target {
4444
/** If true this target should be treated as a line */
4545
readonly isLine: boolean;
4646

47+
/** If true this target should be treated as a token */
48+
readonly isToken: boolean;
49+
4750
/**
4851
* If `true`, then this target has an explicit scope type, and so should never
4952
* be automatically expanded to a containing scope.

0 commit comments

Comments
 (0)