diff --git a/data/fixtures/recorded/modifiers/interior/changeHead.yml b/data/fixtures/recorded/modifiers/interior/changeHead.yml new file mode 100644 index 0000000000..0fa8268d83 --- /dev/null +++ b/data/fixtures/recorded/modifiers/interior/changeHead.yml @@ -0,0 +1,22 @@ +languageId: typescriptreact +command: + version: 7 + spokenForm: change head + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - {type: extendThroughStartOf} + usePrePhraseSnapshot: false +initialState: + documentContents:
abcd
+ selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} + marks: {} +finalState: + documentContents:
cd
+ selections: + - anchor: {line: 0, character: 5} + active: {line: 0, character: 5} diff --git a/data/fixtures/recorded/modifiers/interior/changeTail.yml b/data/fixtures/recorded/modifiers/interior/changeTail.yml new file mode 100644 index 0000000000..6dda13f51d --- /dev/null +++ b/data/fixtures/recorded/modifiers/interior/changeTail.yml @@ -0,0 +1,22 @@ +languageId: typescriptreact +command: + version: 7 + spokenForm: change tail + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - {type: extendThroughEndOf} + usePrePhraseSnapshot: false +initialState: + documentContents:
abcd
+ selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} + marks: {} +finalState: + documentContents:
ab
+ selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} diff --git a/packages/cursorless-engine/src/processTargets/modifiers/HeadTailStage.ts b/packages/cursorless-engine/src/processTargets/modifiers/HeadTailStage.ts index 3ee489bada..641dc43b71 100644 --- a/packages/cursorless-engine/src/processTargets/modifiers/HeadTailStage.ts +++ b/packages/cursorless-engine/src/processTargets/modifiers/HeadTailStage.ts @@ -74,11 +74,11 @@ class BoundedLineStage implements ModifierStage { run(target: Target, options: ModifierStateOptions): Target[] { const line = this.getContainingLine(target, options); - const pairInterior = this.getContainingPairInterior(target, options); + const interior = this.getContainingInterior(target, options); const intersection = - pairInterior != null - ? line.contentRange.intersection(pairInterior.contentRange) + interior != null + ? line.contentRange.intersection(interior.contentRange) : null; if (intersection == null || intersection.isEmpty) { @@ -94,15 +94,14 @@ class BoundedLineStage implements ModifierStage { ]; } - private getContainingPairInterior( + private getContainingInterior( target: Target, options: ModifierStateOptions, ): Target | undefined { try { return this.getContaining(target, options, { - type: "surroundingPairInterior", - delimiter: "any", - })[0]; + type: "interior", + }); } catch (error) { if (error instanceof NoContainingScopeError) { return undefined; @@ -117,16 +116,16 @@ class BoundedLineStage implements ModifierStage { ): Target { return this.getContaining(target, options, { type: "line", - })[0]; + }); } private getContaining( target: Target, options: ModifierStateOptions, scopeType: ScopeType, - ): Target[] { + ): Target { return this.modifierStageFactory .create({ type: "containingScope", scopeType }) - .run(target, options); + .run(target, options)[0]; } }