From 64f603350889dd605b83e60427d5789628ab02cb Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Sun, 26 Jan 2025 04:30:16 +0100 Subject: [PATCH 1/2] Fix bug with `"every token inside"` --- .../everyScope/changeEveryTokenInside.yml | 26 +++++++++++++++++++ .../modifiers/EveryScopeStage.ts | 3 ++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 data/fixtures/recorded/everyScope/changeEveryTokenInside.yml diff --git a/data/fixtures/recorded/everyScope/changeEveryTokenInside.yml b/data/fixtures/recorded/everyScope/changeEveryTokenInside.yml new file mode 100644 index 0000000000..8640f4bc1a --- /dev/null +++ b/data/fixtures/recorded/everyScope/changeEveryTokenInside.yml @@ -0,0 +1,26 @@ +languageId: plaintext +command: + version: 7 + spokenForm: change every token inside + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: token} + - {type: interiorOnly} + usePrePhraseSnapshot: false +initialState: + documentContents: "\"hello world\"" + selections: + - anchor: {line: 0, character: 1} + active: {line: 0, character: 1} + marks: {} +finalState: + documentContents: "\" \"" + selections: + - anchor: {line: 0, character: 1} + active: {line: 0, character: 1} + - anchor: {line: 0, character: 2} + active: {line: 0, character: 2} diff --git a/packages/cursorless-engine/src/processTargets/modifiers/EveryScopeStage.ts b/packages/cursorless-engine/src/processTargets/modifiers/EveryScopeStage.ts index 32f78df186..1f529138d7 100644 --- a/packages/cursorless-engine/src/processTargets/modifiers/EveryScopeStage.ts +++ b/packages/cursorless-engine/src/processTargets/modifiers/EveryScopeStage.ts @@ -61,7 +61,8 @@ export class EveryScopeStage implements ModifierStage { if ( scopes.length === 1 && - scopes[0].domain.contains(target.contentRange) + scopes[0].domain.contains(target.contentRange) && + !target.hasExplicitScopeType ) { // If the only scope that came back completely contains the input target // range, we treat the input as if it had no explicit range, expanding From 7d75e1a693eb29ba7c14710832bbfdd390b1e631 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Sun, 26 Jan 2025 04:32:50 +0100 Subject: [PATCH 2/2] Update tests --- .../everyScope/changeEveryTokenInside.yml | 4 +-- .../everyScope/changeLastTokenInside.yml | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 data/fixtures/recorded/everyScope/changeLastTokenInside.yml diff --git a/data/fixtures/recorded/everyScope/changeEveryTokenInside.yml b/data/fixtures/recorded/everyScope/changeEveryTokenInside.yml index 8640f4bc1a..c6437a1d5d 100644 --- a/data/fixtures/recorded/everyScope/changeEveryTokenInside.yml +++ b/data/fixtures/recorded/everyScope/changeEveryTokenInside.yml @@ -12,13 +12,13 @@ command: - {type: interiorOnly} usePrePhraseSnapshot: false initialState: - documentContents: "\"hello world\"" + documentContents: "'hello world'" selections: - anchor: {line: 0, character: 1} active: {line: 0, character: 1} marks: {} finalState: - documentContents: "\" \"" + documentContents: "' '" selections: - anchor: {line: 0, character: 1} active: {line: 0, character: 1} diff --git a/data/fixtures/recorded/everyScope/changeLastTokenInside.yml b/data/fixtures/recorded/everyScope/changeLastTokenInside.yml new file mode 100644 index 0000000000..5f1889eadb --- /dev/null +++ b/data/fixtures/recorded/everyScope/changeLastTokenInside.yml @@ -0,0 +1,26 @@ +languageId: plaintext +command: + version: 7 + spokenForm: change last token inside + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: ordinalScope + scopeType: {type: token} + start: -1 + length: 1 + - {type: interiorOnly} + usePrePhraseSnapshot: false +initialState: + documentContents: "'hello world'" + selections: + - anchor: {line: 0, character: 1} + active: {line: 0, character: 1} + marks: {} +finalState: + documentContents: "'hello '" + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7}