From 2cee5ac6df8bdc96e8a915f32338cb8337dc87e4 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Sun, 5 Jun 2022 09:37:10 +0200 Subject: [PATCH] Fixed regression in vertical range target --- src/processTargets/processTargets.ts | 14 ++++- .../chuckLineRiskSliceMade.yml | 51 +++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 src/test/suite/fixtures/recorded/compoundTargets/chuckLineRiskSliceMade.yml diff --git a/src/processTargets/processTargets.ts b/src/processTargets/processTargets.ts index bceb634892..922bd7371d 100644 --- a/src/processTargets/processTargets.ts +++ b/src/processTargets/processTargets.ts @@ -10,6 +10,8 @@ import { ProcessedTargetsContext } from "../typings/Types"; import { ensureSingleEditor } from "../util/targetUtils"; import getMarkStage from "./getMarkStage"; import getModifierStage from "./getModifierStage"; +import PlainTarget from "./targets/PlainTarget"; +import PositionTarget from "./targets/PositionTarget"; /** * Converts the abstract target descriptions provided by the user to a concrete @@ -144,7 +146,17 @@ function processVerticalRangeTarget( anchorTarget.contentRange.end.character ); - results.push(anchorTarget.withContentRange(contentRange)); + if (anchorTarget instanceof PositionTarget) { + results.push(anchorTarget.withContentRange(contentRange)); + } else { + results.push( + new PlainTarget({ + editor: anchorTarget.editor, + isReversed: anchorTarget.isReversed, + contentRange, + }) + ); + } if (i === activeLine) { return results; diff --git a/src/test/suite/fixtures/recorded/compoundTargets/chuckLineRiskSliceMade.yml b/src/test/suite/fixtures/recorded/compoundTargets/chuckLineRiskSliceMade.yml new file mode 100644 index 0000000000..426a7ef371 --- /dev/null +++ b/src/test/suite/fixtures/recorded/compoundTargets/chuckLineRiskSliceMade.yml @@ -0,0 +1,51 @@ +languageId: plaintext +command: + spokenForm: chuck line risk slice made + version: 2 + targets: + - type: range + anchor: + type: primitive + mark: {type: decoratedSymbol, symbolColor: default, character: r} + modifiers: + - type: containingScope + scopeType: {type: line} + active: + type: primitive + mark: {type: decoratedSymbol, symbolColor: default, character: m} + excludeAnchor: false + excludeActive: false + rangeType: vertical + usePrePhraseSnapshot: true + action: {name: remove} +initialState: + documentContents: |- + short + something longer + something even longer + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: + default.r: + start: {line: 0, character: 0} + end: {line: 0, character: 5} + default.m: + start: {line: 2, character: 0} + end: {line: 2, character: 9} +finalState: + documentContents: |- + + hing longer + hing even longer + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + thatMark: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} + - anchor: {line: 2, character: 0} + active: {line: 2, character: 0} +fullTargets: [{type: range, excludeAnchor: false, excludeActive: false, rangeType: vertical, anchor: {type: primitive, mark: {type: decoratedSymbol, symbolColor: default, character: r}, modifiers: &ref_0 [{type: containingScope, scopeType: {type: line}}]}, active: {type: primitive, mark: {type: decoratedSymbol, symbolColor: default, character: m}, modifiers: *ref_0}}]