From e618f57ec84c166075a294db58f11b3991616530 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 11:02:41 +0200 Subject: [PATCH 01/12] Focus editor on initial setup for recorded tests --- packages/lib-common/src/types/TextEditor.ts | 3 +++ packages/lib-node-common/src/runRecordedTest.ts | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/packages/lib-common/src/types/TextEditor.ts b/packages/lib-common/src/types/TextEditor.ts index 56b688cd08..9f6c3092d7 100644 --- a/packages/lib-common/src/types/TextEditor.ts +++ b/packages/lib-common/src/types/TextEditor.ts @@ -52,8 +52,11 @@ export interface TextEditor { } export interface SetSelectionsOpts { + /** Whether to focus the editor after setting the selections. Defaults to `false`. */ focusEditor?: boolean; + /** Whether to reveal the range after setting the selections. Defaults to `true`. */ revealRange?: boolean; + /** Whether to highlight the word after setting the selections. Defaults to `false`. */ highlightWord?: boolean; } diff --git a/packages/lib-node-common/src/runRecordedTest.ts b/packages/lib-node-common/src/runRecordedTest.ts index 026c677843..5e6c1465d3 100644 --- a/packages/lib-node-common/src/runRecordedTest.ts +++ b/packages/lib-node-common/src/runRecordedTest.ts @@ -127,8 +127,13 @@ export async function runRecordedTest({ await sleepWithBackoff(fixture.postEditorOpenSleepTimeMs); } + // In VS Code, assigning selections only updates the extension host immediately. + // Awaiting the focus command also gives the UI a round trip to process the + // initial selections, so its notification cannot overwrite the command's + // selections later (eg in giveBlueQuoteAndQuote). await editor.setSelections( fixture.initialState.selections.map(createSelection), + { focusEditor: true, revealRange: false }, ); for (const storedTargetKey of storedTargetKeys) { From eaf49c72e6059be8bbad0b14b3be4a17d16e703e Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 11:05:50 +0200 Subject: [PATCH 02/12] Update comment --- packages/lib-common/src/types/TextEditor.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/lib-common/src/types/TextEditor.ts b/packages/lib-common/src/types/TextEditor.ts index 9f6c3092d7..b0974d6525 100644 --- a/packages/lib-common/src/types/TextEditor.ts +++ b/packages/lib-common/src/types/TextEditor.ts @@ -52,11 +52,17 @@ export interface TextEditor { } export interface SetSelectionsOpts { - /** Whether to focus the editor after setting the selections. Defaults to `false`. */ + /** Whether to focus the editor. Defaults to `false`. */ focusEditor?: boolean; - /** Whether to reveal the range after setting the selections. Defaults to `true`. */ + /** + * Whether to reveal the range after setting the selections. Defaults to `true`. + * Only takes effect when `focusEditor` is `true`. + */ revealRange?: boolean; - /** Whether to highlight the word after setting the selections. Defaults to `false`. */ + /** + * Whether to highlight the word after setting the selections. Defaults to `false`. + * Only takes effect when `focusEditor` is `true`. + */ highlightWord?: boolean; } From 0a0851c93def3472d72909b49453c09b53508982 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 12:02:17 +0200 Subject: [PATCH 03/12] postCommandSleepTimeMs --- resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml b/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml index 5fe1d23e90..6bb90e713c 100644 --- a/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml +++ b/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml @@ -1,4 +1,6 @@ languageId: typescript +# Allow VS Code's selection notifications to settle before reading the final state. +postCommandSleepTimeMs: 400 command: version: 7 spokenForm: give blue double quote and double quote From 54024b8f605a03e76b1f1c795ff6c115d2fd64e7 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 12:06:38 +0200 Subject: [PATCH 04/12] Remove comment --- resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml b/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml index 6bb90e713c..c70c40b480 100644 --- a/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml +++ b/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml @@ -1,5 +1,4 @@ languageId: typescript -# Allow VS Code's selection notifications to settle before reading the final state. postCommandSleepTimeMs: 400 command: version: 7 From b259a32b77c996a96bc7e85b05cb0c885f4b6032 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 12:23:41 +0200 Subject: [PATCH 05/12] Changes sleep --- resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml b/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml index c70c40b480..694be336ab 100644 --- a/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml +++ b/resources/fixtures/recorded/actions/giveBlueQuoteAndQuote.yml @@ -1,5 +1,5 @@ languageId: typescript -postCommandSleepTimeMs: 400 +postCommandSleepTimeMs: 200 command: version: 7 spokenForm: give blue double quote and double quote From 95c034762df3a1b307fd7f277d41fc1a17f9e0ee Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 13:07:05 +0200 Subject: [PATCH 06/12] More fixes --- packages/lib-common/src/types/HatTokenMap.ts | 13 ++- .../lib-engine/src/core/HatAllocator.test.ts | 108 ++++++++++++++++++ packages/lib-engine/src/core/HatAllocator.ts | 16 ++- .../lib-engine/src/core/HatTokenMapImpl.ts | 5 +- .../lib-node-common/src/runRecordedTest.ts | 3 + 5 files changed, 139 insertions(+), 6 deletions(-) create mode 100644 packages/lib-engine/src/core/HatAllocator.test.ts diff --git a/packages/lib-common/src/types/HatTokenMap.ts b/packages/lib-common/src/types/HatTokenMap.ts index 8076a97922..317e89099e 100644 --- a/packages/lib-common/src/types/HatTokenMap.ts +++ b/packages/lib-common/src/types/HatTokenMap.ts @@ -7,10 +7,21 @@ import type { Token } from "./Token"; * Maps from (hatStyle, character) pairs to tokens */ export interface HatTokenMap { - allocateHats(forceTokenHats?: TokenHat[]): Promise; + allocateHats( + forceTokenHats?: TokenHat[], + options?: HatAllocationOptions, + ): Promise; getReadableMap(usePrePhraseSnapshot: boolean): Promise; } +export interface HatAllocationOptions { + /** + * Whether to preserve previous hat assignments. Defaults to `true`. + * Set to `false` to initialize an allocation independently of its history. + */ + preserveExistingHats?: boolean; +} + export interface TokenHat { hatStyle: HatStyleName; grapheme: string; diff --git a/packages/lib-engine/src/core/HatAllocator.test.ts b/packages/lib-engine/src/core/HatAllocator.test.ts new file mode 100644 index 0000000000..007aa22917 --- /dev/null +++ b/packages/lib-engine/src/core/HatAllocator.test.ts @@ -0,0 +1,108 @@ +import assert from "node:assert/strict"; +import type { Hats, HatStyleMap, TokenHat } from "@cursorless/lib-common"; +import { + FakeIDE, + HatStability, + InMemoryTextEditor, + Notifier, + Range, + tokenHatToPlainObject, +} from "@cursorless/lib-common"; +import { TokenGraphemeSplitter } from "../tokenGraphemeSplitter"; +import { HatAllocator } from "./HatAllocator"; +import { IndividualHatMap } from "./IndividualHatMap"; +import { RangeUpdater } from "./updateSelections/RangeUpdater"; + +suite("HatAllocator", () => { + test("initial allocation is independent of earlier hat assignments", async () => { + const ide = new HatTestIDE(); + ide.configuration.mockConfiguration("experimental", { + ...ide.configuration.getOwnConfiguration("experimental"), + hatStability: HatStability.stable, + }); + const splitter = new TokenGraphemeSplitter(ide); + const rangeUpdater = new RangeUpdater(ide); + const map = new IndividualHatMap(ide, splitter, rangeUpdater); + const hats: Hats = { + isEnabled: true, + enabledHatStyles: { default: { penalty: 0 }, blue: { penalty: 1 } }, + onDidChangeEnabledHatStyles: new Notifier<[HatStyleMap]>() + .registerListener, + onDidChangeIsEnabled: new Notifier<[boolean]>().registerListener, + setHatRanges: () => Promise.resolve(), + }; + const allocator = new HatAllocator(ide, splitter, hats, { + getActiveMap: () => Promise.resolve(map), + }); + const forcedWorld: TokenHat = { + hatStyle: "default", + grapheme: "w", + token: { + editor: ide.editor, + range: new Range(0, 6, 0, 11), + offsets: { start: 6, end: 11 }, + text: "world", + }, + hatRange: new Range(0, 6, 0, 7), + }; + const previousHello: TokenHat = { + hatStyle: "blue", + grapheme: "h", + token: { + editor: ide.editor, + range: new Range(0, 0, 0, 5), + offsets: { start: 0, end: 5 }, + text: "hello", + }, + hatRange: new Range(0, 0, 0, 1), + }; + const snapshot = () => + map + .getTokenHats(ide.editor) + .map(tokenHatToPlainObject) + .toSorted( + (a, b) => a.hatRange.start.character - b.hatRange.start.character, + ); + + try { + // Establish the expected allocation with no earlier editor events. + await allocator.allocateHats([forcedWorld]); + const expected = snapshot(); + + // Simulate an allocation that occurred before fixture initialization. + await allocator.allocateHats([previousHello]); + await allocator.allocateHats([forcedWorld]); + assert.notDeepEqual(snapshot(), expected); + assert.ok(map.getToken("blue", "h"), "Normal allocation preserves hats"); + + await allocator.allocateHats([forcedWorld], { + preserveExistingHats: false, + }); + assert.deepEqual(snapshot(), expected); + assert.ok(map.getToken("default", "w"), "Forced hats are still applied"); + + // A subsequent automatic allocation should preserve the initialized hats. + await allocator.allocateHats(); + assert.deepEqual(snapshot(), expected); + } finally { + map.dispose(); + rangeUpdater.dispose(); + ide.exit(); + } + }); +}); + +class HatTestIDE extends FakeIDE { + readonly editor: InMemoryTextEditor = new InMemoryTextEditor({ + ide: this, + content: "hello world", + }); + + get activeTextEditor() { + return this.editor; + } + + get visibleTextEditors() { + return [this.editor]; + } +} diff --git a/packages/lib-engine/src/core/HatAllocator.ts b/packages/lib-engine/src/core/HatAllocator.ts index 38b564ff3e..164c35a552 100644 --- a/packages/lib-engine/src/core/HatAllocator.ts +++ b/packages/lib-engine/src/core/HatAllocator.ts @@ -1,4 +1,10 @@ -import type { Disposable, Hats, IDE, TokenHat } from "@cursorless/lib-common"; +import type { + Disposable, + HatAllocationOptions, + Hats, + IDE, + TokenHat, +} from "@cursorless/lib-common"; import type { TokenGraphemeSplitter } from "../tokenGraphemeSplitter"; import { allocateHats } from "../util/allocateHats"; import { DecorationDebouncer } from "../util/DecorationDebouncer"; @@ -54,8 +60,12 @@ export class HatAllocator { * * @param forceTokenHats If supplied, force the allocator to use these hats * for the given tokens. This is used for the tutorial, and for testing. + * @param options Controls whether to preserve previous hat assignments. */ - async allocateHats(forceTokenHats?: TokenHat[]) { + async allocateHats( + forceTokenHats?: TokenHat[], + { preserveExistingHats = true }: HatAllocationOptions = {}, + ) { const activeMap = await this.context.getActiveMap(); // Forced graphemes won't have been normalized @@ -70,7 +80,7 @@ export class HatAllocator { tokenGraphemeSplitter: this.tokenGraphemeSplitter, enabledHatStyles: this.hats.enabledHatStyles, forceTokenHats: normalizedForceTokenHats, - oldTokenHats: activeMap.getStaleTokenHats(), + oldTokenHats: preserveExistingHats ? activeMap.getStaleTokenHats() : [], hatStability: this.ide.configuration.getOwnConfiguration( "experimental.hatStability", ), diff --git a/packages/lib-engine/src/core/HatTokenMapImpl.ts b/packages/lib-engine/src/core/HatTokenMapImpl.ts index ab0102b349..8178276914 100644 --- a/packages/lib-engine/src/core/HatTokenMapImpl.ts +++ b/packages/lib-engine/src/core/HatTokenMapImpl.ts @@ -1,5 +1,6 @@ import type { CommandServerApi, + HatAllocationOptions, HatTokenMap, Hats, IDE, @@ -67,8 +68,8 @@ export class HatTokenMapImpl implements HatTokenMap { * @param forceTokenHats If supplied, force the allocator to use these hats * for the given tokens. This is used for the tutorial, and for testing. */ - allocateHats(forceTokenHats?: TokenHat[]) { - return this.hatAllocator.allocateHats(forceTokenHats); + allocateHats(forceTokenHats?: TokenHat[], options?: HatAllocationOptions) { + return this.hatAllocator.allocateHats(forceTokenHats, options); } private async getActiveMap() { diff --git a/packages/lib-node-common/src/runRecordedTest.ts b/packages/lib-node-common/src/runRecordedTest.ts index 5e6c1465d3..ed8ae66d3c 100644 --- a/packages/lib-node-common/src/runRecordedTest.ts +++ b/packages/lib-node-common/src/runRecordedTest.ts @@ -148,8 +148,11 @@ export async function runRecordedTest({ commandServerApi.setFocusedElementType(fixture.focusedElementType); // Ensure that the expected hats are present + // Ignore any allocation triggered by editor setup so that initial hats do not + // depend on whether VS Code delivered those events before this point. await hatTokenMap.allocateHats( serializedMarksToTokenHats(fixture.initialState.marks, editor), + { preserveExistingHats: false }, ); await Promise.all( From 1950315b9bebcbf3021a8655b5edb6989a73bd0a Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 13:43:58 +0200 Subject: [PATCH 07/12] fix lint --- packages/lib-engine/src/core/HatAllocator.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/lib-engine/src/core/HatAllocator.ts b/packages/lib-engine/src/core/HatAllocator.ts index 164c35a552..f55e5c03e3 100644 --- a/packages/lib-engine/src/core/HatAllocator.ts +++ b/packages/lib-engine/src/core/HatAllocator.ts @@ -80,7 +80,9 @@ export class HatAllocator { tokenGraphemeSplitter: this.tokenGraphemeSplitter, enabledHatStyles: this.hats.enabledHatStyles, forceTokenHats: normalizedForceTokenHats, - oldTokenHats: preserveExistingHats ? activeMap.getStaleTokenHats() : [], + oldTokenHats: preserveExistingHats + ? activeMap.getStaleTokenHats() + : [], hatStability: this.ide.configuration.getOwnConfiguration( "experimental.hatStability", ), From d133899eaaacd5a404d7832eaa46dec182cb6f26 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 13:48:12 +0200 Subject: [PATCH 08/12] fix --- packages/lib-common/src/types/HatTokenMap.ts | 7 +- .../lib-engine/src/core/HatAllocator.test.ts | 178 ++++++++++-------- packages/lib-engine/src/core/HatAllocator.ts | 29 ++- .../lib-node-common/src/runRecordedTest.ts | 11 +- 4 files changed, 135 insertions(+), 90 deletions(-) diff --git a/packages/lib-common/src/types/HatTokenMap.ts b/packages/lib-common/src/types/HatTokenMap.ts index 317e89099e..2c11ca6aa4 100644 --- a/packages/lib-common/src/types/HatTokenMap.ts +++ b/packages/lib-common/src/types/HatTokenMap.ts @@ -1,4 +1,5 @@ import type { HatStyleName } from "../ide/types/hatStyles.types"; +import type { SimpleTokenHat } from "../util/toPlainObject"; import type { Range } from "./Range"; import type { TextEditor } from "./TextEditor"; import type { Token } from "./Token"; @@ -16,10 +17,10 @@ export interface HatTokenMap { export interface HatAllocationOptions { /** - * Whether to preserve previous hat assignments. Defaults to `true`. - * Set to `false` to initialize an allocation independently of its history. + * Recorded assignments to use as allocation history instead of the current + * map. Omit to preserve the current assignments. */ - preserveExistingHats?: boolean; + initialHats?: { editor: TextEditor; hats: readonly SimpleTokenHat[] }; } export interface TokenHat { diff --git a/packages/lib-engine/src/core/HatAllocator.test.ts b/packages/lib-engine/src/core/HatAllocator.test.ts index 007aa22917..f4e58a2ae2 100644 --- a/packages/lib-engine/src/core/HatAllocator.test.ts +++ b/packages/lib-engine/src/core/HatAllocator.test.ts @@ -1,102 +1,122 @@ import assert from "node:assert/strict"; -import type { Hats, HatStyleMap, TokenHat } from "@cursorless/lib-common"; +import path from "node:path"; +import type { Hats, HatStyleMap, SimpleTokenHat } from "@cursorless/lib-common"; import { FakeIDE, HatStability, InMemoryTextEditor, Notifier, - Range, + plainObjectToSelection, + serializedMarksToTokenHats, tokenHatToPlainObject, } from "@cursorless/lib-common"; +import { getCursorlessRepoRoot, loadFixture } from "@cursorless/lib-node-common"; import { TokenGraphemeSplitter } from "../tokenGraphemeSplitter"; import { HatAllocator } from "./HatAllocator"; import { IndividualHatMap } from "./IndividualHatMap"; import { RangeUpdater } from "./updateSelections/RangeUpdater"; suite("HatAllocator", () => { - test("initial allocation is independent of earlier hat assignments", async () => { - const ide = new HatTestIDE(); - ide.configuration.mockConfiguration("experimental", { - ...ide.configuration.getOwnConfiguration("experimental"), - hatStability: HatStability.stable, - }); - const splitter = new TokenGraphemeSplitter(ide); - const rangeUpdater = new RangeUpdater(ide); - const map = new IndividualHatMap(ide, splitter, rangeUpdater); - const hats: Hats = { - isEnabled: true, - enabledHatStyles: { default: { penalty: 0 }, blue: { penalty: 1 } }, - onDidChangeEnabledHatStyles: new Notifier<[HatStyleMap]>() - .registerListener, - onDidChangeIsEnabled: new Notifier<[boolean]>().registerListener, - setHatRanges: () => Promise.resolve(), - }; - const allocator = new HatAllocator(ide, splitter, hats, { - getActiveMap: () => Promise.resolve(map), - }); - const forcedWorld: TokenHat = { - hatStyle: "default", - grapheme: "w", - token: { - editor: ide.editor, - range: new Range(0, 6, 0, 11), - offsets: { start: 6, end: 11 }, - text: "world", - }, - hatRange: new Range(0, 6, 0, 7), - }; - const previousHello: TokenHat = { - hatStyle: "blue", - grapheme: "h", - token: { - editor: ide.editor, - range: new Range(0, 0, 0, 5), - offsets: { start: 0, end: 5 }, - text: "hello", - }, - hatRange: new Range(0, 0, 0, 1), - }; - const snapshot = () => - map - .getTokenHats(ide.editor) - .map(tokenHatToPlainObject) - .toSorted( - (a, b) => a.hatRange.start.character - b.hatRange.start.character, - ); - - try { - // Establish the expected allocation with no earlier editor events. - await allocator.allocateHats([forcedWorld]); - const expected = snapshot(); + for (const fixtureName of [ + "docs/actions/clearAndSetSelection", + "tutorial/introduction/changeSit", + "tutorial/introduction/chuckLineOdd", + ]) { + test(`restores recorded allocation history: ${fixtureName}`, async () => { + const fixture = await loadFixture( + path.join( + getCursorlessRepoRoot(), + "resources/fixtures/recorded", + `${fixtureName}.yml`, + ), + ); + const initialState = fixture.initialState; + assert.ok(initialState.hatTokenMap); + const recordedHats = initialState.hatTokenMap; + const ide = new HatTestIDE( + initialState.documentContents, + fixture.languageId, + ); + ide.configuration.mockConfiguration("experimental", { + ...ide.configuration.getOwnConfiguration("experimental"), + hatStability: HatStability.stable, + }); + await ide.editor.setSelections( + initialState.selections.map(plainObjectToSelection), + ); + const splitter = new TokenGraphemeSplitter(ide); + const rangeUpdater = new RangeUpdater(ide); + const map = new IndividualHatMap(ide, splitter, rangeUpdater); + const hats: Hats = { + isEnabled: true, + enabledHatStyles: { + default: { penalty: 0 }, + blue: { penalty: 1 }, + green: { penalty: 1 }, + }, + onDidChangeEnabledHatStyles: new Notifier<[HatStyleMap]>() + .registerListener, + onDidChangeIsEnabled: new Notifier<[boolean]>().registerListener, + setHatRanges: () => Promise.resolve(), + }; + const allocator = new HatAllocator(ide, splitter, hats, { + getActiveMap: () => Promise.resolve(map), + }); + const forcedHats = serializedMarksToTokenHats( + initialState.marks, + ide.editor, + ); + const snapshot = () => + map.getTokenHats(ide.editor).map(tokenHatToPlainObject); - // Simulate an allocation that occurred before fixture initialization. - await allocator.allocateHats([previousHello]); - await allocator.allocateHats([forcedWorld]); - assert.notDeepEqual(snapshot(), expected); - assert.ok(map.getToken("blue", "h"), "Normal allocation preserves hats"); + try { + // A fresh allocation is not the recorded starting state: for example, + // clearAndSetSelection records a blue b despite default b being free. + await allocator.allocateHats(forcedHats); + if (fixtureName === "docs/actions/clearAndSetSelection") { + assert.notDeepEqual(snapshot(), recordedHats); + } - await allocator.allocateHats([forcedWorld], { - preserveExistingHats: false, - }); - assert.deepEqual(snapshot(), expected); - assert.ok(map.getToken("default", "w"), "Forced hats are still applied"); + // Test both an empty map and an allocation created by earlier events. + for (const hasEarlierAllocation of [false, true]) { + map.setTokenHats([]); + if (hasEarlierAllocation) { + await allocator.allocateHats(forcedHats); + } + await allocator.allocateHats(forcedHats, { + initialHats: { editor: ide.editor, hats: recordedHats }, + }); + assert.deepEqual(snapshot(), recordedHats); - // A subsequent automatic allocation should preserve the initialized hats. - await allocator.allocateHats(); - assert.deepEqual(snapshot(), expected); - } finally { - map.dispose(); - rangeUpdater.dispose(); - ide.exit(); - } - }); + // Normal automatic allocation preserves the restored assignments, + // although token ordering can change without the forced target ranks. + await allocator.allocateHats(); + assert.deepEqual(sortHats(snapshot()), sortHats(recordedHats)); + } + } finally { + map.dispose(); + rangeUpdater.dispose(); + ide.exit(); + } + }); + } }); +function sortHats(hats: readonly SimpleTokenHat[]) { + return hats.toSorted( + (a, b) => + a.hatRange.start.line - b.hatRange.start.line || + a.hatRange.start.character - b.hatRange.start.character, + ); +} + class HatTestIDE extends FakeIDE { - readonly editor: InMemoryTextEditor = new InMemoryTextEditor({ - ide: this, - content: "hello world", - }); + readonly editor: InMemoryTextEditor; + + constructor(content: string, languageId: string) { + super(); + this.editor = new InMemoryTextEditor({ ide: this, content, languageId }); + } get activeTextEditor() { return this.editor; diff --git a/packages/lib-engine/src/core/HatAllocator.ts b/packages/lib-engine/src/core/HatAllocator.ts index f55e5c03e3..7e08571b15 100644 --- a/packages/lib-engine/src/core/HatAllocator.ts +++ b/packages/lib-engine/src/core/HatAllocator.ts @@ -5,8 +5,10 @@ import type { IDE, TokenHat, } from "@cursorless/lib-common"; +import { plainObjectToRange } from "@cursorless/lib-common"; import type { TokenGraphemeSplitter } from "../tokenGraphemeSplitter"; import { allocateHats } from "../util/allocateHats"; +import { getTokensInRange } from "../util/allocateHats/getTokensInRange"; import { DecorationDebouncer } from "../util/DecorationDebouncer"; import type { IndividualHatMap } from "./IndividualHatMap"; @@ -60,13 +62,17 @@ export class HatAllocator { * * @param forceTokenHats If supplied, force the allocator to use these hats * for the given tokens. This is used for the tutorial, and for testing. - * @param options Controls whether to preserve previous hat assignments. + * @param options Optionally supplies recorded assignments as allocation history. */ async allocateHats( forceTokenHats?: TokenHat[], - { preserveExistingHats = true }: HatAllocationOptions = {}, + { initialHats }: HatAllocationOptions = {}, ) { const activeMap = await this.context.getActiveMap(); + const oldTokenHats = + initialHats == null + ? activeMap.getStaleTokenHats() + : this.restoreTokenHats(initialHats); // Forced graphemes won't have been normalized const normalizedForceTokenHats = forceTokenHats?.map((tokenHat) => ({ @@ -80,9 +86,7 @@ export class HatAllocator { tokenGraphemeSplitter: this.tokenGraphemeSplitter, enabledHatStyles: this.hats.enabledHatStyles, forceTokenHats: normalizedForceTokenHats, - oldTokenHats: preserveExistingHats - ? activeMap.getStaleTokenHats() - : [], + oldTokenHats, hatStability: this.ide.configuration.getOwnConfiguration( "experimental.hatStability", ), @@ -102,6 +106,21 @@ export class HatAllocator { ); } + private restoreTokenHats({ + editor, + hats, + }: NonNullable): TokenHat[] { + const tokens = getTokensInRange(this.ide, editor, editor.document.range); + return hats.map((hat) => { + const hatRange = plainObjectToRange(hat.hatRange); + const token = tokens.find((token) => token.range.contains(hatRange)); + if (token == null) { + throw new Error(`No token contains recorded hat at ${hatRange.concise()}`); + } + return { ...hat, hatRange, token }; + }); + } + dispose() { for (const disposable of this.disposables) { disposable.dispose(); diff --git a/packages/lib-node-common/src/runRecordedTest.ts b/packages/lib-node-common/src/runRecordedTest.ts index ed8ae66d3c..b921d0f65e 100644 --- a/packages/lib-node-common/src/runRecordedTest.ts +++ b/packages/lib-node-common/src/runRecordedTest.ts @@ -148,11 +148,16 @@ export async function runRecordedTest({ commandServerApi.setFocusedElementType(fixture.focusedElementType); // Ensure that the expected hats are present - // Ignore any allocation triggered by editor setup so that initial hats do not - // depend on whether VS Code delivered those events before this point. + // Restore recorded allocation history rather than inheriting hats assigned + // by editor setup events. Recorded hats may intentionally use non-default colors. await hatTokenMap.allocateHats( serializedMarksToTokenHats(fixture.initialState.marks, editor), - { preserveExistingHats: false }, + { + initialHats: + fixture.initialState.hatTokenMap == null + ? undefined + : { editor, hats: fixture.initialState.hatTokenMap }, + }, ); await Promise.all( From f857c22c759cdae4fff1d2e0485211c85fa2c511 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 13:49:00 +0200 Subject: [PATCH 09/12] format --- packages/lib-engine/src/core/HatAllocator.test.ts | 5 ++++- packages/lib-engine/src/core/HatAllocator.ts | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/lib-engine/src/core/HatAllocator.test.ts b/packages/lib-engine/src/core/HatAllocator.test.ts index f4e58a2ae2..db015c4f7f 100644 --- a/packages/lib-engine/src/core/HatAllocator.test.ts +++ b/packages/lib-engine/src/core/HatAllocator.test.ts @@ -10,7 +10,10 @@ import { serializedMarksToTokenHats, tokenHatToPlainObject, } from "@cursorless/lib-common"; -import { getCursorlessRepoRoot, loadFixture } from "@cursorless/lib-node-common"; +import { + getCursorlessRepoRoot, + loadFixture, +} from "@cursorless/lib-node-common"; import { TokenGraphemeSplitter } from "../tokenGraphemeSplitter"; import { HatAllocator } from "./HatAllocator"; import { IndividualHatMap } from "./IndividualHatMap"; diff --git a/packages/lib-engine/src/core/HatAllocator.ts b/packages/lib-engine/src/core/HatAllocator.ts index 7e08571b15..274c6434fd 100644 --- a/packages/lib-engine/src/core/HatAllocator.ts +++ b/packages/lib-engine/src/core/HatAllocator.ts @@ -115,7 +115,9 @@ export class HatAllocator { const hatRange = plainObjectToRange(hat.hatRange); const token = tokens.find((token) => token.range.contains(hatRange)); if (token == null) { - throw new Error(`No token contains recorded hat at ${hatRange.concise()}`); + throw new Error( + `No token contains recorded hat at ${hatRange.concise()}`, + ); } return { ...hat, hatRange, token }; }); From 9b3a133370e55278a14946ede90d2585491de167 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 13:56:31 +0200 Subject: [PATCH 10/12] update fixtures --- packages/lib-common/src/types/HatTokenMap.ts | 7 +- .../lib-engine/src/core/HatAllocator.test.ts | 181 +++++++-------- packages/lib-engine/src/core/HatAllocator.ts | 31 +-- .../lib-node-common/src/runRecordedTest.ts | 11 +- .../docs/actions/clearAndSetSelection.yml | 4 +- .../recorded/docs/actions/insertCopyAfter.yml | 6 +- .../docs/actions/insertCopyAfter2.yml | 4 +- .../docs/actions/insertCopyBefore.yml | 6 +- .../docs/actions/insertCopyBefore2.yml | 4 +- .../docs/actions/insertEmptyLineAfter.yml | 4 +- .../docs/actions/insertEmptyLineAfter2.yml | 4 +- .../docs/actions/insertEmptyLineBefore.yml | 4 +- .../recorded/docs/actions/moveToTarget.yml | 4 +- .../docs/modifiers/relativeScope3.yml | 8 +- .../tutorial/basic-coding/bringStateUrge.yml | 160 ++++++------- .../basic-coding/chuckArgueBlueVest.yml | 164 +++++++------- .../tutorial/basic-coding/cloneStateInk.yml | 82 +++---- .../tutorial/basic-coding/dedentThis.yml | 204 ++++++++--------- .../tutorial/basic-coding/pourUrge.yml | 212 +++++++++--------- .../basic-coding/swapStringAirWithWhale.yml | 192 ++++++++-------- .../tutorial/introduction/chuckLineOdd.yml | 44 ++-- .../tutorial/introduction/postAir.yml | 12 +- .../tutorial/introduction/preUrge.yml | 96 ++++---- .../tutorial/introduction/takeCap.yml | 104 ++++----- .../introduction/takeHarpPastDrum.yml | 104 ++++----- 25 files changed, 801 insertions(+), 851 deletions(-) diff --git a/packages/lib-common/src/types/HatTokenMap.ts b/packages/lib-common/src/types/HatTokenMap.ts index 2c11ca6aa4..317e89099e 100644 --- a/packages/lib-common/src/types/HatTokenMap.ts +++ b/packages/lib-common/src/types/HatTokenMap.ts @@ -1,5 +1,4 @@ import type { HatStyleName } from "../ide/types/hatStyles.types"; -import type { SimpleTokenHat } from "../util/toPlainObject"; import type { Range } from "./Range"; import type { TextEditor } from "./TextEditor"; import type { Token } from "./Token"; @@ -17,10 +16,10 @@ export interface HatTokenMap { export interface HatAllocationOptions { /** - * Recorded assignments to use as allocation history instead of the current - * map. Omit to preserve the current assignments. + * Whether to preserve previous hat assignments. Defaults to `true`. + * Set to `false` to initialize an allocation independently of its history. */ - initialHats?: { editor: TextEditor; hats: readonly SimpleTokenHat[] }; + preserveExistingHats?: boolean; } export interface TokenHat { diff --git a/packages/lib-engine/src/core/HatAllocator.test.ts b/packages/lib-engine/src/core/HatAllocator.test.ts index db015c4f7f..007aa22917 100644 --- a/packages/lib-engine/src/core/HatAllocator.test.ts +++ b/packages/lib-engine/src/core/HatAllocator.test.ts @@ -1,125 +1,102 @@ import assert from "node:assert/strict"; -import path from "node:path"; -import type { Hats, HatStyleMap, SimpleTokenHat } from "@cursorless/lib-common"; +import type { Hats, HatStyleMap, TokenHat } from "@cursorless/lib-common"; import { FakeIDE, HatStability, InMemoryTextEditor, Notifier, - plainObjectToSelection, - serializedMarksToTokenHats, + Range, tokenHatToPlainObject, } from "@cursorless/lib-common"; -import { - getCursorlessRepoRoot, - loadFixture, -} from "@cursorless/lib-node-common"; import { TokenGraphemeSplitter } from "../tokenGraphemeSplitter"; import { HatAllocator } from "./HatAllocator"; import { IndividualHatMap } from "./IndividualHatMap"; import { RangeUpdater } from "./updateSelections/RangeUpdater"; suite("HatAllocator", () => { - for (const fixtureName of [ - "docs/actions/clearAndSetSelection", - "tutorial/introduction/changeSit", - "tutorial/introduction/chuckLineOdd", - ]) { - test(`restores recorded allocation history: ${fixtureName}`, async () => { - const fixture = await loadFixture( - path.join( - getCursorlessRepoRoot(), - "resources/fixtures/recorded", - `${fixtureName}.yml`, - ), - ); - const initialState = fixture.initialState; - assert.ok(initialState.hatTokenMap); - const recordedHats = initialState.hatTokenMap; - const ide = new HatTestIDE( - initialState.documentContents, - fixture.languageId, - ); - ide.configuration.mockConfiguration("experimental", { - ...ide.configuration.getOwnConfiguration("experimental"), - hatStability: HatStability.stable, - }); - await ide.editor.setSelections( - initialState.selections.map(plainObjectToSelection), - ); - const splitter = new TokenGraphemeSplitter(ide); - const rangeUpdater = new RangeUpdater(ide); - const map = new IndividualHatMap(ide, splitter, rangeUpdater); - const hats: Hats = { - isEnabled: true, - enabledHatStyles: { - default: { penalty: 0 }, - blue: { penalty: 1 }, - green: { penalty: 1 }, - }, - onDidChangeEnabledHatStyles: new Notifier<[HatStyleMap]>() - .registerListener, - onDidChangeIsEnabled: new Notifier<[boolean]>().registerListener, - setHatRanges: () => Promise.resolve(), - }; - const allocator = new HatAllocator(ide, splitter, hats, { - getActiveMap: () => Promise.resolve(map), - }); - const forcedHats = serializedMarksToTokenHats( - initialState.marks, - ide.editor, - ); - const snapshot = () => - map.getTokenHats(ide.editor).map(tokenHatToPlainObject); + test("initial allocation is independent of earlier hat assignments", async () => { + const ide = new HatTestIDE(); + ide.configuration.mockConfiguration("experimental", { + ...ide.configuration.getOwnConfiguration("experimental"), + hatStability: HatStability.stable, + }); + const splitter = new TokenGraphemeSplitter(ide); + const rangeUpdater = new RangeUpdater(ide); + const map = new IndividualHatMap(ide, splitter, rangeUpdater); + const hats: Hats = { + isEnabled: true, + enabledHatStyles: { default: { penalty: 0 }, blue: { penalty: 1 } }, + onDidChangeEnabledHatStyles: new Notifier<[HatStyleMap]>() + .registerListener, + onDidChangeIsEnabled: new Notifier<[boolean]>().registerListener, + setHatRanges: () => Promise.resolve(), + }; + const allocator = new HatAllocator(ide, splitter, hats, { + getActiveMap: () => Promise.resolve(map), + }); + const forcedWorld: TokenHat = { + hatStyle: "default", + grapheme: "w", + token: { + editor: ide.editor, + range: new Range(0, 6, 0, 11), + offsets: { start: 6, end: 11 }, + text: "world", + }, + hatRange: new Range(0, 6, 0, 7), + }; + const previousHello: TokenHat = { + hatStyle: "blue", + grapheme: "h", + token: { + editor: ide.editor, + range: new Range(0, 0, 0, 5), + offsets: { start: 0, end: 5 }, + text: "hello", + }, + hatRange: new Range(0, 0, 0, 1), + }; + const snapshot = () => + map + .getTokenHats(ide.editor) + .map(tokenHatToPlainObject) + .toSorted( + (a, b) => a.hatRange.start.character - b.hatRange.start.character, + ); - try { - // A fresh allocation is not the recorded starting state: for example, - // clearAndSetSelection records a blue b despite default b being free. - await allocator.allocateHats(forcedHats); - if (fixtureName === "docs/actions/clearAndSetSelection") { - assert.notDeepEqual(snapshot(), recordedHats); - } + try { + // Establish the expected allocation with no earlier editor events. + await allocator.allocateHats([forcedWorld]); + const expected = snapshot(); - // Test both an empty map and an allocation created by earlier events. - for (const hasEarlierAllocation of [false, true]) { - map.setTokenHats([]); - if (hasEarlierAllocation) { - await allocator.allocateHats(forcedHats); - } - await allocator.allocateHats(forcedHats, { - initialHats: { editor: ide.editor, hats: recordedHats }, - }); - assert.deepEqual(snapshot(), recordedHats); + // Simulate an allocation that occurred before fixture initialization. + await allocator.allocateHats([previousHello]); + await allocator.allocateHats([forcedWorld]); + assert.notDeepEqual(snapshot(), expected); + assert.ok(map.getToken("blue", "h"), "Normal allocation preserves hats"); - // Normal automatic allocation preserves the restored assignments, - // although token ordering can change without the forced target ranks. - await allocator.allocateHats(); - assert.deepEqual(sortHats(snapshot()), sortHats(recordedHats)); - } - } finally { - map.dispose(); - rangeUpdater.dispose(); - ide.exit(); - } - }); - } -}); + await allocator.allocateHats([forcedWorld], { + preserveExistingHats: false, + }); + assert.deepEqual(snapshot(), expected); + assert.ok(map.getToken("default", "w"), "Forced hats are still applied"); -function sortHats(hats: readonly SimpleTokenHat[]) { - return hats.toSorted( - (a, b) => - a.hatRange.start.line - b.hatRange.start.line || - a.hatRange.start.character - b.hatRange.start.character, - ); -} + // A subsequent automatic allocation should preserve the initialized hats. + await allocator.allocateHats(); + assert.deepEqual(snapshot(), expected); + } finally { + map.dispose(); + rangeUpdater.dispose(); + ide.exit(); + } + }); +}); class HatTestIDE extends FakeIDE { - readonly editor: InMemoryTextEditor; - - constructor(content: string, languageId: string) { - super(); - this.editor = new InMemoryTextEditor({ ide: this, content, languageId }); - } + readonly editor: InMemoryTextEditor = new InMemoryTextEditor({ + ide: this, + content: "hello world", + }); get activeTextEditor() { return this.editor; diff --git a/packages/lib-engine/src/core/HatAllocator.ts b/packages/lib-engine/src/core/HatAllocator.ts index 274c6434fd..f55e5c03e3 100644 --- a/packages/lib-engine/src/core/HatAllocator.ts +++ b/packages/lib-engine/src/core/HatAllocator.ts @@ -5,10 +5,8 @@ import type { IDE, TokenHat, } from "@cursorless/lib-common"; -import { plainObjectToRange } from "@cursorless/lib-common"; import type { TokenGraphemeSplitter } from "../tokenGraphemeSplitter"; import { allocateHats } from "../util/allocateHats"; -import { getTokensInRange } from "../util/allocateHats/getTokensInRange"; import { DecorationDebouncer } from "../util/DecorationDebouncer"; import type { IndividualHatMap } from "./IndividualHatMap"; @@ -62,17 +60,13 @@ export class HatAllocator { * * @param forceTokenHats If supplied, force the allocator to use these hats * for the given tokens. This is used for the tutorial, and for testing. - * @param options Optionally supplies recorded assignments as allocation history. + * @param options Controls whether to preserve previous hat assignments. */ async allocateHats( forceTokenHats?: TokenHat[], - { initialHats }: HatAllocationOptions = {}, + { preserveExistingHats = true }: HatAllocationOptions = {}, ) { const activeMap = await this.context.getActiveMap(); - const oldTokenHats = - initialHats == null - ? activeMap.getStaleTokenHats() - : this.restoreTokenHats(initialHats); // Forced graphemes won't have been normalized const normalizedForceTokenHats = forceTokenHats?.map((tokenHat) => ({ @@ -86,7 +80,9 @@ export class HatAllocator { tokenGraphemeSplitter: this.tokenGraphemeSplitter, enabledHatStyles: this.hats.enabledHatStyles, forceTokenHats: normalizedForceTokenHats, - oldTokenHats, + oldTokenHats: preserveExistingHats + ? activeMap.getStaleTokenHats() + : [], hatStability: this.ide.configuration.getOwnConfiguration( "experimental.hatStability", ), @@ -106,23 +102,6 @@ export class HatAllocator { ); } - private restoreTokenHats({ - editor, - hats, - }: NonNullable): TokenHat[] { - const tokens = getTokensInRange(this.ide, editor, editor.document.range); - return hats.map((hat) => { - const hatRange = plainObjectToRange(hat.hatRange); - const token = tokens.find((token) => token.range.contains(hatRange)); - if (token == null) { - throw new Error( - `No token contains recorded hat at ${hatRange.concise()}`, - ); - } - return { ...hat, hatRange, token }; - }); - } - dispose() { for (const disposable of this.disposables) { disposable.dispose(); diff --git a/packages/lib-node-common/src/runRecordedTest.ts b/packages/lib-node-common/src/runRecordedTest.ts index b921d0f65e..ed8ae66d3c 100644 --- a/packages/lib-node-common/src/runRecordedTest.ts +++ b/packages/lib-node-common/src/runRecordedTest.ts @@ -148,16 +148,11 @@ export async function runRecordedTest({ commandServerApi.setFocusedElementType(fixture.focusedElementType); // Ensure that the expected hats are present - // Restore recorded allocation history rather than inheriting hats assigned - // by editor setup events. Recorded hats may intentionally use non-default colors. + // Ignore any allocation triggered by editor setup so that initial hats do not + // depend on whether VS Code delivered those events before this point. await hatTokenMap.allocateHats( serializedMarksToTokenHats(fixture.initialState.marks, editor), - { - initialHats: - fixture.initialState.hatTokenMap == null - ? undefined - : { editor, hats: fixture.initialState.hatTokenMap }, - }, + { preserveExistingHats: false }, ); await Promise.all( diff --git a/resources/fixtures/recorded/docs/actions/clearAndSetSelection.yml b/resources/fixtures/recorded/docs/actions/clearAndSetSelection.yml index f29abe562f..2c126a234f 100644 --- a/resources/fixtures/recorded/docs/actions/clearAndSetSelection.yml +++ b/resources/fixtures/recorded/docs/actions/clearAndSetSelection.yml @@ -28,7 +28,7 @@ initialState: hatRange: start: {line: 0, character: 0} end: {line: 0, character: 1} - - hatStyle: blue + - hatStyle: default grapheme: b hatRange: start: {line: 0, character: 4} @@ -39,7 +39,7 @@ finalState: - anchor: {line: 0, character: 7} active: {line: 0, character: 7} hatTokenMap: - - hatStyle: blue + - hatStyle: default grapheme: b hatRange: start: {line: 0, character: 4} diff --git a/resources/fixtures/recorded/docs/actions/insertCopyAfter.yml b/resources/fixtures/recorded/docs/actions/insertCopyAfter.yml index 8e410bc4fb..a00a284c5c 100644 --- a/resources/fixtures/recorded/docs/actions/insertCopyAfter.yml +++ b/resources/fixtures/recorded/docs/actions/insertCopyAfter.yml @@ -28,7 +28,7 @@ initialState: hatRange: start: {line: 0, character: 0} end: {line: 0, character: 1} - - hatStyle: blue + - hatStyle: default grapheme: b hatRange: start: {line: 0, character: 4} @@ -46,7 +46,7 @@ finalState: hatRange: start: {line: 1, character: 0} end: {line: 1, character: 1} - - hatStyle: blue + - hatStyle: default grapheme: b hatRange: start: {line: 1, character: 4} @@ -61,7 +61,7 @@ finalState: hatRange: start: {line: 0, character: 0} end: {line: 0, character: 1} - - hatStyle: default + - hatStyle: blue grapheme: b hatRange: start: {line: 0, character: 4} diff --git a/resources/fixtures/recorded/docs/actions/insertCopyAfter2.yml b/resources/fixtures/recorded/docs/actions/insertCopyAfter2.yml index 4655f1d72e..1ecf5732f6 100644 --- a/resources/fixtures/recorded/docs/actions/insertCopyAfter2.yml +++ b/resources/fixtures/recorded/docs/actions/insertCopyAfter2.yml @@ -26,7 +26,7 @@ initialState: hatRange: start: {line: 0, character: 8} end: {line: 0, character: 9} - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} @@ -42,7 +42,7 @@ finalState: - anchor: {line: 0, character: 0} active: {line: 0, character: 0} hatTokenMap: - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} diff --git a/resources/fixtures/recorded/docs/actions/insertCopyBefore.yml b/resources/fixtures/recorded/docs/actions/insertCopyBefore.yml index 7d62afa93f..0277047d7c 100644 --- a/resources/fixtures/recorded/docs/actions/insertCopyBefore.yml +++ b/resources/fixtures/recorded/docs/actions/insertCopyBefore.yml @@ -23,7 +23,7 @@ initialState: hatRange: start: {line: 0, character: 8} end: {line: 0, character: 9} - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} @@ -41,7 +41,7 @@ finalState: - anchor: {line: 0, character: 0} active: {line: 0, character: 0} hatTokenMap: - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} @@ -56,7 +56,7 @@ finalState: hatRange: start: {line: 0, character: 8} end: {line: 0, character: 9} - - hatStyle: default + - hatStyle: blue grapheme: / hatRange: start: {line: 1, character: 0} diff --git a/resources/fixtures/recorded/docs/actions/insertCopyBefore2.yml b/resources/fixtures/recorded/docs/actions/insertCopyBefore2.yml index c25edd7691..4829b69fa8 100644 --- a/resources/fixtures/recorded/docs/actions/insertCopyBefore2.yml +++ b/resources/fixtures/recorded/docs/actions/insertCopyBefore2.yml @@ -26,7 +26,7 @@ initialState: hatRange: start: {line: 0, character: 8} end: {line: 0, character: 9} - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} @@ -42,7 +42,7 @@ finalState: - anchor: {line: 0, character: 0} active: {line: 0, character: 0} hatTokenMap: - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} diff --git a/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter.yml b/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter.yml index cf683d7832..40b547a4ee 100644 --- a/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter.yml +++ b/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter.yml @@ -23,7 +23,7 @@ initialState: hatRange: start: {line: 0, character: 8} end: {line: 0, character: 9} - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} @@ -40,7 +40,7 @@ finalState: - anchor: {line: 0, character: 0} active: {line: 0, character: 0} hatTokenMap: - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} diff --git a/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter2.yml b/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter2.yml index 652cea4cee..d133014b02 100644 --- a/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter2.yml +++ b/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter2.yml @@ -26,7 +26,7 @@ initialState: hatRange: start: {line: 0, character: 4} end: {line: 0, character: 5} - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} @@ -42,7 +42,7 @@ finalState: - anchor: {line: 0, character: 0} active: {line: 0, character: 0} hatTokenMap: - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} diff --git a/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore.yml b/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore.yml index 9bc7b5ba8a..8254c84988 100644 --- a/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore.yml +++ b/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore.yml @@ -23,7 +23,7 @@ initialState: hatRange: start: {line: 0, character: 8} end: {line: 0, character: 9} - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 0, character: 0} @@ -41,7 +41,7 @@ finalState: - anchor: {line: 1, character: 0} active: {line: 1, character: 0} hatTokenMap: - - hatStyle: blue + - hatStyle: default grapheme: / hatRange: start: {line: 1, character: 0} diff --git a/resources/fixtures/recorded/docs/actions/moveToTarget.yml b/resources/fixtures/recorded/docs/actions/moveToTarget.yml index 15e4a968e4..a34408093e 100644 --- a/resources/fixtures/recorded/docs/actions/moveToTarget.yml +++ b/resources/fixtures/recorded/docs/actions/moveToTarget.yml @@ -29,7 +29,7 @@ initialState: hatRange: start: {line: 0, character: 0} end: {line: 0, character: 1} - - hatStyle: blue + - hatStyle: default grapheme: b hatRange: start: {line: 0, character: 4} @@ -50,7 +50,7 @@ finalState: hatRange: start: {line: 0, character: 1} end: {line: 0, character: 2} - - hatStyle: blue + - hatStyle: default grapheme: b hatRange: start: {line: 0, character: 7} diff --git a/resources/fixtures/recorded/docs/modifiers/relativeScope3.yml b/resources/fixtures/recorded/docs/modifiers/relativeScope3.yml index 0bebff729c..93c1dba3f7 100644 --- a/resources/fixtures/recorded/docs/modifiers/relativeScope3.yml +++ b/resources/fixtures/recorded/docs/modifiers/relativeScope3.yml @@ -30,7 +30,7 @@ initialState: hatRange: start: {line: 0, character: 0} end: {line: 0, character: 1} - - hatStyle: blue + - hatStyle: default grapheme: "," hatRange: start: {line: 0, character: 2} @@ -40,7 +40,7 @@ initialState: hatRange: start: {line: 0, character: 4} end: {line: 0, character: 5} - - hatStyle: default + - hatStyle: blue grapheme: "," hatRange: start: {line: 0, character: 5} @@ -71,7 +71,7 @@ finalState: hatRange: start: {line: 0, character: 7} end: {line: 0, character: 8} - - hatStyle: default + - hatStyle: blue grapheme: "," hatRange: start: {line: 0, character: 5} @@ -81,7 +81,7 @@ finalState: hatRange: start: {line: 0, character: 4} end: {line: 0, character: 5} - - hatStyle: blue + - hatStyle: default grapheme: "," hatRange: start: {line: 0, character: 2} diff --git a/resources/fixtures/recorded/tutorial/basic-coding/bringStateUrge.yml b/resources/fixtures/recorded/tutorial/basic-coding/bringStateUrge.yml index 2e478d7518..8d572ac3a4 100644 --- a/resources/fixtures/recorded/tutorial/basic-coding/bringStateUrge.yml +++ b/resources/fixtures/recorded/tutorial/basic-coding/bringStateUrge.yml @@ -43,7 +43,7 @@ initialState: hatRange: start: {line: 11, character: 11} end: {line: 11, character: 12} - - hatStyle: green + - hatStyle: default grapheme: "\"" hatRange: start: {line: 11, character: 15} @@ -53,7 +53,7 @@ initialState: hatRange: start: {line: 11, character: 17} end: {line: 11, character: 18} - - hatStyle: red + - hatStyle: blue grapheme: "\"" hatRange: start: {line: 11, character: 21} @@ -73,7 +73,7 @@ initialState: hatRange: start: {line: 10, character: 13} end: {line: 10, character: 14} - - hatStyle: pink + - hatStyle: green grapheme: "\"" hatRange: start: {line: 10, character: 16} @@ -83,7 +83,7 @@ initialState: hatRange: start: {line: 10, character: 18} end: {line: 10, character: 19} - - hatStyle: yellow + - hatStyle: red grapheme: "\"" hatRange: start: {line: 10, character: 22} @@ -94,10 +94,10 @@ initialState: start: {line: 10, character: 23} end: {line: 10, character: 24} - hatStyle: default - grapheme: r + grapheme: n hatRange: - start: {line: 9, character: 12} - end: {line: 9, character: 13} + start: {line: 9, character: 13} + end: {line: 9, character: 14} - hatStyle: default grapheme: _ hatRange: @@ -108,7 +108,7 @@ initialState: hatRange: start: {line: 15, character: 11} end: {line: 15, character: 12} - - hatStyle: blue + - hatStyle: pink grapheme: "\"" hatRange: start: {line: 15, character: 12} @@ -118,16 +118,16 @@ initialState: hatRange: start: {line: 15, character: 15} end: {line: 15, character: 16} - - hatStyle: default + - hatStyle: yellow grapheme: "\"" hatRange: start: {line: 9, character: 15} end: {line: 9, character: 16} - hatStyle: default - grapheme: t + grapheme: e hatRange: - start: {line: 9, character: 19} - end: {line: 9, character: 20} + start: {line: 9, character: 20} + end: {line: 9, character: 21} - hatStyle: default grapheme: ) hatRange: @@ -138,21 +138,21 @@ initialState: hatRange: start: {line: 8, character: 4} end: {line: 8, character: 5} - - hatStyle: blue - grapheme: o + - hatStyle: default + grapheme: r hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} + start: {line: 8, character: 11} + end: {line: 8, character: 12} - hatStyle: blue grapheme: "=" hatRange: start: {line: 8, character: 13} end: {line: 8, character: 14} - hatStyle: default - grapheme: c + grapheme: k hatRange: - start: {line: 8, character: 20} - end: {line: 8, character: 21} + start: {line: 8, character: 21} + end: {line: 8, character: 22} - hatStyle: blue grapheme: ":" hatRange: @@ -173,7 +173,7 @@ initialState: hatRange: start: {line: 7, character: 16} end: {line: 7, character: 17} - - hatStyle: blue + - hatStyle: default grapheme: c hatRange: start: {line: 7, character: 17} @@ -189,16 +189,16 @@ initialState: start: {line: 7, character: 23} end: {line: 7, character: 24} - hatStyle: default - grapheme: n + grapheme: t hatRange: - start: {line: 4, character: 11} - end: {line: 4, character: 12} + start: {line: 4, character: 12} + end: {line: 4, character: 13} - hatStyle: green grapheme: ( hatRange: start: {line: 4, character: 13} end: {line: 4, character: 14} - - hatStyle: green + - hatStyle: blue grapheme: o hatRange: start: {line: 4, character: 15} @@ -238,7 +238,7 @@ initialState: hatRange: start: {line: 2, character: 26} end: {line: 2, character: 27} - - hatStyle: red + - hatStyle: green grapheme: o hatRange: start: {line: 2, character: 28} @@ -258,11 +258,11 @@ initialState: hatRange: start: {line: 1, character: 5} end: {line: 1, character: 6} - - hatStyle: green - grapheme: v + - hatStyle: blue + grapheme: n hatRange: - start: {line: 1, character: 9} - end: {line: 1, character: 10} + start: {line: 1, character: 8} + end: {line: 1, character: 9} - hatStyle: pink grapheme: ":" hatRange: @@ -273,17 +273,17 @@ initialState: hatRange: start: {line: 0, character: 9} end: {line: 0, character: 10} - - hatStyle: blue - grapheme: e + - hatStyle: green + grapheme: f hatRange: - start: {line: 0, character: 1} - end: {line: 0, character: 2} + start: {line: 0, character: 2} + end: {line: 0, character: 3} - hatStyle: yellow grapheme: ( hatRange: start: {line: 0, character: 15} end: {line: 0, character: 16} - - hatStyle: pink + - hatStyle: red grapheme: o hatRange: start: {line: 0, character: 17} @@ -293,11 +293,11 @@ initialState: hatRange: start: {line: 0, character: 21} end: {line: 0, character: 22} - - hatStyle: blue - grapheme: n + - hatStyle: green + grapheme: v hatRange: - start: {line: 0, character: 24} - end: {line: 0, character: 25} + start: {line: 0, character: 25} + end: {line: 0, character: 26} - hatStyle: green grapheme: "=" hatRange: @@ -340,22 +340,22 @@ finalState: - anchor: {line: 12, character: 18} active: {line: 12, character: 18} hatTokenMap: - - hatStyle: blue + - hatStyle: pink grapheme: "\"" hatRange: start: {line: 12, character: 17} end: {line: 12, character: 18} - hatStyle: default - grapheme: k + grapheme: b hatRange: - start: {line: 12, character: 16} - end: {line: 12, character: 17} - - hatStyle: default + start: {line: 12, character: 12} + end: {line: 12, character: 13} + - hatStyle: yellow grapheme: "\"" hatRange: start: {line: 12, character: 11} end: {line: 12, character: 12} - - hatStyle: default + - hatStyle: blue grapheme: e hatRange: start: {line: 12, character: 5} @@ -365,12 +365,12 @@ finalState: hatRange: start: {line: 11, character: 17} end: {line: 11, character: 18} - - hatStyle: green + - hatStyle: default grapheme: "\"" hatRange: start: {line: 11, character: 15} end: {line: 11, character: 16} - - hatStyle: red + - hatStyle: blue grapheme: "\"" hatRange: start: {line: 11, character: 21} @@ -385,12 +385,12 @@ finalState: hatRange: start: {line: 10, character: 18} end: {line: 10, character: 19} - - hatStyle: pink + - hatStyle: green grapheme: "\"" hatRange: start: {line: 10, character: 16} end: {line: 10, character: 17} - - hatStyle: yellow + - hatStyle: red grapheme: "\"" hatRange: start: {line: 10, character: 22} @@ -421,10 +421,10 @@ finalState: start: {line: 15, character: 19} end: {line: 15, character: 20} - hatStyle: default - grapheme: t + grapheme: e hatRange: - start: {line: 9, character: 19} - end: {line: 9, character: 20} + start: {line: 9, character: 20} + end: {line: 9, character: 21} - hatStyle: default grapheme: a hatRange: @@ -436,20 +436,20 @@ finalState: start: {line: 15, character: 11} end: {line: 15, character: 12} - hatStyle: default - grapheme: r + grapheme: n hatRange: - start: {line: 9, character: 12} - end: {line: 9, character: 13} + start: {line: 9, character: 13} + end: {line: 9, character: 14} - hatStyle: default grapheme: _ hatRange: start: {line: 15, character: 5} end: {line: 15, character: 6} - hatStyle: default - grapheme: c + grapheme: k hatRange: - start: {line: 8, character: 20} - end: {line: 8, character: 21} + start: {line: 8, character: 21} + end: {line: 8, character: 22} - hatStyle: blue grapheme: "=" hatRange: @@ -460,17 +460,17 @@ finalState: hatRange: start: {line: 8, character: 23} end: {line: 8, character: 24} - - hatStyle: blue - grapheme: o + - hatStyle: default + grapheme: r hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} + start: {line: 8, character: 11} + end: {line: 8, character: 12} - hatStyle: default grapheme: i hatRange: start: {line: 8, character: 4} end: {line: 8, character: 5} - - hatStyle: blue + - hatStyle: default grapheme: c hatRange: start: {line: 7, character: 17} @@ -505,7 +505,7 @@ finalState: hatRange: start: {line: 4, character: 19} end: {line: 4, character: 20} - - hatStyle: green + - hatStyle: blue grapheme: o hatRange: start: {line: 4, character: 15} @@ -516,10 +516,10 @@ finalState: start: {line: 4, character: 13} end: {line: 4, character: 14} - hatStyle: default - grapheme: n + grapheme: t hatRange: - start: {line: 4, character: 11} - end: {line: 4, character: 12} + start: {line: 4, character: 12} + end: {line: 4, character: 13} - hatStyle: red grapheme: ":" hatRange: @@ -545,7 +545,7 @@ finalState: hatRange: start: {line: 2, character: 26} end: {line: 2, character: 27} - - hatStyle: red + - hatStyle: green grapheme: o hatRange: start: {line: 2, character: 28} @@ -570,17 +570,17 @@ finalState: hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: green - grapheme: v + - hatStyle: blue + grapheme: n hatRange: - start: {line: 1, character: 9} - end: {line: 1, character: 10} + start: {line: 1, character: 8} + end: {line: 1, character: 9} - hatStyle: blue grapheme: f hatRange: start: {line: 1, character: 5} end: {line: 1, character: 6} - - hatStyle: pink + - hatStyle: red grapheme: o hatRange: start: {line: 0, character: 17} @@ -595,11 +595,11 @@ finalState: hatRange: start: {line: 0, character: 21} end: {line: 0, character: 22} - - hatStyle: blue - grapheme: n + - hatStyle: green + grapheme: v hatRange: - start: {line: 0, character: 24} - end: {line: 0, character: 25} + start: {line: 0, character: 25} + end: {line: 0, character: 26} - hatStyle: green grapheme: "=" hatRange: @@ -620,11 +620,11 @@ finalState: hatRange: start: {line: 0, character: 35} end: {line: 0, character: 36} - - hatStyle: blue - grapheme: e + - hatStyle: green + grapheme: f hatRange: - start: {line: 0, character: 1} - end: {line: 0, character: 2} + start: {line: 0, character: 2} + end: {line: 0, character: 3} - hatStyle: yellow grapheme: ":" hatRange: diff --git a/resources/fixtures/recorded/tutorial/basic-coding/chuckArgueBlueVest.yml b/resources/fixtures/recorded/tutorial/basic-coding/chuckArgueBlueVest.yml index fea727707b..6c48369ddf 100644 --- a/resources/fixtures/recorded/tutorial/basic-coding/chuckArgueBlueVest.yml +++ b/resources/fixtures/recorded/tutorial/basic-coding/chuckArgueBlueVest.yml @@ -42,37 +42,37 @@ initialState: hatRange: start: {line: 0, character: 25} end: {line: 0, character: 26} - - hatStyle: yellow + - hatStyle: default grapheme: o hatRange: start: {line: 12, character: 12} end: {line: 12, character: 13} - hatStyle: default - grapheme: e + grapheme: u hatRange: - start: {line: 12, character: 5} - end: {line: 12, character: 6} + start: {line: 12, character: 7} + end: {line: 12, character: 8} - hatStyle: default - grapheme: l + grapheme: a hatRange: - start: {line: 11, character: 17} - end: {line: 11, character: 18} - - hatStyle: green + start: {line: 11, character: 18} + end: {line: 11, character: 19} + - hatStyle: default grapheme: "\"" hatRange: start: {line: 11, character: 15} end: {line: 11, character: 16} - - hatStyle: red + - hatStyle: blue grapheme: "\"" hatRange: start: {line: 11, character: 21} end: {line: 11, character: 22} - hatStyle: default - grapheme: u + grapheme: e hatRange: - start: {line: 11, character: 11} - end: {line: 11, character: 12} - - hatStyle: pink + start: {line: 11, character: 9} + end: {line: 11, character: 10} + - hatStyle: green grapheme: "\"" hatRange: start: {line: 10, character: 16} @@ -87,7 +87,7 @@ initialState: hatRange: start: {line: 10, character: 13} end: {line: 10, character: 14} - - hatStyle: yellow + - hatStyle: red grapheme: "\"" hatRange: start: {line: 10, character: 22} @@ -98,10 +98,10 @@ initialState: start: {line: 10, character: 23} end: {line: 10, character: 24} - hatStyle: default - grapheme: o + grapheme: l hatRange: - start: {line: 10, character: 8} - end: {line: 10, character: 9} + start: {line: 10, character: 9} + end: {line: 10, character: 10} - hatStyle: default grapheme: f hatRange: @@ -112,21 +112,21 @@ initialState: hatRange: start: {line: 9, character: 19} end: {line: 9, character: 20} - - hatStyle: default + - hatStyle: pink grapheme: "\"" hatRange: start: {line: 9, character: 15} end: {line: 9, character: 16} - - hatStyle: blue + - hatStyle: yellow grapheme: "\"" hatRange: start: {line: 15, character: 18} end: {line: 15, character: 19} - hatStyle: default - grapheme: a + grapheme: k hatRange: - start: {line: 15, character: 15} - end: {line: 15, character: 16} + start: {line: 15, character: 17} + end: {line: 15, character: 18} - hatStyle: default grapheme: ) hatRange: @@ -138,10 +138,10 @@ initialState: start: {line: 15, character: 11} end: {line: 15, character: 12} - hatStyle: default - grapheme: r + grapheme: n hatRange: - start: {line: 9, character: 12} - end: {line: 9, character: 13} + start: {line: 9, character: 13} + end: {line: 9, character: 14} - hatStyle: default grapheme: _ hatRange: @@ -162,11 +162,11 @@ initialState: hatRange: start: {line: 8, character: 23} end: {line: 8, character: 24} - - hatStyle: blue - grapheme: o + - hatStyle: default + grapheme: r hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} + start: {line: 8, character: 11} + end: {line: 8, character: 12} - hatStyle: default grapheme: i hatRange: @@ -178,10 +178,10 @@ initialState: start: {line: 7, character: 16} end: {line: 7, character: 17} - hatStyle: blue - grapheme: c + grapheme: o hatRange: - start: {line: 7, character: 17} - end: {line: 7, character: 18} + start: {line: 7, character: 18} + end: {line: 7, character: 19} - hatStyle: blue grapheme: ) hatRange: @@ -218,10 +218,10 @@ initialState: start: {line: 4, character: 19} end: {line: 4, character: 20} - hatStyle: default - grapheme: n + grapheme: p hatRange: - start: {line: 4, character: 11} - end: {line: 4, character: 12} + start: {line: 4, character: 8} + end: {line: 4, character: 9} - hatStyle: red grapheme: ":" hatRange: @@ -232,7 +232,7 @@ initialState: hatRange: start: {line: 3, character: 6} end: {line: 3, character: 7} - - hatStyle: red + - hatStyle: green grapheme: v hatRange: start: {line: 2, character: 16} @@ -242,11 +242,11 @@ initialState: hatRange: start: {line: 2, character: 13} end: {line: 2, character: 14} - - hatStyle: default - grapheme: p + - hatStyle: blue + grapheme: r hatRange: - start: {line: 2, character: 8} - end: {line: 2, character: 9} + start: {line: 2, character: 9} + end: {line: 2, character: 10} - hatStyle: pink grapheme: ( hatRange: @@ -272,7 +272,7 @@ initialState: hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: green + - hatStyle: red grapheme: v hatRange: start: {line: 1, character: 9} @@ -349,37 +349,37 @@ finalState: - anchor: {line: 12, character: 16} active: {line: 12, character: 16} hatTokenMap: - - hatStyle: yellow + - hatStyle: default grapheme: o hatRange: start: {line: 12, character: 12} end: {line: 12, character: 13} - hatStyle: default - grapheme: e + grapheme: u hatRange: - start: {line: 12, character: 5} - end: {line: 12, character: 6} + start: {line: 12, character: 7} + end: {line: 12, character: 8} - hatStyle: default - grapheme: l + grapheme: a hatRange: - start: {line: 11, character: 17} - end: {line: 11, character: 18} - - hatStyle: green + start: {line: 11, character: 18} + end: {line: 11, character: 19} + - hatStyle: default grapheme: "\"" hatRange: start: {line: 11, character: 15} end: {line: 11, character: 16} - - hatStyle: red + - hatStyle: blue grapheme: "\"" hatRange: start: {line: 11, character: 21} end: {line: 11, character: 22} - hatStyle: default - grapheme: u + grapheme: e hatRange: - start: {line: 11, character: 11} - end: {line: 11, character: 12} - - hatStyle: pink + start: {line: 11, character: 9} + end: {line: 11, character: 10} + - hatStyle: green grapheme: "\"" hatRange: start: {line: 10, character: 16} @@ -394,7 +394,7 @@ finalState: hatRange: start: {line: 10, character: 13} end: {line: 10, character: 14} - - hatStyle: yellow + - hatStyle: red grapheme: "\"" hatRange: start: {line: 10, character: 22} @@ -405,10 +405,10 @@ finalState: start: {line: 10, character: 23} end: {line: 10, character: 24} - hatStyle: default - grapheme: o + grapheme: l hatRange: - start: {line: 10, character: 8} - end: {line: 10, character: 9} + start: {line: 10, character: 9} + end: {line: 10, character: 10} - hatStyle: default grapheme: f hatRange: @@ -419,21 +419,21 @@ finalState: hatRange: start: {line: 9, character: 19} end: {line: 9, character: 20} - - hatStyle: default + - hatStyle: pink grapheme: "\"" hatRange: start: {line: 9, character: 15} end: {line: 9, character: 16} - - hatStyle: blue + - hatStyle: yellow grapheme: "\"" hatRange: start: {line: 15, character: 18} end: {line: 15, character: 19} - hatStyle: default - grapheme: a + grapheme: k hatRange: - start: {line: 15, character: 15} - end: {line: 15, character: 16} + start: {line: 15, character: 17} + end: {line: 15, character: 18} - hatStyle: default grapheme: ) hatRange: @@ -445,10 +445,10 @@ finalState: start: {line: 15, character: 11} end: {line: 15, character: 12} - hatStyle: default - grapheme: r + grapheme: n hatRange: - start: {line: 9, character: 12} - end: {line: 9, character: 13} + start: {line: 9, character: 13} + end: {line: 9, character: 14} - hatStyle: default grapheme: _ hatRange: @@ -469,11 +469,11 @@ finalState: hatRange: start: {line: 8, character: 23} end: {line: 8, character: 24} - - hatStyle: blue - grapheme: o + - hatStyle: default + grapheme: r hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} + start: {line: 8, character: 11} + end: {line: 8, character: 12} - hatStyle: default grapheme: i hatRange: @@ -485,10 +485,10 @@ finalState: start: {line: 7, character: 16} end: {line: 7, character: 17} - hatStyle: blue - grapheme: c + grapheme: o hatRange: - start: {line: 7, character: 17} - end: {line: 7, character: 18} + start: {line: 7, character: 18} + end: {line: 7, character: 19} - hatStyle: blue grapheme: ) hatRange: @@ -525,10 +525,10 @@ finalState: start: {line: 4, character: 19} end: {line: 4, character: 20} - hatStyle: default - grapheme: n + grapheme: p hatRange: - start: {line: 4, character: 11} - end: {line: 4, character: 12} + start: {line: 4, character: 8} + end: {line: 4, character: 9} - hatStyle: red grapheme: ":" hatRange: @@ -539,7 +539,7 @@ finalState: hatRange: start: {line: 3, character: 6} end: {line: 3, character: 7} - - hatStyle: red + - hatStyle: green grapheme: v hatRange: start: {line: 2, character: 16} @@ -549,11 +549,11 @@ finalState: hatRange: start: {line: 2, character: 13} end: {line: 2, character: 14} - - hatStyle: default - grapheme: p + - hatStyle: blue + grapheme: r hatRange: - start: {line: 2, character: 8} - end: {line: 2, character: 9} + start: {line: 2, character: 9} + end: {line: 2, character: 10} - hatStyle: pink grapheme: ( hatRange: @@ -579,7 +579,7 @@ finalState: hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: green + - hatStyle: red grapheme: v hatRange: start: {line: 1, character: 9} diff --git a/resources/fixtures/recorded/tutorial/basic-coding/cloneStateInk.yml b/resources/fixtures/recorded/tutorial/basic-coding/cloneStateInk.yml index 3f32f1bd84..f96de4a7e7 100644 --- a/resources/fixtures/recorded/tutorial/basic-coding/cloneStateInk.yml +++ b/resources/fixtures/recorded/tutorial/basic-coding/cloneStateInk.yml @@ -90,10 +90,10 @@ initialState: start: {line: 9, character: 21} end: {line: 9, character: 22} - hatStyle: default - grapheme: l + grapheme: o hatRange: - start: {line: 8, character: 9} - end: {line: 8, character: 10} + start: {line: 8, character: 8} + end: {line: 8, character: 9} - hatStyle: default grapheme: "=" hatRange: @@ -135,10 +135,10 @@ initialState: start: {line: 7, character: 16} end: {line: 7, character: 17} - hatStyle: default - grapheme: c + grapheme: l hatRange: - start: {line: 7, character: 17} - end: {line: 7, character: 18} + start: {line: 7, character: 19} + end: {line: 7, character: 20} - hatStyle: blue grapheme: ) hatRange: @@ -159,11 +159,11 @@ initialState: hatRange: start: {line: 4, character: 13} end: {line: 4, character: 14} - - hatStyle: blue - grapheme: o + - hatStyle: default + grapheme: c hatRange: - start: {line: 4, character: 15} - end: {line: 4, character: 16} + start: {line: 4, character: 14} + end: {line: 4, character: 15} - hatStyle: green grapheme: ) hatRange: @@ -199,7 +199,7 @@ initialState: hatRange: start: {line: 2, character: 26} end: {line: 2, character: 27} - - hatStyle: green + - hatStyle: blue grapheme: o hatRange: start: {line: 2, character: 28} @@ -229,22 +229,22 @@ initialState: hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: blue - grapheme: e + - hatStyle: default + grapheme: d hatRange: - start: {line: 0, character: 1} - end: {line: 0, character: 2} - - hatStyle: blue - grapheme: _ + start: {line: 0, character: 0} + end: {line: 0, character: 1} + - hatStyle: default + grapheme: p hatRange: - start: {line: 0, character: 9} - end: {line: 0, character: 10} + start: {line: 0, character: 4} + end: {line: 0, character: 5} - hatStyle: yellow grapheme: ( hatRange: start: {line: 0, character: 15} end: {line: 0, character: 16} - - hatStyle: pink + - hatStyle: green grapheme: o hatRange: start: {line: 0, character: 17} @@ -356,10 +356,10 @@ finalState: start: {line: 10, character: 4} end: {line: 10, character: 5} - hatStyle: default - grapheme: l + grapheme: o hatRange: - start: {line: 10, character: 9} - end: {line: 10, character: 10} + start: {line: 10, character: 8} + end: {line: 10, character: 9} - hatStyle: default grapheme: "=" hatRange: @@ -400,7 +400,7 @@ finalState: hatRange: start: {line: 8, character: 5} end: {line: 8, character: 6} - - hatStyle: default + - hatStyle: red grapheme: o hatRange: start: {line: 8, character: 8} @@ -436,10 +436,10 @@ finalState: start: {line: 7, character: 16} end: {line: 7, character: 17} - hatStyle: default - grapheme: c + grapheme: l hatRange: - start: {line: 7, character: 17} - end: {line: 7, character: 18} + start: {line: 7, character: 19} + end: {line: 7, character: 20} - hatStyle: blue grapheme: ) hatRange: @@ -460,11 +460,11 @@ finalState: hatRange: start: {line: 4, character: 13} end: {line: 4, character: 14} - - hatStyle: blue - grapheme: o + - hatStyle: default + grapheme: c hatRange: - start: {line: 4, character: 15} - end: {line: 4, character: 16} + start: {line: 4, character: 14} + end: {line: 4, character: 15} - hatStyle: green grapheme: ) hatRange: @@ -500,7 +500,7 @@ finalState: hatRange: start: {line: 2, character: 26} end: {line: 2, character: 27} - - hatStyle: green + - hatStyle: blue grapheme: o hatRange: start: {line: 2, character: 28} @@ -530,22 +530,22 @@ finalState: hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: blue - grapheme: e + - hatStyle: default + grapheme: d hatRange: - start: {line: 0, character: 1} - end: {line: 0, character: 2} - - hatStyle: blue - grapheme: _ + start: {line: 0, character: 0} + end: {line: 0, character: 1} + - hatStyle: default + grapheme: p hatRange: - start: {line: 0, character: 9} - end: {line: 0, character: 10} + start: {line: 0, character: 4} + end: {line: 0, character: 5} - hatStyle: yellow grapheme: ( hatRange: start: {line: 0, character: 15} end: {line: 0, character: 16} - - hatStyle: pink + - hatStyle: green grapheme: o hatRange: start: {line: 0, character: 17} diff --git a/resources/fixtures/recorded/tutorial/basic-coding/dedentThis.yml b/resources/fixtures/recorded/tutorial/basic-coding/dedentThis.yml index 287ca06576..eb85877b08 100644 --- a/resources/fixtures/recorded/tutorial/basic-coding/dedentThis.yml +++ b/resources/fixtures/recorded/tutorial/basic-coding/dedentThis.yml @@ -36,47 +36,47 @@ initialState: hatRange: start: {line: 11, character: 9} end: {line: 11, character: 10} - - hatStyle: green + - hatStyle: default grapheme: "\"" hatRange: start: {line: 11, character: 15} end: {line: 11, character: 16} - hatStyle: default - grapheme: a + grapheme: l hatRange: - start: {line: 11, character: 18} - end: {line: 11, character: 19} - - hatStyle: red + start: {line: 11, character: 17} + end: {line: 11, character: 18} + - hatStyle: blue grapheme: "\"" hatRange: start: {line: 11, character: 21} end: {line: 11, character: 22} - hatStyle: default - grapheme: l + grapheme: o hatRange: - start: {line: 10, character: 9} - end: {line: 10, character: 10} + start: {line: 10, character: 8} + end: {line: 10, character: 9} - hatStyle: default - grapheme: i + grapheme: f hatRange: - start: {line: 10, character: 4} - end: {line: 10, character: 5} + start: {line: 10, character: 5} + end: {line: 10, character: 6} - hatStyle: default grapheme: "=" hatRange: start: {line: 10, character: 13} end: {line: 10, character: 14} - - hatStyle: pink + - hatStyle: green grapheme: "\"" hatRange: start: {line: 10, character: 16} end: {line: 10, character: 17} - - hatStyle: blue + - hatStyle: default grapheme: h hatRange: start: {line: 10, character: 18} end: {line: 10, character: 19} - - hatStyle: yellow + - hatStyle: red grapheme: "\"" hatRange: start: {line: 10, character: 22} @@ -96,57 +96,57 @@ initialState: hatRange: start: {line: 15, character: 11} end: {line: 15, character: 12} - - hatStyle: default + - hatStyle: pink grapheme: "\"" hatRange: start: {line: 15, character: 12} end: {line: 15, character: 13} - - hatStyle: green + - hatStyle: default grapheme: a hatRange: start: {line: 15, character: 15} end: {line: 15, character: 16} - - hatStyle: blue + - hatStyle: yellow grapheme: "\"" hatRange: start: {line: 9, character: 15} end: {line: 9, character: 16} - hatStyle: default - grapheme: w + grapheme: i hatRange: - start: {line: 9, character: 16} - end: {line: 9, character: 17} + start: {line: 9, character: 18} + end: {line: 9, character: 19} - hatStyle: default - grapheme: r + grapheme: _ hatRange: - start: {line: 15, character: 1} - end: {line: 15, character: 2} + start: {line: 15, character: 5} + end: {line: 15, character: 6} - hatStyle: default grapheme: ) hatRange: start: {line: 15, character: 19} end: {line: 15, character: 20} - hatStyle: default - grapheme: o + grapheme: r hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} - - hatStyle: green + start: {line: 8, character: 11} + end: {line: 8, character: 12} + - hatStyle: blue grapheme: f hatRange: start: {line: 8, character: 5} end: {line: 8, character: 6} - - hatStyle: green + - hatStyle: blue grapheme: "=" hatRange: start: {line: 8, character: 13} end: {line: 8, character: 14} - hatStyle: default - grapheme: b + grapheme: k hatRange: - start: {line: 8, character: 17} - end: {line: 8, character: 18} - - hatStyle: yellow + start: {line: 8, character: 21} + end: {line: 8, character: 22} + - hatStyle: blue grapheme: ":" hatRange: start: {line: 8, character: 23} @@ -157,10 +157,10 @@ initialState: start: {line: 7, character: 6} end: {line: 7, character: 7} - hatStyle: default - grapheme: f + grapheme: d hatRange: - start: {line: 7, character: 2} - end: {line: 7, character: 3} + start: {line: 7, character: 0} + end: {line: 7, character: 1} - hatStyle: blue grapheme: ( hatRange: @@ -176,7 +176,7 @@ initialState: hatRange: start: {line: 7, character: 22} end: {line: 7, character: 23} - - hatStyle: blue + - hatStyle: green grapheme: ":" hatRange: start: {line: 7, character: 23} @@ -201,7 +201,7 @@ initialState: hatRange: start: {line: 4, character: 19} end: {line: 4, character: 20} - - hatStyle: green + - hatStyle: red grapheme: ":" hatRange: start: {line: 3, character: 8} @@ -221,11 +221,11 @@ initialState: hatRange: start: {line: 2, character: 13} end: {line: 2, character: 14} - - hatStyle: default - grapheme: _ + - hatStyle: blue + grapheme: v hatRange: - start: {line: 2, character: 20} - end: {line: 2, character: 21} + start: {line: 2, character: 16} + end: {line: 2, character: 17} - hatStyle: pink grapheme: ( hatRange: @@ -251,21 +251,21 @@ initialState: hatRange: start: {line: 1, character: 8} end: {line: 1, character: 9} - - hatStyle: blue + - hatStyle: green grapheme: f hatRange: start: {line: 1, character: 5} end: {line: 1, character: 6} - - hatStyle: red + - hatStyle: pink grapheme: ":" hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: blue - grapheme: _ + - hatStyle: default + grapheme: p hatRange: - start: {line: 0, character: 9} - end: {line: 0, character: 10} + start: {line: 0, character: 4} + end: {line: 0, character: 5} - hatStyle: yellow grapheme: ( hatRange: @@ -276,7 +276,7 @@ initialState: hatRange: start: {line: 0, character: 1} end: {line: 0, character: 2} - - hatStyle: pink + - hatStyle: red grapheme: o hatRange: start: {line: 0, character: 17} @@ -286,12 +286,12 @@ initialState: hatRange: start: {line: 0, character: 21} end: {line: 0, character: 22} - - hatStyle: blue + - hatStyle: green grapheme: v hatRange: start: {line: 0, character: 25} end: {line: 0, character: 26} - - hatStyle: blue + - hatStyle: green grapheme: "=" hatRange: start: {line: 0, character: 29} @@ -306,7 +306,7 @@ initialState: hatRange: start: {line: 0, character: 35} end: {line: 0, character: 36} - - hatStyle: pink + - hatStyle: yellow grapheme: ":" hatRange: start: {line: 0, character: 36} @@ -338,47 +338,47 @@ finalState: hatRange: start: {line: 11, character: 9} end: {line: 11, character: 10} - - hatStyle: green + - hatStyle: default grapheme: "\"" hatRange: start: {line: 11, character: 15} end: {line: 11, character: 16} - hatStyle: default - grapheme: a + grapheme: l hatRange: - start: {line: 11, character: 18} - end: {line: 11, character: 19} - - hatStyle: red + start: {line: 11, character: 17} + end: {line: 11, character: 18} + - hatStyle: blue grapheme: "\"" hatRange: start: {line: 11, character: 21} end: {line: 11, character: 22} - hatStyle: default - grapheme: i + grapheme: f hatRange: - start: {line: 10, character: 4} - end: {line: 10, character: 5} + start: {line: 10, character: 5} + end: {line: 10, character: 6} - hatStyle: default - grapheme: l + grapheme: o hatRange: - start: {line: 10, character: 9} - end: {line: 10, character: 10} + start: {line: 10, character: 8} + end: {line: 10, character: 9} - hatStyle: default grapheme: "=" hatRange: start: {line: 10, character: 13} end: {line: 10, character: 14} - - hatStyle: pink + - hatStyle: green grapheme: "\"" hatRange: start: {line: 10, character: 16} end: {line: 10, character: 17} - - hatStyle: blue + - hatStyle: default grapheme: h hatRange: start: {line: 10, character: 18} end: {line: 10, character: 19} - - hatStyle: yellow + - hatStyle: red grapheme: "\"" hatRange: start: {line: 10, character: 22} @@ -394,61 +394,61 @@ finalState: start: {line: 9, character: 11} end: {line: 9, character: 12} - hatStyle: default - grapheme: r + grapheme: _ hatRange: - start: {line: 15, character: 1} - end: {line: 15, character: 2} + start: {line: 15, character: 5} + end: {line: 15, character: 6} - hatStyle: default grapheme: ( hatRange: start: {line: 15, character: 11} end: {line: 15, character: 12} - - hatStyle: default + - hatStyle: pink grapheme: "\"" hatRange: start: {line: 15, character: 12} end: {line: 15, character: 13} - - hatStyle: green + - hatStyle: default grapheme: a hatRange: start: {line: 15, character: 15} end: {line: 15, character: 16} - - hatStyle: blue + - hatStyle: yellow grapheme: "\"" hatRange: start: {line: 9, character: 15} end: {line: 9, character: 16} - hatStyle: default - grapheme: w + grapheme: i hatRange: - start: {line: 9, character: 16} - end: {line: 9, character: 17} + start: {line: 9, character: 18} + end: {line: 9, character: 19} - hatStyle: default grapheme: ) hatRange: start: {line: 15, character: 19} end: {line: 15, character: 20} - - hatStyle: green + - hatStyle: blue grapheme: f hatRange: start: {line: 8, character: 5} end: {line: 8, character: 6} - hatStyle: default - grapheme: o + grapheme: r hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} - - hatStyle: green + start: {line: 8, character: 11} + end: {line: 8, character: 12} + - hatStyle: blue grapheme: "=" hatRange: start: {line: 8, character: 13} end: {line: 8, character: 14} - hatStyle: default - grapheme: b + grapheme: k hatRange: - start: {line: 8, character: 17} - end: {line: 8, character: 18} - - hatStyle: yellow + start: {line: 8, character: 21} + end: {line: 8, character: 22} + - hatStyle: blue grapheme: ":" hatRange: start: {line: 8, character: 23} @@ -459,10 +459,10 @@ finalState: start: {line: 7, character: 6} end: {line: 7, character: 7} - hatStyle: default - grapheme: f + grapheme: d hatRange: - start: {line: 7, character: 2} - end: {line: 7, character: 3} + start: {line: 7, character: 0} + end: {line: 7, character: 1} - hatStyle: blue grapheme: ( hatRange: @@ -478,7 +478,7 @@ finalState: hatRange: start: {line: 7, character: 22} end: {line: 7, character: 23} - - hatStyle: blue + - hatStyle: green grapheme: ":" hatRange: start: {line: 7, character: 23} @@ -508,7 +508,7 @@ finalState: hatRange: start: {line: 3, character: 6} end: {line: 3, character: 7} - - hatStyle: green + - hatStyle: red grapheme: ":" hatRange: start: {line: 3, character: 8} @@ -523,11 +523,11 @@ finalState: hatRange: start: {line: 2, character: 13} end: {line: 2, character: 14} - - hatStyle: default - grapheme: _ + - hatStyle: blue + grapheme: v hatRange: - start: {line: 2, character: 20} - end: {line: 2, character: 21} + start: {line: 2, character: 16} + end: {line: 2, character: 17} - hatStyle: pink grapheme: ( hatRange: @@ -548,7 +548,7 @@ finalState: hatRange: start: {line: 2, character: 33} end: {line: 2, character: 34} - - hatStyle: blue + - hatStyle: green grapheme: f hatRange: start: {line: 1, character: 5} @@ -558,16 +558,16 @@ finalState: hatRange: start: {line: 1, character: 8} end: {line: 1, character: 9} - - hatStyle: red + - hatStyle: pink grapheme: ":" hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: blue - grapheme: _ + - hatStyle: default + grapheme: p hatRange: - start: {line: 0, character: 9} - end: {line: 0, character: 10} + start: {line: 0, character: 4} + end: {line: 0, character: 5} - hatStyle: blue grapheme: e hatRange: @@ -578,7 +578,7 @@ finalState: hatRange: start: {line: 0, character: 15} end: {line: 0, character: 16} - - hatStyle: pink + - hatStyle: red grapheme: o hatRange: start: {line: 0, character: 17} @@ -588,12 +588,12 @@ finalState: hatRange: start: {line: 0, character: 21} end: {line: 0, character: 22} - - hatStyle: blue + - hatStyle: green grapheme: v hatRange: start: {line: 0, character: 25} end: {line: 0, character: 26} - - hatStyle: blue + - hatStyle: green grapheme: "=" hatRange: start: {line: 0, character: 29} @@ -608,7 +608,7 @@ finalState: hatRange: start: {line: 0, character: 35} end: {line: 0, character: 36} - - hatStyle: pink + - hatStyle: yellow grapheme: ":" hatRange: start: {line: 0, character: 36} diff --git a/resources/fixtures/recorded/tutorial/basic-coding/pourUrge.yml b/resources/fixtures/recorded/tutorial/basic-coding/pourUrge.yml index e698c317f3..4556c0ab7e 100644 --- a/resources/fixtures/recorded/tutorial/basic-coding/pourUrge.yml +++ b/resources/fixtures/recorded/tutorial/basic-coding/pourUrge.yml @@ -39,10 +39,10 @@ initialState: start: {line: 11, character: 11} end: {line: 11, character: 12} - hatStyle: default - grapheme: r + grapheme: i hatRange: - start: {line: 14, character: 1} - end: {line: 14, character: 2} + start: {line: 14, character: 2} + end: {line: 14, character: 3} - hatStyle: default grapheme: ( hatRange: @@ -54,10 +54,10 @@ initialState: start: {line: 14, character: 12} end: {line: 14, character: 13} - hatStyle: default - grapheme: k + grapheme: a hatRange: - start: {line: 14, character: 17} - end: {line: 14, character: 18} + start: {line: 14, character: 15} + end: {line: 14, character: 16} - hatStyle: blue grapheme: "\"" hatRange: @@ -74,25 +74,25 @@ initialState: start: {line: 11, character: 15} end: {line: 11, character: 16} - hatStyle: default - grapheme: a + grapheme: l hatRange: - start: {line: 11, character: 18} - end: {line: 11, character: 19} + start: {line: 11, character: 17} + end: {line: 11, character: 18} - hatStyle: red grapheme: "\"" hatRange: start: {line: 11, character: 21} end: {line: 11, character: 22} - hatStyle: default - grapheme: i + grapheme: f hatRange: - start: {line: 10, character: 4} - end: {line: 10, character: 5} + start: {line: 10, character: 5} + end: {line: 10, character: 6} - hatStyle: default - grapheme: l + grapheme: o hatRange: - start: {line: 10, character: 9} - end: {line: 10, character: 10} + start: {line: 10, character: 8} + end: {line: 10, character: 9} - hatStyle: default grapheme: "=" hatRange: @@ -103,7 +103,7 @@ initialState: hatRange: start: {line: 10, character: 16} end: {line: 10, character: 17} - - hatStyle: blue + - hatStyle: default grapheme: h hatRange: start: {line: 10, character: 18} @@ -118,46 +118,46 @@ initialState: hatRange: start: {line: 10, character: 23} end: {line: 10, character: 24} - - hatStyle: blue - grapheme: u + - hatStyle: default + grapheme: n hatRange: - start: {line: 9, character: 11} - end: {line: 9, character: 12} + start: {line: 9, character: 13} + end: {line: 9, character: 14} - hatStyle: default - grapheme: w + grapheme: t hatRange: - start: {line: 9, character: 16} - end: {line: 9, character: 17} - - hatStyle: green + start: {line: 9, character: 19} + end: {line: 9, character: 20} + - hatStyle: blue grapheme: f hatRange: start: {line: 8, character: 5} end: {line: 8, character: 6} - hatStyle: default - grapheme: o + grapheme: r hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} - - hatStyle: green + start: {line: 8, character: 11} + end: {line: 8, character: 12} + - hatStyle: blue grapheme: "=" hatRange: start: {line: 8, character: 13} end: {line: 8, character: 14} - hatStyle: default - grapheme: b + grapheme: k hatRange: - start: {line: 8, character: 17} - end: {line: 8, character: 18} - - hatStyle: yellow + start: {line: 8, character: 21} + end: {line: 8, character: 22} + - hatStyle: blue grapheme: ":" hatRange: start: {line: 8, character: 23} end: {line: 8, character: 24} - hatStyle: default - grapheme: f + grapheme: e hatRange: - start: {line: 7, character: 2} - end: {line: 7, character: 3} + start: {line: 7, character: 1} + end: {line: 7, character: 2} - hatStyle: default grapheme: v hatRange: @@ -178,16 +178,16 @@ initialState: hatRange: start: {line: 7, character: 22} end: {line: 7, character: 23} - - hatStyle: blue + - hatStyle: green grapheme: ":" hatRange: start: {line: 7, character: 23} end: {line: 7, character: 24} - hatStyle: default - grapheme: n + grapheme: p hatRange: - start: {line: 4, character: 11} - end: {line: 4, character: 12} + start: {line: 4, character: 8} + end: {line: 4, character: 9} - hatStyle: green grapheme: ( hatRange: @@ -208,16 +208,16 @@ initialState: hatRange: start: {line: 3, character: 6} end: {line: 3, character: 7} - - hatStyle: green + - hatStyle: red grapheme: ":" hatRange: start: {line: 3, character: 8} end: {line: 3, character: 9} - - hatStyle: default - grapheme: t + - hatStyle: blue + grapheme: i hatRange: - start: {line: 2, character: 12} - end: {line: 2, character: 13} + start: {line: 2, character: 10} + end: {line: 2, character: 11} - hatStyle: red grapheme: ( hatRange: @@ -248,7 +248,7 @@ initialState: hatRange: start: {line: 2, character: 33} end: {line: 2, character: 34} - - hatStyle: blue + - hatStyle: green grapheme: f hatRange: start: {line: 1, character: 5} @@ -258,16 +258,16 @@ initialState: hatRange: start: {line: 1, character: 8} end: {line: 1, character: 9} - - hatStyle: red + - hatStyle: pink grapheme: ":" hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: blue - grapheme: e + - hatStyle: default + grapheme: d hatRange: - start: {line: 0, character: 1} - end: {line: 0, character: 2} + start: {line: 0, character: 0} + end: {line: 0, character: 1} - hatStyle: blue grapheme: _ hatRange: @@ -278,7 +278,7 @@ initialState: hatRange: start: {line: 0, character: 15} end: {line: 0, character: 16} - - hatStyle: pink + - hatStyle: red grapheme: o hatRange: start: {line: 0, character: 17} @@ -293,7 +293,7 @@ initialState: hatRange: start: {line: 0, character: 25} end: {line: 0, character: 26} - - hatStyle: blue + - hatStyle: green grapheme: "=" hatRange: start: {line: 0, character: 29} @@ -308,7 +308,7 @@ initialState: hatRange: start: {line: 0, character: 35} end: {line: 0, character: 36} - - hatStyle: pink + - hatStyle: yellow grapheme: ":" hatRange: start: {line: 0, character: 36} @@ -346,25 +346,25 @@ finalState: start: {line: 11, character: 15} end: {line: 11, character: 16} - hatStyle: default - grapheme: a + grapheme: l hatRange: - start: {line: 11, character: 18} - end: {line: 11, character: 19} + start: {line: 11, character: 17} + end: {line: 11, character: 18} - hatStyle: red grapheme: "\"" hatRange: start: {line: 11, character: 21} end: {line: 11, character: 22} - hatStyle: default - grapheme: l + grapheme: o hatRange: - start: {line: 10, character: 9} - end: {line: 10, character: 10} + start: {line: 10, character: 8} + end: {line: 10, character: 9} - hatStyle: default - grapheme: i + grapheme: f hatRange: - start: {line: 10, character: 4} - end: {line: 10, character: 5} + start: {line: 10, character: 5} + end: {line: 10, character: 6} - hatStyle: default grapheme: "=" hatRange: @@ -375,7 +375,7 @@ finalState: hatRange: start: {line: 10, character: 16} end: {line: 10, character: 17} - - hatStyle: blue + - hatStyle: default grapheme: h hatRange: start: {line: 10, character: 18} @@ -390,11 +390,11 @@ finalState: hatRange: start: {line: 10, character: 23} end: {line: 10, character: 24} - - hatStyle: blue - grapheme: u + - hatStyle: default + grapheme: n hatRange: - start: {line: 9, character: 11} - end: {line: 9, character: 12} + start: {line: 9, character: 13} + end: {line: 9, character: 14} - hatStyle: default grapheme: ( hatRange: @@ -406,51 +406,51 @@ finalState: start: {line: 15, character: 12} end: {line: 15, character: 13} - hatStyle: default - grapheme: k + grapheme: a hatRange: - start: {line: 15, character: 17} - end: {line: 15, character: 18} + start: {line: 15, character: 15} + end: {line: 15, character: 16} - hatStyle: blue grapheme: "\"" hatRange: start: {line: 9, character: 15} end: {line: 9, character: 16} - hatStyle: default - grapheme: w + grapheme: t hatRange: - start: {line: 9, character: 16} - end: {line: 9, character: 17} + start: {line: 9, character: 19} + end: {line: 9, character: 20} - hatStyle: default - grapheme: r + grapheme: i hatRange: - start: {line: 15, character: 1} - end: {line: 15, character: 2} + start: {line: 15, character: 2} + end: {line: 15, character: 3} - hatStyle: default grapheme: ) hatRange: start: {line: 15, character: 19} end: {line: 15, character: 20} - hatStyle: default - grapheme: o + grapheme: r hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} - - hatStyle: green + start: {line: 8, character: 11} + end: {line: 8, character: 12} + - hatStyle: blue grapheme: f hatRange: start: {line: 8, character: 5} end: {line: 8, character: 6} - - hatStyle: green + - hatStyle: blue grapheme: "=" hatRange: start: {line: 8, character: 13} end: {line: 8, character: 14} - hatStyle: default - grapheme: b + grapheme: k hatRange: - start: {line: 8, character: 17} - end: {line: 8, character: 18} - - hatStyle: yellow + start: {line: 8, character: 21} + end: {line: 8, character: 22} + - hatStyle: blue grapheme: ":" hatRange: start: {line: 8, character: 23} @@ -461,10 +461,10 @@ finalState: start: {line: 7, character: 6} end: {line: 7, character: 7} - hatStyle: default - grapheme: f + grapheme: e hatRange: - start: {line: 7, character: 2} - end: {line: 7, character: 3} + start: {line: 7, character: 1} + end: {line: 7, character: 2} - hatStyle: blue grapheme: ( hatRange: @@ -480,16 +480,16 @@ finalState: hatRange: start: {line: 7, character: 22} end: {line: 7, character: 23} - - hatStyle: blue + - hatStyle: green grapheme: ":" hatRange: start: {line: 7, character: 23} end: {line: 7, character: 24} - hatStyle: default - grapheme: n + grapheme: p hatRange: - start: {line: 4, character: 11} - end: {line: 4, character: 12} + start: {line: 4, character: 8} + end: {line: 4, character: 9} - hatStyle: green grapheme: ( hatRange: @@ -505,7 +505,7 @@ finalState: hatRange: start: {line: 4, character: 19} end: {line: 4, character: 20} - - hatStyle: green + - hatStyle: red grapheme: ":" hatRange: start: {line: 3, character: 8} @@ -515,11 +515,11 @@ finalState: hatRange: start: {line: 3, character: 6} end: {line: 3, character: 7} - - hatStyle: default - grapheme: t + - hatStyle: blue + grapheme: i hatRange: - start: {line: 2, character: 12} - end: {line: 2, character: 13} + start: {line: 2, character: 10} + end: {line: 2, character: 11} - hatStyle: red grapheme: ( hatRange: @@ -555,12 +555,12 @@ finalState: hatRange: start: {line: 1, character: 8} end: {line: 1, character: 9} - - hatStyle: blue + - hatStyle: green grapheme: f hatRange: start: {line: 1, character: 5} end: {line: 1, character: 6} - - hatStyle: red + - hatStyle: pink grapheme: ":" hatRange: start: {line: 1, character: 13} @@ -575,12 +575,12 @@ finalState: hatRange: start: {line: 0, character: 15} end: {line: 0, character: 16} - - hatStyle: blue - grapheme: e + - hatStyle: default + grapheme: d hatRange: - start: {line: 0, character: 1} - end: {line: 0, character: 2} - - hatStyle: pink + start: {line: 0, character: 0} + end: {line: 0, character: 1} + - hatStyle: red grapheme: o hatRange: start: {line: 0, character: 17} @@ -595,7 +595,7 @@ finalState: hatRange: start: {line: 0, character: 25} end: {line: 0, character: 26} - - hatStyle: blue + - hatStyle: green grapheme: "=" hatRange: start: {line: 0, character: 29} @@ -610,7 +610,7 @@ finalState: hatRange: start: {line: 0, character: 35} end: {line: 0, character: 36} - - hatStyle: pink + - hatStyle: yellow grapheme: ":" hatRange: start: {line: 0, character: 36} diff --git a/resources/fixtures/recorded/tutorial/basic-coding/swapStringAirWithWhale.yml b/resources/fixtures/recorded/tutorial/basic-coding/swapStringAirWithWhale.yml index e9c8231c03..489693563a 100644 --- a/resources/fixtures/recorded/tutorial/basic-coding/swapStringAirWithWhale.yml +++ b/resources/fixtures/recorded/tutorial/basic-coding/swapStringAirWithWhale.yml @@ -98,15 +98,15 @@ initialState: start: {line: 11, character: 21} end: {line: 11, character: 22} - hatStyle: default - grapheme: i + grapheme: f hatRange: - start: {line: 10, character: 4} - end: {line: 10, character: 5} + start: {line: 10, character: 5} + end: {line: 10, character: 6} - hatStyle: default - grapheme: l + grapheme: o hatRange: - start: {line: 10, character: 9} - end: {line: 10, character: 10} + start: {line: 10, character: 8} + end: {line: 10, character: 9} - hatStyle: default grapheme: "=" hatRange: @@ -127,46 +127,46 @@ initialState: hatRange: start: {line: 10, character: 23} end: {line: 10, character: 24} - - hatStyle: blue - grapheme: u + - hatStyle: default + grapheme: e hatRange: - start: {line: 9, character: 11} - end: {line: 9, character: 12} + start: {line: 9, character: 9} + end: {line: 9, character: 10} - hatStyle: default grapheme: h hatRange: start: {line: 9, character: 17} end: {line: 9, character: 18} - - hatStyle: green - grapheme: f + - hatStyle: default + grapheme: i hatRange: - start: {line: 8, character: 5} - end: {line: 8, character: 6} + start: {line: 8, character: 4} + end: {line: 8, character: 5} - hatStyle: default - grapheme: o + grapheme: l hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} - - hatStyle: green + start: {line: 8, character: 9} + end: {line: 8, character: 10} + - hatStyle: blue grapheme: "=" hatRange: start: {line: 8, character: 13} end: {line: 8, character: 14} - hatStyle: default - grapheme: b + grapheme: c hatRange: - start: {line: 8, character: 17} - end: {line: 8, character: 18} - - hatStyle: yellow + start: {line: 8, character: 20} + end: {line: 8, character: 21} + - hatStyle: blue grapheme: ":" hatRange: start: {line: 8, character: 23} end: {line: 8, character: 24} - hatStyle: default - grapheme: f + grapheme: d hatRange: - start: {line: 7, character: 2} - end: {line: 7, character: 3} + start: {line: 7, character: 0} + end: {line: 7, character: 1} - hatStyle: default grapheme: v hatRange: @@ -177,17 +177,17 @@ initialState: hatRange: start: {line: 7, character: 16} end: {line: 7, character: 17} - - hatStyle: default - grapheme: c + - hatStyle: blue + grapheme: o hatRange: - start: {line: 7, character: 17} - end: {line: 7, character: 18} + start: {line: 7, character: 18} + end: {line: 7, character: 19} - hatStyle: blue grapheme: ) hatRange: start: {line: 7, character: 22} end: {line: 7, character: 23} - - hatStyle: blue + - hatStyle: green grapheme: ":" hatRange: start: {line: 7, character: 23} @@ -202,7 +202,7 @@ initialState: hatRange: start: {line: 4, character: 13} end: {line: 4, character: 14} - - hatStyle: blue + - hatStyle: green grapheme: o hatRange: start: {line: 4, character: 15} @@ -217,7 +217,7 @@ initialState: hatRange: start: {line: 3, character: 6} end: {line: 3, character: 7} - - hatStyle: green + - hatStyle: red grapheme: ":" hatRange: start: {line: 3, character: 8} @@ -242,7 +242,7 @@ initialState: hatRange: start: {line: 2, character: 26} end: {line: 2, character: 27} - - hatStyle: green + - hatStyle: red grapheme: o hatRange: start: {line: 2, character: 28} @@ -267,21 +267,21 @@ initialState: hatRange: start: {line: 1, character: 8} end: {line: 1, character: 9} - - hatStyle: red + - hatStyle: pink grapheme: ":" hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: blue - grapheme: e + - hatStyle: green + grapheme: f hatRange: - start: {line: 0, character: 1} - end: {line: 0, character: 2} - - hatStyle: blue - grapheme: _ + start: {line: 0, character: 2} + end: {line: 0, character: 3} + - hatStyle: default + grapheme: p hatRange: - start: {line: 0, character: 9} - end: {line: 0, character: 10} + start: {line: 0, character: 4} + end: {line: 0, character: 5} - hatStyle: yellow grapheme: ( hatRange: @@ -302,7 +302,7 @@ initialState: hatRange: start: {line: 0, character: 25} end: {line: 0, character: 26} - - hatStyle: blue + - hatStyle: green grapheme: "=" hatRange: start: {line: 0, character: 29} @@ -317,7 +317,7 @@ initialState: hatRange: start: {line: 0, character: 35} end: {line: 0, character: 36} - - hatStyle: pink + - hatStyle: yellow grapheme: ":" hatRange: start: {line: 0, character: 36} @@ -383,26 +383,26 @@ finalState: hatRange: start: {line: 11, character: 15} end: {line: 11, character: 16} - - hatStyle: blue - grapheme: l + - hatStyle: default + grapheme: b hatRange: - start: {line: 11, character: 17} - end: {line: 11, character: 18} + start: {line: 11, character: 16} + end: {line: 11, character: 17} - hatStyle: red grapheme: "\"" hatRange: start: {line: 11, character: 21} end: {line: 11, character: 22} - hatStyle: default - grapheme: i + grapheme: f hatRange: - start: {line: 10, character: 4} - end: {line: 10, character: 5} + start: {line: 10, character: 5} + end: {line: 10, character: 6} - hatStyle: default - grapheme: l + grapheme: o hatRange: - start: {line: 10, character: 9} - end: {line: 10, character: 10} + start: {line: 10, character: 8} + end: {line: 10, character: 9} - hatStyle: default grapheme: "=" hatRange: @@ -413,11 +413,11 @@ finalState: hatRange: start: {line: 10, character: 16} end: {line: 10, character: 17} - - hatStyle: default - grapheme: e + - hatStyle: blue + grapheme: h hatRange: - start: {line: 10, character: 21} - end: {line: 10, character: 22} + start: {line: 10, character: 18} + end: {line: 10, character: 19} - hatStyle: yellow grapheme: "\"" hatRange: @@ -428,46 +428,46 @@ finalState: hatRange: start: {line: 10, character: 23} end: {line: 10, character: 24} - - hatStyle: blue - grapheme: u + - hatStyle: default + grapheme: e hatRange: - start: {line: 9, character: 11} - end: {line: 9, character: 12} + start: {line: 9, character: 9} + end: {line: 9, character: 10} - hatStyle: default grapheme: h hatRange: start: {line: 9, character: 17} end: {line: 9, character: 18} - - hatStyle: green - grapheme: f + - hatStyle: default + grapheme: i hatRange: - start: {line: 8, character: 5} - end: {line: 8, character: 6} + start: {line: 8, character: 4} + end: {line: 8, character: 5} - hatStyle: default - grapheme: o + grapheme: l hatRange: - start: {line: 8, character: 8} - end: {line: 8, character: 9} - - hatStyle: green + start: {line: 8, character: 9} + end: {line: 8, character: 10} + - hatStyle: blue grapheme: "=" hatRange: start: {line: 8, character: 13} end: {line: 8, character: 14} - hatStyle: default - grapheme: b + grapheme: c hatRange: - start: {line: 8, character: 17} - end: {line: 8, character: 18} - - hatStyle: yellow + start: {line: 8, character: 20} + end: {line: 8, character: 21} + - hatStyle: blue grapheme: ":" hatRange: start: {line: 8, character: 23} end: {line: 8, character: 24} - hatStyle: default - grapheme: f + grapheme: d hatRange: - start: {line: 7, character: 2} - end: {line: 7, character: 3} + start: {line: 7, character: 0} + end: {line: 7, character: 1} - hatStyle: default grapheme: v hatRange: @@ -478,17 +478,17 @@ finalState: hatRange: start: {line: 7, character: 16} end: {line: 7, character: 17} - - hatStyle: default - grapheme: c + - hatStyle: blue + grapheme: o hatRange: - start: {line: 7, character: 17} - end: {line: 7, character: 18} + start: {line: 7, character: 18} + end: {line: 7, character: 19} - hatStyle: blue grapheme: ) hatRange: start: {line: 7, character: 22} end: {line: 7, character: 23} - - hatStyle: blue + - hatStyle: green grapheme: ":" hatRange: start: {line: 7, character: 23} @@ -503,7 +503,7 @@ finalState: hatRange: start: {line: 4, character: 13} end: {line: 4, character: 14} - - hatStyle: blue + - hatStyle: green grapheme: o hatRange: start: {line: 4, character: 15} @@ -518,7 +518,7 @@ finalState: hatRange: start: {line: 3, character: 6} end: {line: 3, character: 7} - - hatStyle: green + - hatStyle: red grapheme: ":" hatRange: start: {line: 3, character: 8} @@ -543,7 +543,7 @@ finalState: hatRange: start: {line: 2, character: 26} end: {line: 2, character: 27} - - hatStyle: green + - hatStyle: red grapheme: o hatRange: start: {line: 2, character: 28} @@ -568,21 +568,21 @@ finalState: hatRange: start: {line: 1, character: 8} end: {line: 1, character: 9} - - hatStyle: red + - hatStyle: pink grapheme: ":" hatRange: start: {line: 1, character: 13} end: {line: 1, character: 14} - - hatStyle: blue - grapheme: e + - hatStyle: green + grapheme: f hatRange: - start: {line: 0, character: 1} - end: {line: 0, character: 2} - - hatStyle: blue - grapheme: _ + start: {line: 0, character: 2} + end: {line: 0, character: 3} + - hatStyle: default + grapheme: p hatRange: - start: {line: 0, character: 9} - end: {line: 0, character: 10} + start: {line: 0, character: 4} + end: {line: 0, character: 5} - hatStyle: yellow grapheme: ( hatRange: @@ -603,7 +603,7 @@ finalState: hatRange: start: {line: 0, character: 25} end: {line: 0, character: 26} - - hatStyle: blue + - hatStyle: green grapheme: "=" hatRange: start: {line: 0, character: 29} @@ -618,7 +618,7 @@ finalState: hatRange: start: {line: 0, character: 35} end: {line: 0, character: 36} - - hatStyle: pink + - hatStyle: yellow grapheme: ":" hatRange: start: {line: 0, character: 36} diff --git a/resources/fixtures/recorded/tutorial/introduction/chuckLineOdd.yml b/resources/fixtures/recorded/tutorial/introduction/chuckLineOdd.yml index 0f2e148a30..ee77d74c77 100644 --- a/resources/fixtures/recorded/tutorial/introduction/chuckLineOdd.yml +++ b/resources/fixtures/recorded/tutorial/introduction/chuckLineOdd.yml @@ -39,15 +39,15 @@ initialState: start: {line: 2, character: 8} end: {line: 2, character: 9} - hatStyle: default - grapheme: t + grapheme: a hatRange: - start: {line: 2, character: 13} - end: {line: 2, character: 14} + start: {line: 2, character: 12} + end: {line: 2, character: 13} - hatStyle: default - grapheme: e + grapheme: i hatRange: - start: {line: 2, character: 5} - end: {line: 2, character: 6} + start: {line: 2, character: 3} + end: {line: 2, character: 4} - hatStyle: default grapheme: b hatRange: @@ -73,7 +73,7 @@ initialState: hatRange: start: {line: 2, character: 38} end: {line: 2, character: 39} - - hatStyle: blue + - hatStyle: default grapheme: e hatRange: start: {line: 2, character: 41} @@ -83,7 +83,7 @@ initialState: hatRange: start: {line: 2, character: 48} end: {line: 2, character: 49} - - hatStyle: green + - hatStyle: blue grapheme: e hatRange: start: {line: 4, character: 6} @@ -98,21 +98,21 @@ initialState: hatRange: start: {line: 4, character: 3} end: {line: 4, character: 4} - - hatStyle: blue - grapheme: h + - hatStyle: default + grapheme: t hatRange: - start: {line: 4, character: 10} - end: {line: 4, character: 11} + start: {line: 4, character: 9} + end: {line: 4, character: 10} - hatStyle: default grapheme: m hatRange: start: {line: 0, character: 5} end: {line: 0, character: 6} - hatStyle: default - grapheme: a + grapheme: d hatRange: - start: {line: 4, character: 18} - end: {line: 4, character: 19} + start: {line: 4, character: 15} + end: {line: 4, character: 16} - hatStyle: default grapheme: "!" hatRange: @@ -140,15 +140,15 @@ finalState: start: {line: 2, character: 8} end: {line: 2, character: 9} - hatStyle: default - grapheme: t + grapheme: a hatRange: - start: {line: 2, character: 13} - end: {line: 2, character: 14} + start: {line: 2, character: 12} + end: {line: 2, character: 13} - hatStyle: default - grapheme: e + grapheme: i hatRange: - start: {line: 2, character: 5} - end: {line: 2, character: 6} + start: {line: 2, character: 3} + end: {line: 2, character: 4} - hatStyle: default grapheme: b hatRange: @@ -174,7 +174,7 @@ finalState: hatRange: start: {line: 2, character: 38} end: {line: 2, character: 39} - - hatStyle: blue + - hatStyle: default grapheme: e hatRange: start: {line: 2, character: 41} diff --git a/resources/fixtures/recorded/tutorial/introduction/postAir.yml b/resources/fixtures/recorded/tutorial/introduction/postAir.yml index 512814f6d3..918415b9f6 100644 --- a/resources/fixtures/recorded/tutorial/introduction/postAir.yml +++ b/resources/fixtures/recorded/tutorial/introduction/postAir.yml @@ -62,10 +62,10 @@ initialState: start: {line: 2, character: 24} end: {line: 2, character: 25} - hatStyle: default - grapheme: r + grapheme: d hatRange: - start: {line: 2, character: 29} - end: {line: 2, character: 30} + start: {line: 2, character: 30} + end: {line: 2, character: 31} - hatStyle: default grapheme: n hatRange: @@ -116,10 +116,10 @@ finalState: start: {line: 2, character: 8} end: {line: 2, character: 9} - hatStyle: default - grapheme: r + grapheme: d hatRange: - start: {line: 2, character: 29} - end: {line: 2, character: 30} + start: {line: 2, character: 30} + end: {line: 2, character: 31} - hatStyle: default grapheme: i hatRange: diff --git a/resources/fixtures/recorded/tutorial/introduction/preUrge.yml b/resources/fixtures/recorded/tutorial/introduction/preUrge.yml index 45f81d7f23..f28e744a50 100644 --- a/resources/fixtures/recorded/tutorial/introduction/preUrge.yml +++ b/resources/fixtures/recorded/tutorial/introduction/preUrge.yml @@ -32,50 +32,50 @@ initialState: start: {line: 2, character: 48} end: {line: 2, character: 49} - hatStyle: default - grapheme: e + grapheme: n hatRange: - start: {line: 2, character: 41} - end: {line: 2, character: 42} + start: {line: 2, character: 42} + end: {line: 2, character: 43} - hatStyle: default - grapheme: s + grapheme: h hatRange: - start: {line: 2, character: 38} - end: {line: 2, character: 39} + start: {line: 2, character: 36} + end: {line: 2, character: 37} - hatStyle: default - grapheme: n + grapheme: i hatRange: - start: {line: 2, character: 33} - end: {line: 2, character: 34} + start: {line: 2, character: 32} + end: {line: 2, character: 33} - hatStyle: default - grapheme: r + grapheme: d hatRange: - start: {line: 2, character: 29} - end: {line: 2, character: 30} + start: {line: 2, character: 30} + end: {line: 2, character: 31} - hatStyle: default - grapheme: c + grapheme: a hatRange: - start: {line: 2, character: 24} - end: {line: 2, character: 25} + start: {line: 2, character: 23} + end: {line: 2, character: 24} - hatStyle: default grapheme: b hatRange: start: {line: 2, character: 17} end: {line: 2, character: 18} - hatStyle: default - grapheme: a + grapheme: t hatRange: - start: {line: 2, character: 12} - end: {line: 2, character: 13} + start: {line: 2, character: 13} + end: {line: 2, character: 14} - hatStyle: default - grapheme: h + grapheme: e hatRange: - start: {line: 2, character: 8} - end: {line: 2, character: 9} + start: {line: 2, character: 9} + end: {line: 2, character: 10} - hatStyle: default - grapheme: i + grapheme: c hatRange: - start: {line: 2, character: 3} - end: {line: 2, character: 4} + start: {line: 2, character: 4} + end: {line: 2, character: 5} - hatStyle: default grapheme: "!" hatRange: @@ -111,50 +111,50 @@ finalState: start: {line: 0, character: 18} end: {line: 0, character: 19} - hatStyle: default - grapheme: h + grapheme: e hatRange: - start: {line: 2, character: 8} - end: {line: 2, character: 9} + start: {line: 2, character: 9} + end: {line: 2, character: 10} - hatStyle: default - grapheme: a + grapheme: t hatRange: - start: {line: 2, character: 12} - end: {line: 2, character: 13} + start: {line: 2, character: 13} + end: {line: 2, character: 14} - hatStyle: default - grapheme: i + grapheme: c hatRange: - start: {line: 2, character: 3} - end: {line: 2, character: 4} + start: {line: 2, character: 4} + end: {line: 2, character: 5} - hatStyle: default grapheme: b hatRange: start: {line: 2, character: 17} end: {line: 2, character: 18} - hatStyle: default - grapheme: c + grapheme: a hatRange: - start: {line: 2, character: 24} - end: {line: 2, character: 25} + start: {line: 2, character: 23} + end: {line: 2, character: 24} - hatStyle: default - grapheme: r + grapheme: d hatRange: - start: {line: 2, character: 29} - end: {line: 2, character: 30} + start: {line: 2, character: 30} + end: {line: 2, character: 31} - hatStyle: default - grapheme: n + grapheme: i hatRange: - start: {line: 2, character: 33} - end: {line: 2, character: 34} + start: {line: 2, character: 32} + end: {line: 2, character: 33} - hatStyle: default - grapheme: s + grapheme: h hatRange: - start: {line: 2, character: 38} - end: {line: 2, character: 39} + start: {line: 2, character: 36} + end: {line: 2, character: 37} - hatStyle: default - grapheme: e + grapheme: n hatRange: - start: {line: 2, character: 41} - end: {line: 2, character: 42} + start: {line: 2, character: 42} + end: {line: 2, character: 43} - hatStyle: default grapheme: . hatRange: diff --git a/resources/fixtures/recorded/tutorial/introduction/takeCap.yml b/resources/fixtures/recorded/tutorial/introduction/takeCap.yml index b10406397f..704794f463 100644 --- a/resources/fixtures/recorded/tutorial/introduction/takeCap.yml +++ b/resources/fixtures/recorded/tutorial/introduction/takeCap.yml @@ -29,11 +29,11 @@ initialState: start: {line: 2, character: 24} end: {line: 2, character: 25} - hatStyle: default - grapheme: m + grapheme: l hatRange: - start: {line: 0, character: 5} - end: {line: 0, character: 6} - - hatStyle: blue + start: {line: 0, character: 2} + end: {line: 0, character: 3} + - hatStyle: default grapheme: o hatRange: start: {line: 0, character: 9} @@ -54,25 +54,25 @@ initialState: start: {line: 2, character: 3} end: {line: 2, character: 4} - hatStyle: default - grapheme: e + grapheme: h hatRange: - start: {line: 2, character: 9} - end: {line: 2, character: 10} + start: {line: 2, character: 8} + end: {line: 2, character: 9} - hatStyle: default - grapheme: t + grapheme: a hatRange: - start: {line: 2, character: 13} - end: {line: 2, character: 14} + start: {line: 2, character: 12} + end: {line: 2, character: 13} - hatStyle: default grapheme: b hatRange: start: {line: 2, character: 17} end: {line: 2, character: 18} - hatStyle: default - grapheme: o + grapheme: d hatRange: - start: {line: 2, character: 28} - end: {line: 2, character: 29} + start: {line: 2, character: 30} + end: {line: 2, character: 31} - hatStyle: default grapheme: n hatRange: @@ -83,11 +83,11 @@ initialState: hatRange: start: {line: 2, character: 38} end: {line: 2, character: 39} - - hatStyle: blue - grapheme: c + - hatStyle: default + grapheme: e hatRange: - start: {line: 2, character: 46} - end: {line: 2, character: 47} + start: {line: 2, character: 41} + end: {line: 2, character: 42} - hatStyle: default grapheme: . hatRange: @@ -104,20 +104,20 @@ initialState: start: {line: 4, character: 3} end: {line: 4, character: 4} - hatStyle: blue - grapheme: s + grapheme: e hatRange: - start: {line: 4, character: 5} - end: {line: 4, character: 6} + start: {line: 4, character: 6} + end: {line: 4, character: 7} - hatStyle: default - grapheme: h + grapheme: t hatRange: - start: {line: 4, character: 10} - end: {line: 4, character: 11} + start: {line: 4, character: 9} + end: {line: 4, character: 10} - hatStyle: default - grapheme: d + grapheme: r hatRange: - start: {line: 4, character: 15} - end: {line: 4, character: 16} + start: {line: 4, character: 19} + end: {line: 4, character: 20} - hatStyle: blue grapheme: . hatRange: @@ -135,10 +135,10 @@ finalState: active: {line: 2, character: 26} hatTokenMap: - hatStyle: default - grapheme: o + grapheme: d hatRange: - start: {line: 2, character: 28} - end: {line: 2, character: 29} + start: {line: 2, character: 30} + end: {line: 2, character: 31} - hatStyle: default grapheme: c hatRange: @@ -159,21 +159,21 @@ finalState: hatRange: start: {line: 2, character: 17} end: {line: 2, character: 18} - - hatStyle: blue - grapheme: c + - hatStyle: default + grapheme: e hatRange: - start: {line: 2, character: 46} - end: {line: 2, character: 47} + start: {line: 2, character: 41} + end: {line: 2, character: 42} - hatStyle: default - grapheme: t + grapheme: a hatRange: - start: {line: 2, character: 13} - end: {line: 2, character: 14} + start: {line: 2, character: 12} + end: {line: 2, character: 13} - hatStyle: default - grapheme: e + grapheme: h hatRange: - start: {line: 2, character: 9} - end: {line: 2, character: 10} + start: {line: 2, character: 8} + end: {line: 2, character: 9} - hatStyle: default grapheme: . hatRange: @@ -195,40 +195,40 @@ finalState: start: {line: 4, character: 20} end: {line: 4, character: 21} - hatStyle: default - grapheme: d + grapheme: r hatRange: - start: {line: 4, character: 15} - end: {line: 4, character: 16} + start: {line: 4, character: 19} + end: {line: 4, character: 20} - hatStyle: default grapheme: u hatRange: start: {line: 0, character: 12} end: {line: 0, character: 13} - hatStyle: default - grapheme: h + grapheme: t hatRange: - start: {line: 4, character: 10} - end: {line: 4, character: 11} - - hatStyle: blue + start: {line: 4, character: 9} + end: {line: 4, character: 10} + - hatStyle: default grapheme: o hatRange: start: {line: 0, character: 9} end: {line: 0, character: 10} - hatStyle: blue - grapheme: s + grapheme: e hatRange: - start: {line: 4, character: 5} - end: {line: 4, character: 6} + start: {line: 4, character: 6} + end: {line: 4, character: 7} - hatStyle: default grapheme: "," hatRange: start: {line: 4, character: 3} end: {line: 4, character: 4} - hatStyle: default - grapheme: m + grapheme: l hatRange: - start: {line: 0, character: 5} - end: {line: 0, character: 6} + start: {line: 0, character: 2} + end: {line: 0, character: 3} - hatStyle: default grapheme: w hatRange: diff --git a/resources/fixtures/recorded/tutorial/introduction/takeHarpPastDrum.yml b/resources/fixtures/recorded/tutorial/introduction/takeHarpPastDrum.yml index ce40a89280..be6a24280c 100644 --- a/resources/fixtures/recorded/tutorial/introduction/takeHarpPastDrum.yml +++ b/resources/fixtures/recorded/tutorial/introduction/takeHarpPastDrum.yml @@ -43,12 +43,12 @@ initialState: hatRange: start: {line: 2, character: 30} end: {line: 2, character: 31} - - hatStyle: blue - grapheme: h + - hatStyle: default + grapheme: e hatRange: - start: {line: 4, character: 10} - end: {line: 4, character: 11} - - hatStyle: blue + start: {line: 4, character: 11} + end: {line: 4, character: 12} + - hatStyle: default grapheme: s hatRange: start: {line: 4, character: 5} @@ -59,16 +59,16 @@ initialState: start: {line: 4, character: 3} end: {line: 4, character: 4} - hatStyle: default - grapheme: a + grapheme: i hatRange: - start: {line: 4, character: 18} - end: {line: 4, character: 19} + start: {line: 4, character: 14} + end: {line: 4, character: 15} - hatStyle: default - grapheme: w + grapheme: o hatRange: - start: {line: 4, character: 2} - end: {line: 4, character: 3} - - hatStyle: blue + start: {line: 4, character: 1} + end: {line: 4, character: 2} + - hatStyle: default grapheme: . hatRange: start: {line: 4, character: 20} @@ -79,36 +79,36 @@ initialState: start: {line: 2, character: 13} end: {line: 2, character: 14} - hatStyle: default - grapheme: i + grapheme: c hatRange: - start: {line: 2, character: 3} - end: {line: 2, character: 4} + start: {line: 2, character: 4} + end: {line: 2, character: 5} - hatStyle: default - grapheme: b + grapheme: v hatRange: - start: {line: 2, character: 17} - end: {line: 2, character: 18} + start: {line: 2, character: 19} + end: {line: 2, character: 20} - hatStyle: default - grapheme: c + grapheme: a hatRange: - start: {line: 2, character: 24} - end: {line: 2, character: 25} + start: {line: 2, character: 23} + end: {line: 2, character: 24} - hatStyle: default grapheme: n hatRange: start: {line: 2, character: 33} end: {line: 2, character: 34} - - hatStyle: default + - hatStyle: blue grapheme: s hatRange: start: {line: 2, character: 38} end: {line: 2, character: 39} - hatStyle: blue - grapheme: c + grapheme: e hatRange: - start: {line: 2, character: 46} - end: {line: 2, character: 47} - - hatStyle: default + start: {line: 2, character: 41} + end: {line: 2, character: 42} + - hatStyle: blue grapheme: . hatRange: start: {line: 2, character: 48} @@ -154,27 +154,27 @@ finalState: hatRange: start: {line: 2, character: 30} end: {line: 2, character: 31} - - hatStyle: default + - hatStyle: blue grapheme: s hatRange: start: {line: 2, character: 38} end: {line: 2, character: 39} - hatStyle: default - grapheme: c + grapheme: a hatRange: - start: {line: 2, character: 24} - end: {line: 2, character: 25} + start: {line: 2, character: 23} + end: {line: 2, character: 24} - hatStyle: blue - grapheme: c + grapheme: e hatRange: - start: {line: 2, character: 46} - end: {line: 2, character: 47} + start: {line: 2, character: 41} + end: {line: 2, character: 42} - hatStyle: default - grapheme: b + grapheme: v hatRange: - start: {line: 2, character: 17} - end: {line: 2, character: 18} - - hatStyle: default + start: {line: 2, character: 19} + end: {line: 2, character: 20} + - hatStyle: blue grapheme: . hatRange: start: {line: 2, character: 48} @@ -190,41 +190,41 @@ finalState: start: {line: 2, character: 8} end: {line: 2, character: 9} - hatStyle: default - grapheme: i + grapheme: c hatRange: - start: {line: 2, character: 3} - end: {line: 2, character: 4} + start: {line: 2, character: 4} + end: {line: 2, character: 5} - hatStyle: default grapheme: "!" hatRange: start: {line: 0, character: 21} end: {line: 0, character: 22} - - hatStyle: blue + - hatStyle: default grapheme: . hatRange: start: {line: 4, character: 20} end: {line: 4, character: 21} - hatStyle: default - grapheme: a + grapheme: i hatRange: - start: {line: 4, character: 18} - end: {line: 4, character: 19} + start: {line: 4, character: 14} + end: {line: 4, character: 15} - hatStyle: default grapheme: u hatRange: start: {line: 0, character: 12} end: {line: 0, character: 13} - - hatStyle: blue - grapheme: h + - hatStyle: default + grapheme: e hatRange: - start: {line: 4, character: 10} - end: {line: 4, character: 11} + start: {line: 4, character: 11} + end: {line: 4, character: 12} - hatStyle: blue grapheme: o hatRange: start: {line: 0, character: 9} end: {line: 0, character: 10} - - hatStyle: blue + - hatStyle: default grapheme: s hatRange: start: {line: 4, character: 5} @@ -240,7 +240,7 @@ finalState: start: {line: 0, character: 5} end: {line: 0, character: 6} - hatStyle: default - grapheme: w + grapheme: o hatRange: - start: {line: 4, character: 2} - end: {line: 4, character: 3} + start: {line: 4, character: 1} + end: {line: 4, character: 2} From b7118b8a58559e6ff323d761decffd9dd3a1f642 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 13:57:54 +0200 Subject: [PATCH 11/12] Meta Updater --- .../fixtures/clearAndSetSelection.json | 4 +- .../actions/fixtures/insertCopyAfter.json | 10 +- .../actions/fixtures/insertCopyBefore.json | 10 +- .../fixtures/insertEmptyLineAfter.json | 8 +- .../fixtures/insertEmptyLineBefore.json | 4 +- .../user/actions/fixtures/moveToTarget.json | 4 +- .../modifiers/fixtures/relativeScope.json | 8 +- .../user/tutorial/fixtures/basic-coding.json | 1014 ++++++++--------- .../user/tutorial/fixtures/introduction.json | 360 +++--- 9 files changed, 711 insertions(+), 711 deletions(-) diff --git a/packages/app-web-docs/src/docs/user/actions/fixtures/clearAndSetSelection.json b/packages/app-web-docs/src/docs/user/actions/fixtures/clearAndSetSelection.json index 61d44296d7..3a01332aec 100644 --- a/packages/app-web-docs/src/docs/user/actions/fixtures/clearAndSetSelection.json +++ b/packages/app-web-docs/src/docs/user/actions/fixtures/clearAndSetSelection.json @@ -76,7 +76,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "b", "hatRange": { "start": { @@ -107,7 +107,7 @@ ], "hatTokenMap": [ { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "b", "hatRange": { "start": { diff --git a/packages/app-web-docs/src/docs/user/actions/fixtures/insertCopyAfter.json b/packages/app-web-docs/src/docs/user/actions/fixtures/insertCopyAfter.json index 3538c97927..ff1b4ac701 100644 --- a/packages/app-web-docs/src/docs/user/actions/fixtures/insertCopyAfter.json +++ b/packages/app-web-docs/src/docs/user/actions/fixtures/insertCopyAfter.json @@ -76,7 +76,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "b", "hatRange": { "start": { @@ -121,7 +121,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "b", "hatRange": { "start": { @@ -163,7 +163,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "blue", "grapheme": "b", "hatRange": { "start": { @@ -265,7 +265,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { @@ -310,7 +310,7 @@ ], "hatTokenMap": [ { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { diff --git a/packages/app-web-docs/src/docs/user/actions/fixtures/insertCopyBefore.json b/packages/app-web-docs/src/docs/user/actions/fixtures/insertCopyBefore.json index 5754a7663a..2b6501cace 100644 --- a/packages/app-web-docs/src/docs/user/actions/fixtures/insertCopyBefore.json +++ b/packages/app-web-docs/src/docs/user/actions/fixtures/insertCopyBefore.json @@ -62,7 +62,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { @@ -107,7 +107,7 @@ ], "hatTokenMap": [ { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { @@ -149,7 +149,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "blue", "grapheme": "/", "hatRange": { "start": { @@ -265,7 +265,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { @@ -310,7 +310,7 @@ ], "hatTokenMap": [ { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { diff --git a/packages/app-web-docs/src/docs/user/actions/fixtures/insertEmptyLineAfter.json b/packages/app-web-docs/src/docs/user/actions/fixtures/insertEmptyLineAfter.json index 5719ce6c67..2ed1b11f7f 100644 --- a/packages/app-web-docs/src/docs/user/actions/fixtures/insertEmptyLineAfter.json +++ b/packages/app-web-docs/src/docs/user/actions/fixtures/insertEmptyLineAfter.json @@ -62,7 +62,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { @@ -107,7 +107,7 @@ ], "hatTokenMap": [ { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { @@ -223,7 +223,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { @@ -268,7 +268,7 @@ ], "hatTokenMap": [ { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { diff --git a/packages/app-web-docs/src/docs/user/actions/fixtures/insertEmptyLineBefore.json b/packages/app-web-docs/src/docs/user/actions/fixtures/insertEmptyLineBefore.json index 872890d086..a9a92edaf9 100644 --- a/packages/app-web-docs/src/docs/user/actions/fixtures/insertEmptyLineBefore.json +++ b/packages/app-web-docs/src/docs/user/actions/fixtures/insertEmptyLineBefore.json @@ -62,7 +62,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { @@ -107,7 +107,7 @@ ], "hatTokenMap": [ { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "/", "hatRange": { "start": { diff --git a/packages/app-web-docs/src/docs/user/actions/fixtures/moveToTarget.json b/packages/app-web-docs/src/docs/user/actions/fixtures/moveToTarget.json index 09b67cfa77..2cc0f6d3ca 100644 --- a/packages/app-web-docs/src/docs/user/actions/fixtures/moveToTarget.json +++ b/packages/app-web-docs/src/docs/user/actions/fixtures/moveToTarget.json @@ -79,7 +79,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "b", "hatRange": { "start": { @@ -138,7 +138,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "b", "hatRange": { "start": { diff --git a/packages/app-web-docs/src/docs/user/modifiers/fixtures/relativeScope.json b/packages/app-web-docs/src/docs/user/modifiers/fixtures/relativeScope.json index 06b69cf4e6..85474110cf 100644 --- a/packages/app-web-docs/src/docs/user/modifiers/fixtures/relativeScope.json +++ b/packages/app-web-docs/src/docs/user/modifiers/fixtures/relativeScope.json @@ -591,7 +591,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": ",", "hatRange": { "start": { @@ -619,7 +619,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "blue", "grapheme": ",", "hatRange": { "start": { @@ -706,7 +706,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "blue", "grapheme": ",", "hatRange": { "start": { @@ -734,7 +734,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": ",", "hatRange": { "start": { diff --git a/packages/app-web-docs/src/docs/user/tutorial/fixtures/basic-coding.json b/packages/app-web-docs/src/docs/user/tutorial/fixtures/basic-coding.json index 1b165836ca..e07b1aa4f2 100644 --- a/packages/app-web-docs/src/docs/user/tutorial/fixtures/basic-coding.json +++ b/packages/app-web-docs/src/docs/user/tutorial/fixtures/basic-coding.json @@ -211,15 +211,15 @@ }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "o", "hatRange": { "start": { "line": 8, - "character": 9 + "character": 8 }, "end": { "line": 8, - "character": 10 + "character": 9 } } }, @@ -337,15 +337,15 @@ }, { "hatStyle": "default", - "grapheme": "c", + "grapheme": "l", "hatRange": { "start": { "line": 7, - "character": 17 + "character": 19 }, "end": { "line": 7, - "character": 18 + "character": 20 } } }, @@ -406,16 +406,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "o", + "hatStyle": "default", + "grapheme": "c", "hatRange": { "start": { "line": 4, - "character": 15 + "character": 14 }, "end": { "line": 4, - "character": 16 + "character": 15 } } }, @@ -518,7 +518,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "o", "hatRange": { "start": { @@ -602,30 +602,30 @@ } }, { - "hatStyle": "blue", - "grapheme": "e", + "hatStyle": "default", + "grapheme": "d", "hatRange": { "start": { "line": 0, - "character": 1 + "character": 0 }, "end": { "line": 0, - "character": 2 + "character": 1 } } }, { - "hatStyle": "blue", - "grapheme": "_", + "hatStyle": "default", + "grapheme": "p", "hatRange": { "start": { "line": 0, - "character": 9 + "character": 4 }, "end": { "line": 0, - "character": 10 + "character": 5 } } }, @@ -644,7 +644,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "green", "grapheme": "o", "hatRange": { "start": { @@ -914,15 +914,15 @@ }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "o", "hatRange": { "start": { "line": 10, - "character": 9 + "character": 8 }, "end": { "line": 10, - "character": 10 + "character": 9 } } }, @@ -1039,7 +1039,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "red", "grapheme": "o", "hatRange": { "start": { @@ -1138,15 +1138,15 @@ }, { "hatStyle": "default", - "grapheme": "c", + "grapheme": "l", "hatRange": { "start": { "line": 7, - "character": 17 + "character": 19 }, "end": { "line": 7, - "character": 18 + "character": 20 } } }, @@ -1207,16 +1207,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "o", + "hatStyle": "default", + "grapheme": "c", "hatRange": { "start": { "line": 4, - "character": 15 + "character": 14 }, "end": { "line": 4, - "character": 16 + "character": 15 } } }, @@ -1319,7 +1319,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "o", "hatRange": { "start": { @@ -1403,30 +1403,30 @@ } }, { - "hatStyle": "blue", - "grapheme": "e", + "hatStyle": "default", + "grapheme": "d", "hatRange": { "start": { "line": 0, - "character": 1 + "character": 0 }, "end": { "line": 0, - "character": 2 + "character": 1 } } }, { - "hatStyle": "blue", - "grapheme": "_", + "hatStyle": "default", + "grapheme": "p", "hatRange": { "start": { "line": 0, - "character": 9 + "character": 4 }, "end": { "line": 0, - "character": 10 + "character": 5 } } }, @@ -1445,7 +1445,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "green", "grapheme": "o", "hatRange": { "start": { @@ -1777,29 +1777,29 @@ }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "f", "hatRange": { "start": { "line": 10, - "character": 4 + "character": 5 }, "end": { "line": 10, - "character": 5 + "character": 6 } } }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "o", "hatRange": { "start": { "line": 10, - "character": 9 + "character": 8 }, "end": { "line": 10, - "character": 10 + "character": 9 } } }, @@ -1860,16 +1860,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "u", + "hatStyle": "default", + "grapheme": "e", "hatRange": { "start": { "line": 9, - "character": 11 + "character": 9 }, "end": { "line": 9, - "character": 12 + "character": 10 } } }, @@ -1888,35 +1888,35 @@ } }, { - "hatStyle": "green", - "grapheme": "f", + "hatStyle": "default", + "grapheme": "i", "hatRange": { "start": { "line": 8, - "character": 5 + "character": 4 }, "end": { "line": 8, - "character": 6 + "character": 5 } } }, { "hatStyle": "default", - "grapheme": "o", + "grapheme": "l", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 9 }, "end": { "line": 8, - "character": 9 + "character": 10 } } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "=", "hatRange": { "start": { @@ -1931,20 +1931,20 @@ }, { "hatStyle": "default", - "grapheme": "b", + "grapheme": "c", "hatRange": { "start": { "line": 8, - "character": 17 + "character": 20 }, "end": { "line": 8, - "character": 18 + "character": 21 } } }, { - "hatStyle": "yellow", + "hatStyle": "blue", "grapheme": ":", "hatRange": { "start": { @@ -1959,15 +1959,15 @@ }, { "hatStyle": "default", - "grapheme": "f", + "grapheme": "d", "hatRange": { "start": { "line": 7, - "character": 2 + "character": 0 }, "end": { "line": 7, - "character": 3 + "character": 1 } } }, @@ -2000,16 +2000,16 @@ } }, { - "hatStyle": "default", - "grapheme": "c", + "hatStyle": "blue", + "grapheme": "o", "hatRange": { "start": { "line": 7, - "character": 17 + "character": 18 }, "end": { "line": 7, - "character": 18 + "character": 19 } } }, @@ -2028,7 +2028,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": ":", "hatRange": { "start": { @@ -2070,7 +2070,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "o", "hatRange": { "start": { @@ -2112,7 +2112,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": ":", "hatRange": { "start": { @@ -2182,7 +2182,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": "o", "hatRange": { "start": { @@ -2252,7 +2252,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "pink", "grapheme": ":", "hatRange": { "start": { @@ -2266,30 +2266,30 @@ } }, { - "hatStyle": "blue", - "grapheme": "e", + "hatStyle": "green", + "grapheme": "f", "hatRange": { "start": { "line": 0, - "character": 1 + "character": 2 }, "end": { "line": 0, - "character": 2 + "character": 3 } } }, { - "hatStyle": "blue", - "grapheme": "_", + "hatStyle": "default", + "grapheme": "p", "hatRange": { "start": { "line": 0, - "character": 9 + "character": 4 }, "end": { "line": 0, - "character": 10 + "character": 5 } } }, @@ -2350,7 +2350,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "=", "hatRange": { "start": { @@ -2392,7 +2392,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "yellow", "grapheme": ":", "hatRange": { "start": { @@ -2535,16 +2535,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "l", + "hatStyle": "default", + "grapheme": "b", "hatRange": { "start": { "line": 11, - "character": 17 + "character": 16 }, "end": { "line": 11, - "character": 18 + "character": 17 } } }, @@ -2564,29 +2564,29 @@ }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "f", "hatRange": { "start": { "line": 10, - "character": 4 + "character": 5 }, "end": { "line": 10, - "character": 5 + "character": 6 } } }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "o", "hatRange": { "start": { "line": 10, - "character": 9 + "character": 8 }, "end": { "line": 10, - "character": 10 + "character": 9 } } }, @@ -2619,16 +2619,16 @@ } }, { - "hatStyle": "default", - "grapheme": "e", + "hatStyle": "blue", + "grapheme": "h", "hatRange": { "start": { "line": 10, - "character": 21 + "character": 18 }, "end": { "line": 10, - "character": 22 + "character": 19 } } }, @@ -2661,16 +2661,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "u", + "hatStyle": "default", + "grapheme": "e", "hatRange": { "start": { "line": 9, - "character": 11 + "character": 9 }, "end": { "line": 9, - "character": 12 + "character": 10 } } }, @@ -2689,35 +2689,35 @@ } }, { - "hatStyle": "green", - "grapheme": "f", + "hatStyle": "default", + "grapheme": "i", "hatRange": { "start": { "line": 8, - "character": 5 + "character": 4 }, "end": { "line": 8, - "character": 6 + "character": 5 } } }, { "hatStyle": "default", - "grapheme": "o", + "grapheme": "l", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 9 }, "end": { "line": 8, - "character": 9 + "character": 10 } } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "=", "hatRange": { "start": { @@ -2732,20 +2732,20 @@ }, { "hatStyle": "default", - "grapheme": "b", + "grapheme": "c", "hatRange": { "start": { "line": 8, - "character": 17 + "character": 20 }, "end": { "line": 8, - "character": 18 + "character": 21 } } }, { - "hatStyle": "yellow", + "hatStyle": "blue", "grapheme": ":", "hatRange": { "start": { @@ -2760,15 +2760,15 @@ }, { "hatStyle": "default", - "grapheme": "f", + "grapheme": "d", "hatRange": { "start": { "line": 7, - "character": 2 + "character": 0 }, "end": { "line": 7, - "character": 3 + "character": 1 } } }, @@ -2801,16 +2801,16 @@ } }, { - "hatStyle": "default", - "grapheme": "c", + "hatStyle": "blue", + "grapheme": "o", "hatRange": { "start": { "line": 7, - "character": 17 + "character": 18 }, "end": { "line": 7, - "character": 18 + "character": 19 } } }, @@ -2829,7 +2829,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": ":", "hatRange": { "start": { @@ -2871,7 +2871,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "o", "hatRange": { "start": { @@ -2913,7 +2913,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": ":", "hatRange": { "start": { @@ -2983,7 +2983,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": "o", "hatRange": { "start": { @@ -3053,7 +3053,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "pink", "grapheme": ":", "hatRange": { "start": { @@ -3067,30 +3067,30 @@ } }, { - "hatStyle": "blue", - "grapheme": "e", + "hatStyle": "green", + "grapheme": "f", "hatRange": { "start": { "line": 0, - "character": 1 + "character": 2 }, "end": { "line": 0, - "character": 2 + "character": 3 } } }, { - "hatStyle": "blue", - "grapheme": "_", + "hatStyle": "default", + "grapheme": "p", "hatRange": { "start": { "line": 0, - "character": 9 + "character": 4 }, "end": { "line": 0, - "character": 10 + "character": 5 } } }, @@ -3151,7 +3151,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "=", "hatRange": { "start": { @@ -3193,7 +3193,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "yellow", "grapheme": ":", "hatRange": { "start": { @@ -3274,15 +3274,15 @@ }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "i", "hatRange": { "start": { "line": 14, - "character": 1 + "character": 2 }, "end": { "line": 14, - "character": 2 + "character": 3 } } }, @@ -3316,15 +3316,15 @@ }, { "hatStyle": "default", - "grapheme": "k", + "grapheme": "a", "hatRange": { "start": { "line": 14, - "character": 17 + "character": 15 }, "end": { "line": 14, - "character": 18 + "character": 16 } } }, @@ -3372,15 +3372,15 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "l", "hatRange": { "start": { "line": 11, - "character": 18 + "character": 17 }, "end": { "line": 11, - "character": 19 + "character": 18 } } }, @@ -3400,29 +3400,29 @@ }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "f", "hatRange": { "start": { "line": 10, - "character": 4 + "character": 5 }, "end": { "line": 10, - "character": 5 + "character": 6 } } }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "o", "hatRange": { "start": { "line": 10, - "character": 9 + "character": 8 }, "end": { "line": 10, - "character": 10 + "character": 9 } } }, @@ -3455,7 +3455,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "h", "hatRange": { "start": { @@ -3497,35 +3497,35 @@ } }, { - "hatStyle": "blue", - "grapheme": "u", + "hatStyle": "default", + "grapheme": "n", "hatRange": { "start": { "line": 9, - "character": 11 + "character": 13 }, "end": { "line": 9, - "character": 12 + "character": 14 } } }, { "hatStyle": "default", - "grapheme": "w", + "grapheme": "t", "hatRange": { "start": { "line": 9, - "character": 16 + "character": 19 }, "end": { "line": 9, - "character": 17 + "character": 20 } } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "f", "hatRange": { "start": { @@ -3540,20 +3540,20 @@ }, { "hatStyle": "default", - "grapheme": "o", + "grapheme": "r", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 11 }, "end": { "line": 8, - "character": 9 + "character": 12 } } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "=", "hatRange": { "start": { @@ -3568,20 +3568,20 @@ }, { "hatStyle": "default", - "grapheme": "b", + "grapheme": "k", "hatRange": { "start": { "line": 8, - "character": 17 + "character": 21 }, "end": { "line": 8, - "character": 18 + "character": 22 } } }, { - "hatStyle": "yellow", + "hatStyle": "blue", "grapheme": ":", "hatRange": { "start": { @@ -3596,15 +3596,15 @@ }, { "hatStyle": "default", - "grapheme": "f", + "grapheme": "e", "hatRange": { "start": { "line": 7, - "character": 2 + "character": 1 }, "end": { "line": 7, - "character": 3 + "character": 2 } } }, @@ -3665,7 +3665,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": ":", "hatRange": { "start": { @@ -3680,15 +3680,15 @@ }, { "hatStyle": "default", - "grapheme": "n", + "grapheme": "p", "hatRange": { "start": { "line": 4, - "character": 11 + "character": 8 }, "end": { "line": 4, - "character": 12 + "character": 9 } } }, @@ -3749,7 +3749,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": ":", "hatRange": { "start": { @@ -3763,16 +3763,16 @@ } }, { - "hatStyle": "default", - "grapheme": "t", + "hatStyle": "blue", + "grapheme": "i", "hatRange": { "start": { "line": 2, - "character": 12 + "character": 10 }, "end": { "line": 2, - "character": 13 + "character": 11 } } }, @@ -3861,7 +3861,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "f", "hatRange": { "start": { @@ -3889,7 +3889,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "pink", "grapheme": ":", "hatRange": { "start": { @@ -3903,16 +3903,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "e", + "hatStyle": "default", + "grapheme": "d", "hatRange": { "start": { "line": 0, - "character": 1 + "character": 0 }, "end": { "line": 0, - "character": 2 + "character": 1 } } }, @@ -3945,7 +3945,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "red", "grapheme": "o", "hatRange": { "start": { @@ -3987,7 +3987,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "=", "hatRange": { "start": { @@ -4029,7 +4029,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "yellow", "grapheme": ":", "hatRange": { "start": { @@ -4089,15 +4089,15 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "l", "hatRange": { "start": { "line": 11, - "character": 18 + "character": 17 }, "end": { "line": 11, - "character": 19 + "character": 18 } } }, @@ -4117,29 +4117,29 @@ }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "o", "hatRange": { "start": { "line": 10, - "character": 9 + "character": 8 }, "end": { "line": 10, - "character": 10 + "character": 9 } } }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "f", "hatRange": { "start": { "line": 10, - "character": 4 + "character": 5 }, "end": { "line": 10, - "character": 5 + "character": 6 } } }, @@ -4172,7 +4172,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "h", "hatRange": { "start": { @@ -4214,16 +4214,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "u", + "hatStyle": "default", + "grapheme": "n", "hatRange": { "start": { "line": 9, - "character": 11 + "character": 13 }, "end": { "line": 9, - "character": 12 + "character": 14 } } }, @@ -4257,15 +4257,15 @@ }, { "hatStyle": "default", - "grapheme": "k", + "grapheme": "a", "hatRange": { "start": { "line": 15, - "character": 17 + "character": 15 }, "end": { "line": 15, - "character": 18 + "character": 16 } } }, @@ -4285,29 +4285,29 @@ }, { "hatStyle": "default", - "grapheme": "w", + "grapheme": "t", "hatRange": { "start": { "line": 9, - "character": 16 + "character": 19 }, "end": { "line": 9, - "character": 17 + "character": 20 } } }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "i", "hatRange": { "start": { "line": 15, - "character": 1 + "character": 2 }, "end": { "line": 15, - "character": 2 + "character": 3 } } }, @@ -4327,20 +4327,20 @@ }, { "hatStyle": "default", - "grapheme": "o", + "grapheme": "r", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 11 }, "end": { "line": 8, - "character": 9 + "character": 12 } } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "f", "hatRange": { "start": { @@ -4354,7 +4354,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "=", "hatRange": { "start": { @@ -4369,20 +4369,20 @@ }, { "hatStyle": "default", - "grapheme": "b", + "grapheme": "k", "hatRange": { "start": { "line": 8, - "character": 17 + "character": 21 }, "end": { "line": 8, - "character": 18 + "character": 22 } } }, { - "hatStyle": "yellow", + "hatStyle": "blue", "grapheme": ":", "hatRange": { "start": { @@ -4411,15 +4411,15 @@ }, { "hatStyle": "default", - "grapheme": "f", + "grapheme": "e", "hatRange": { "start": { "line": 7, - "character": 2 + "character": 1 }, "end": { "line": 7, - "character": 3 + "character": 2 } } }, @@ -4466,7 +4466,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": ":", "hatRange": { "start": { @@ -4481,15 +4481,15 @@ }, { "hatStyle": "default", - "grapheme": "n", + "grapheme": "p", "hatRange": { "start": { "line": 4, - "character": 11 + "character": 8 }, "end": { "line": 4, - "character": 12 + "character": 9 } } }, @@ -4536,7 +4536,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": ":", "hatRange": { "start": { @@ -4564,16 +4564,16 @@ } }, { - "hatStyle": "default", - "grapheme": "t", + "hatStyle": "blue", + "grapheme": "i", "hatRange": { "start": { "line": 2, - "character": 12 + "character": 10 }, "end": { "line": 2, - "character": 13 + "character": 11 } } }, @@ -4676,7 +4676,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "f", "hatRange": { "start": { @@ -4690,7 +4690,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "pink", "grapheme": ":", "hatRange": { "start": { @@ -4732,21 +4732,21 @@ } }, { - "hatStyle": "blue", - "grapheme": "e", + "hatStyle": "default", + "grapheme": "d", "hatRange": { "start": { "line": 0, - "character": 1 + "character": 0 }, "end": { "line": 0, - "character": 2 + "character": 1 } } }, { - "hatStyle": "pink", + "hatStyle": "red", "grapheme": "o", "hatRange": { "start": { @@ -4788,7 +4788,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "=", "hatRange": { "start": { @@ -4830,7 +4830,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "yellow", "grapheme": ":", "hatRange": { "start": { @@ -4897,7 +4897,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "default", "grapheme": "\"", "hatRange": { "start": { @@ -4912,20 +4912,20 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "l", "hatRange": { "start": { "line": 11, - "character": 18 + "character": 17 }, "end": { "line": 11, - "character": 19 + "character": 18 } } }, { - "hatStyle": "red", + "hatStyle": "blue", "grapheme": "\"", "hatRange": { "start": { @@ -4940,29 +4940,29 @@ }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "o", "hatRange": { "start": { "line": 10, - "character": 9 + "character": 8 }, "end": { "line": 10, - "character": 10 + "character": 9 } } }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "f", "hatRange": { "start": { "line": 10, - "character": 4 + "character": 5 }, "end": { "line": 10, - "character": 5 + "character": 6 } } }, @@ -4981,7 +4981,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "green", "grapheme": "\"", "hatRange": { "start": { @@ -4995,7 +4995,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "h", "hatRange": { "start": { @@ -5009,7 +5009,7 @@ } }, { - "hatStyle": "yellow", + "hatStyle": "red", "grapheme": "\"", "hatRange": { "start": { @@ -5065,7 +5065,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "pink", "grapheme": "\"", "hatRange": { "start": { @@ -5079,7 +5079,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "default", "grapheme": "a", "hatRange": { "start": { @@ -5093,7 +5093,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "yellow", "grapheme": "\"", "hatRange": { "start": { @@ -5108,29 +5108,29 @@ }, { "hatStyle": "default", - "grapheme": "w", + "grapheme": "i", "hatRange": { "start": { "line": 9, - "character": 16 + "character": 18 }, "end": { "line": 9, - "character": 17 + "character": 19 } } }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "_", "hatRange": { "start": { "line": 15, - "character": 1 + "character": 5 }, "end": { "line": 15, - "character": 2 + "character": 6 } } }, @@ -5150,20 +5150,20 @@ }, { "hatStyle": "default", - "grapheme": "o", + "grapheme": "r", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 11 }, "end": { "line": 8, - "character": 9 + "character": 12 } } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "f", "hatRange": { "start": { @@ -5177,7 +5177,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "=", "hatRange": { "start": { @@ -5192,20 +5192,20 @@ }, { "hatStyle": "default", - "grapheme": "b", + "grapheme": "k", "hatRange": { "start": { "line": 8, - "character": 17 + "character": 21 }, "end": { "line": 8, - "character": 18 + "character": 22 } } }, { - "hatStyle": "yellow", + "hatStyle": "blue", "grapheme": ":", "hatRange": { "start": { @@ -5234,15 +5234,15 @@ }, { "hatStyle": "default", - "grapheme": "f", + "grapheme": "d", "hatRange": { "start": { "line": 7, - "character": 2 + "character": 0 }, "end": { "line": 7, - "character": 3 + "character": 1 } } }, @@ -5289,7 +5289,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": ":", "hatRange": { "start": { @@ -5359,7 +5359,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": ":", "hatRange": { "start": { @@ -5415,16 +5415,16 @@ } }, { - "hatStyle": "default", - "grapheme": "_", + "hatStyle": "blue", + "grapheme": "v", "hatRange": { "start": { "line": 2, - "character": 20 + "character": 16 }, "end": { "line": 2, - "character": 21 + "character": 17 } } }, @@ -5499,7 +5499,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "f", "hatRange": { "start": { @@ -5513,7 +5513,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "pink", "grapheme": ":", "hatRange": { "start": { @@ -5527,16 +5527,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "_", + "hatStyle": "default", + "grapheme": "p", "hatRange": { "start": { "line": 0, - "character": 9 + "character": 4 }, "end": { "line": 0, - "character": 10 + "character": 5 } } }, @@ -5569,7 +5569,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "red", "grapheme": "o", "hatRange": { "start": { @@ -5597,7 +5597,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "v", "hatRange": { "start": { @@ -5611,7 +5611,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "=", "hatRange": { "start": { @@ -5653,7 +5653,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "yellow", "grapheme": ":", "hatRange": { "start": { @@ -5698,7 +5698,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "default", "grapheme": "\"", "hatRange": { "start": { @@ -5713,20 +5713,20 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "l", "hatRange": { "start": { "line": 11, - "character": 18 + "character": 17 }, "end": { "line": 11, - "character": 19 + "character": 18 } } }, { - "hatStyle": "red", + "hatStyle": "blue", "grapheme": "\"", "hatRange": { "start": { @@ -5741,29 +5741,29 @@ }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "f", "hatRange": { "start": { "line": 10, - "character": 4 + "character": 5 }, "end": { "line": 10, - "character": 5 + "character": 6 } } }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "o", "hatRange": { "start": { "line": 10, - "character": 9 + "character": 8 }, "end": { "line": 10, - "character": 10 + "character": 9 } } }, @@ -5782,7 +5782,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "green", "grapheme": "\"", "hatRange": { "start": { @@ -5796,7 +5796,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "h", "hatRange": { "start": { @@ -5810,7 +5810,7 @@ } }, { - "hatStyle": "yellow", + "hatStyle": "red", "grapheme": "\"", "hatRange": { "start": { @@ -5853,15 +5853,15 @@ }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "_", "hatRange": { "start": { "line": 15, - "character": 1 + "character": 5 }, "end": { "line": 15, - "character": 2 + "character": 6 } } }, @@ -5880,7 +5880,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "pink", "grapheme": "\"", "hatRange": { "start": { @@ -5894,7 +5894,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "default", "grapheme": "a", "hatRange": { "start": { @@ -5908,7 +5908,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "yellow", "grapheme": "\"", "hatRange": { "start": { @@ -5923,15 +5923,15 @@ }, { "hatStyle": "default", - "grapheme": "w", + "grapheme": "i", "hatRange": { "start": { "line": 9, - "character": 16 + "character": 18 }, "end": { "line": 9, - "character": 17 + "character": 19 } } }, @@ -5950,7 +5950,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "f", "hatRange": { "start": { @@ -5965,20 +5965,20 @@ }, { "hatStyle": "default", - "grapheme": "o", + "grapheme": "r", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 11 }, "end": { "line": 8, - "character": 9 + "character": 12 } } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "=", "hatRange": { "start": { @@ -5993,20 +5993,20 @@ }, { "hatStyle": "default", - "grapheme": "b", + "grapheme": "k", "hatRange": { "start": { "line": 8, - "character": 17 + "character": 21 }, "end": { "line": 8, - "character": 18 + "character": 22 } } }, { - "hatStyle": "yellow", + "hatStyle": "blue", "grapheme": ":", "hatRange": { "start": { @@ -6035,15 +6035,15 @@ }, { "hatStyle": "default", - "grapheme": "f", + "grapheme": "d", "hatRange": { "start": { "line": 7, - "character": 2 + "character": 0 }, "end": { "line": 7, - "character": 3 + "character": 1 } } }, @@ -6090,7 +6090,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": ":", "hatRange": { "start": { @@ -6174,7 +6174,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": ":", "hatRange": { "start": { @@ -6216,16 +6216,16 @@ } }, { - "hatStyle": "default", - "grapheme": "_", + "hatStyle": "blue", + "grapheme": "v", "hatRange": { "start": { "line": 2, - "character": 20 + "character": 16 }, "end": { "line": 2, - "character": 21 + "character": 17 } } }, @@ -6286,7 +6286,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "f", "hatRange": { "start": { @@ -6314,7 +6314,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "pink", "grapheme": ":", "hatRange": { "start": { @@ -6328,16 +6328,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "_", + "hatStyle": "default", + "grapheme": "p", "hatRange": { "start": { "line": 0, - "character": 9 + "character": 4 }, "end": { "line": 0, - "character": 10 + "character": 5 } } }, @@ -6370,7 +6370,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "red", "grapheme": "o", "hatRange": { "start": { @@ -6398,7 +6398,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "v", "hatRange": { "start": { @@ -6412,7 +6412,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "green", "grapheme": "=", "hatRange": { "start": { @@ -6454,7 +6454,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "yellow", "grapheme": ":", "hatRange": { "start": { @@ -6545,7 +6545,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "default", "grapheme": "\"", "hatRange": { "start": { @@ -6573,7 +6573,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "blue", "grapheme": "\"", "hatRange": { "start": { @@ -6629,7 +6629,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "green", "grapheme": "\"", "hatRange": { "start": { @@ -6657,7 +6657,7 @@ } }, { - "hatStyle": "yellow", + "hatStyle": "red", "grapheme": "\"", "hatRange": { "start": { @@ -6686,15 +6686,15 @@ }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "n", "hatRange": { "start": { "line": 9, - "character": 12 + "character": 13 }, "end": { "line": 9, - "character": 13 + "character": 14 } } }, @@ -6727,7 +6727,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "pink", "grapheme": "\"", "hatRange": { "start": { @@ -6755,7 +6755,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "yellow", "grapheme": "\"", "hatRange": { "start": { @@ -6770,15 +6770,15 @@ }, { "hatStyle": "default", - "grapheme": "t", + "grapheme": "e", "hatRange": { "start": { "line": 9, - "character": 19 + "character": 20 }, "end": { "line": 9, - "character": 20 + "character": 21 } } }, @@ -6811,16 +6811,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "o", + "hatStyle": "default", + "grapheme": "r", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 11 }, "end": { "line": 8, - "character": 9 + "character": 12 } } }, @@ -6840,15 +6840,15 @@ }, { "hatStyle": "default", - "grapheme": "c", + "grapheme": "k", "hatRange": { "start": { "line": 8, - "character": 20 + "character": 21 }, "end": { "line": 8, - "character": 21 + "character": 22 } } }, @@ -6909,7 +6909,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "c", "hatRange": { "start": { @@ -6952,15 +6952,15 @@ }, { "hatStyle": "default", - "grapheme": "n", + "grapheme": "t", "hatRange": { "start": { "line": 4, - "character": 11 + "character": 12 }, "end": { "line": 4, - "character": 12 + "character": 13 } } }, @@ -6979,7 +6979,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "o", "hatRange": { "start": { @@ -7091,7 +7091,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "green", "grapheme": "o", "hatRange": { "start": { @@ -7147,16 +7147,16 @@ } }, { - "hatStyle": "green", - "grapheme": "v", + "hatStyle": "blue", + "grapheme": "n", "hatRange": { "start": { "line": 1, - "character": 9 + "character": 8 }, "end": { "line": 1, - "character": 10 + "character": 9 } } }, @@ -7189,16 +7189,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "e", + "hatStyle": "green", + "grapheme": "f", "hatRange": { "start": { "line": 0, - "character": 1 + "character": 2 }, "end": { "line": 0, - "character": 2 + "character": 3 } } }, @@ -7217,7 +7217,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "red", "grapheme": "o", "hatRange": { "start": { @@ -7245,16 +7245,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "n", + "hatStyle": "green", + "grapheme": "v", "hatRange": { "start": { "line": 0, - "character": 24 + "character": 25 }, "end": { "line": 0, - "character": 25 + "character": 26 } } }, @@ -7332,7 +7332,7 @@ ], "hatTokenMap": [ { - "hatStyle": "blue", + "hatStyle": "pink", "grapheme": "\"", "hatRange": { "start": { @@ -7347,20 +7347,20 @@ }, { "hatStyle": "default", - "grapheme": "k", + "grapheme": "b", "hatRange": { "start": { "line": 12, - "character": 16 + "character": 12 }, "end": { "line": 12, - "character": 17 + "character": 13 } } }, { - "hatStyle": "default", + "hatStyle": "yellow", "grapheme": "\"", "hatRange": { "start": { @@ -7374,7 +7374,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "blue", "grapheme": "e", "hatRange": { "start": { @@ -7402,7 +7402,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "default", "grapheme": "\"", "hatRange": { "start": { @@ -7416,7 +7416,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "blue", "grapheme": "\"", "hatRange": { "start": { @@ -7458,7 +7458,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "green", "grapheme": "\"", "hatRange": { "start": { @@ -7472,7 +7472,7 @@ } }, { - "hatStyle": "yellow", + "hatStyle": "red", "grapheme": "\"", "hatRange": { "start": { @@ -7557,15 +7557,15 @@ }, { "hatStyle": "default", - "grapheme": "t", + "grapheme": "e", "hatRange": { "start": { "line": 9, - "character": 19 + "character": 20 }, "end": { "line": 9, - "character": 20 + "character": 21 } } }, @@ -7599,15 +7599,15 @@ }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "n", "hatRange": { "start": { "line": 9, - "character": 12 + "character": 13 }, "end": { "line": 9, - "character": 13 + "character": 14 } } }, @@ -7627,15 +7627,15 @@ }, { "hatStyle": "default", - "grapheme": "c", + "grapheme": "k", "hatRange": { "start": { "line": 8, - "character": 20 + "character": 21 }, "end": { "line": 8, - "character": 21 + "character": 22 } } }, @@ -7668,16 +7668,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "o", + "hatStyle": "default", + "grapheme": "r", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 11 }, "end": { "line": 8, - "character": 9 + "character": 12 } } }, @@ -7696,7 +7696,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "c", "hatRange": { "start": { @@ -7794,7 +7794,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "o", "hatRange": { "start": { @@ -7823,15 +7823,15 @@ }, { "hatStyle": "default", - "grapheme": "n", + "grapheme": "t", "hatRange": { "start": { "line": 4, - "character": 11 + "character": 12 }, "end": { "line": 4, - "character": 12 + "character": 13 } } }, @@ -7906,7 +7906,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "green", "grapheme": "o", "hatRange": { "start": { @@ -7976,16 +7976,16 @@ } }, { - "hatStyle": "green", - "grapheme": "v", + "hatStyle": "blue", + "grapheme": "n", "hatRange": { "start": { "line": 1, - "character": 9 + "character": 8 }, "end": { "line": 1, - "character": 10 + "character": 9 } } }, @@ -8004,7 +8004,7 @@ } }, { - "hatStyle": "pink", + "hatStyle": "red", "grapheme": "o", "hatRange": { "start": { @@ -8046,16 +8046,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "n", + "hatStyle": "green", + "grapheme": "v", "hatRange": { "start": { "line": 0, - "character": 24 + "character": 25 }, "end": { "line": 0, - "character": 25 + "character": 26 } } }, @@ -8116,16 +8116,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "e", + "hatStyle": "green", + "grapheme": "f", "hatRange": { "start": { "line": 0, - "character": 1 + "character": 2 }, "end": { "line": 0, - "character": 2 + "character": 3 } } }, @@ -9941,7 +9941,7 @@ } }, { - "hatStyle": "yellow", + "hatStyle": "default", "grapheme": "o", "hatRange": { "start": { @@ -9956,34 +9956,34 @@ }, { "hatStyle": "default", - "grapheme": "e", + "grapheme": "u", "hatRange": { "start": { "line": 12, - "character": 5 + "character": 7 }, "end": { "line": 12, - "character": 6 + "character": 8 } } }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "a", "hatRange": { "start": { "line": 11, - "character": 17 + "character": 18 }, "end": { "line": 11, - "character": 18 + "character": 19 } } }, { - "hatStyle": "green", + "hatStyle": "default", "grapheme": "\"", "hatRange": { "start": { @@ -9997,7 +9997,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "blue", "grapheme": "\"", "hatRange": { "start": { @@ -10012,20 +10012,20 @@ }, { "hatStyle": "default", - "grapheme": "u", + "grapheme": "e", "hatRange": { "start": { "line": 11, - "character": 11 + "character": 9 }, "end": { "line": 11, - "character": 12 + "character": 10 } } }, { - "hatStyle": "pink", + "hatStyle": "green", "grapheme": "\"", "hatRange": { "start": { @@ -10067,7 +10067,7 @@ } }, { - "hatStyle": "yellow", + "hatStyle": "red", "grapheme": "\"", "hatRange": { "start": { @@ -10096,15 +10096,15 @@ }, { "hatStyle": "default", - "grapheme": "o", + "grapheme": "l", "hatRange": { "start": { "line": 10, - "character": 8 + "character": 9 }, "end": { "line": 10, - "character": 9 + "character": 10 } } }, @@ -10137,7 +10137,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "pink", "grapheme": "\"", "hatRange": { "start": { @@ -10151,7 +10151,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "yellow", "grapheme": "\"", "hatRange": { "start": { @@ -10166,15 +10166,15 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "k", "hatRange": { "start": { "line": 15, - "character": 15 + "character": 17 }, "end": { "line": 15, - "character": 16 + "character": 18 } } }, @@ -10208,15 +10208,15 @@ }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "n", "hatRange": { "start": { "line": 9, - "character": 12 + "character": 13 }, "end": { "line": 9, - "character": 13 + "character": 14 } } }, @@ -10277,16 +10277,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "o", + "hatStyle": "default", + "grapheme": "r", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 11 }, "end": { "line": 8, - "character": 9 + "character": 12 } } }, @@ -10320,15 +10320,15 @@ }, { "hatStyle": "blue", - "grapheme": "c", + "grapheme": "o", "hatRange": { "start": { "line": 7, - "character": 17 + "character": 18 }, "end": { "line": 7, - "character": 18 + "character": 19 } } }, @@ -10432,15 +10432,15 @@ }, { "hatStyle": "default", - "grapheme": "n", + "grapheme": "p", "hatRange": { "start": { "line": 4, - "character": 11 + "character": 8 }, "end": { "line": 4, - "character": 12 + "character": 9 } } }, @@ -10473,7 +10473,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "green", "grapheme": "v", "hatRange": { "start": { @@ -10501,16 +10501,16 @@ } }, { - "hatStyle": "default", - "grapheme": "p", + "hatStyle": "blue", + "grapheme": "r", "hatRange": { "start": { "line": 2, - "character": 8 + "character": 9 }, "end": { "line": 2, - "character": 9 + "character": 10 } } }, @@ -10585,7 +10585,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": "v", "hatRange": { "start": { @@ -10756,7 +10756,7 @@ ], "hatTokenMap": [ { - "hatStyle": "yellow", + "hatStyle": "default", "grapheme": "o", "hatRange": { "start": { @@ -10771,34 +10771,34 @@ }, { "hatStyle": "default", - "grapheme": "e", + "grapheme": "u", "hatRange": { "start": { "line": 12, - "character": 5 + "character": 7 }, "end": { "line": 12, - "character": 6 + "character": 8 } } }, { "hatStyle": "default", - "grapheme": "l", + "grapheme": "a", "hatRange": { "start": { "line": 11, - "character": 17 + "character": 18 }, "end": { "line": 11, - "character": 18 + "character": 19 } } }, { - "hatStyle": "green", + "hatStyle": "default", "grapheme": "\"", "hatRange": { "start": { @@ -10812,7 +10812,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "blue", "grapheme": "\"", "hatRange": { "start": { @@ -10827,20 +10827,20 @@ }, { "hatStyle": "default", - "grapheme": "u", + "grapheme": "e", "hatRange": { "start": { "line": 11, - "character": 11 + "character": 9 }, "end": { "line": 11, - "character": 12 + "character": 10 } } }, { - "hatStyle": "pink", + "hatStyle": "green", "grapheme": "\"", "hatRange": { "start": { @@ -10882,7 +10882,7 @@ } }, { - "hatStyle": "yellow", + "hatStyle": "red", "grapheme": "\"", "hatRange": { "start": { @@ -10911,15 +10911,15 @@ }, { "hatStyle": "default", - "grapheme": "o", + "grapheme": "l", "hatRange": { "start": { "line": 10, - "character": 8 + "character": 9 }, "end": { "line": 10, - "character": 9 + "character": 10 } } }, @@ -10952,7 +10952,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "pink", "grapheme": "\"", "hatRange": { "start": { @@ -10966,7 +10966,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "yellow", "grapheme": "\"", "hatRange": { "start": { @@ -10981,15 +10981,15 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "k", "hatRange": { "start": { "line": 15, - "character": 15 + "character": 17 }, "end": { "line": 15, - "character": 16 + "character": 18 } } }, @@ -11023,15 +11023,15 @@ }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "n", "hatRange": { "start": { "line": 9, - "character": 12 + "character": 13 }, "end": { "line": 9, - "character": 13 + "character": 14 } } }, @@ -11092,16 +11092,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "o", + "hatStyle": "default", + "grapheme": "r", "hatRange": { "start": { "line": 8, - "character": 8 + "character": 11 }, "end": { "line": 8, - "character": 9 + "character": 12 } } }, @@ -11135,15 +11135,15 @@ }, { "hatStyle": "blue", - "grapheme": "c", + "grapheme": "o", "hatRange": { "start": { "line": 7, - "character": 17 + "character": 18 }, "end": { "line": 7, - "character": 18 + "character": 19 } } }, @@ -11247,15 +11247,15 @@ }, { "hatStyle": "default", - "grapheme": "n", + "grapheme": "p", "hatRange": { "start": { "line": 4, - "character": 11 + "character": 8 }, "end": { "line": 4, - "character": 12 + "character": 9 } } }, @@ -11288,7 +11288,7 @@ } }, { - "hatStyle": "red", + "hatStyle": "green", "grapheme": "v", "hatRange": { "start": { @@ -11316,16 +11316,16 @@ } }, { - "hatStyle": "default", - "grapheme": "p", + "hatStyle": "blue", + "grapheme": "r", "hatRange": { "start": { "line": 2, - "character": 8 + "character": 9 }, "end": { "line": 2, - "character": 9 + "character": 10 } } }, @@ -11400,7 +11400,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "red", "grapheme": "v", "hatRange": { "start": { diff --git a/packages/app-web-docs/src/docs/user/tutorial/fixtures/introduction.json b/packages/app-web-docs/src/docs/user/tutorial/fixtures/introduction.json index f6f21a67d6..5ad3e187e4 100644 --- a/packages/app-web-docs/src/docs/user/tutorial/fixtures/introduction.json +++ b/packages/app-web-docs/src/docs/user/tutorial/fixtures/introduction.json @@ -63,20 +63,20 @@ }, { "hatStyle": "default", - "grapheme": "m", + "grapheme": "l", "hatRange": { "start": { "line": 0, - "character": 5 + "character": 2 }, "end": { "line": 0, - "character": 6 + "character": 3 } } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "o", "hatRange": { "start": { @@ -133,29 +133,29 @@ }, { "hatStyle": "default", - "grapheme": "e", + "grapheme": "h", "hatRange": { "start": { "line": 2, - "character": 9 + "character": 8 }, "end": { "line": 2, - "character": 10 + "character": 9 } } }, { "hatStyle": "default", - "grapheme": "t", + "grapheme": "a", "hatRange": { "start": { "line": 2, - "character": 13 + "character": 12 }, "end": { "line": 2, - "character": 14 + "character": 13 } } }, @@ -175,15 +175,15 @@ }, { "hatStyle": "default", - "grapheme": "o", + "grapheme": "d", "hatRange": { "start": { "line": 2, - "character": 28 + "character": 30 }, "end": { "line": 2, - "character": 29 + "character": 31 } } }, @@ -216,16 +216,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "c", + "hatStyle": "default", + "grapheme": "e", "hatRange": { "start": { "line": 2, - "character": 46 + "character": 41 }, "end": { "line": 2, - "character": 47 + "character": 42 } } }, @@ -273,43 +273,43 @@ }, { "hatStyle": "blue", - "grapheme": "s", + "grapheme": "e", "hatRange": { "start": { "line": 4, - "character": 5 + "character": 6 }, "end": { "line": 4, - "character": 6 + "character": 7 } } }, { "hatStyle": "default", - "grapheme": "h", + "grapheme": "t", "hatRange": { "start": { "line": 4, - "character": 10 + "character": 9 }, "end": { "line": 4, - "character": 11 + "character": 10 } } }, { "hatStyle": "default", - "grapheme": "d", + "grapheme": "r", "hatRange": { "start": { "line": 4, - "character": 15 + "character": 19 }, "end": { "line": 4, - "character": 16 + "character": 20 } } }, @@ -346,15 +346,15 @@ "hatTokenMap": [ { "hatStyle": "default", - "grapheme": "o", + "grapheme": "d", "hatRange": { "start": { "line": 2, - "character": 28 + "character": 30 }, "end": { "line": 2, - "character": 29 + "character": 31 } } }, @@ -415,44 +415,44 @@ } }, { - "hatStyle": "blue", - "grapheme": "c", + "hatStyle": "default", + "grapheme": "e", "hatRange": { "start": { "line": 2, - "character": 46 + "character": 41 }, "end": { "line": 2, - "character": 47 + "character": 42 } } }, { "hatStyle": "default", - "grapheme": "t", + "grapheme": "a", "hatRange": { "start": { "line": 2, - "character": 13 + "character": 12 }, "end": { "line": 2, - "character": 14 + "character": 13 } } }, { "hatStyle": "default", - "grapheme": "e", + "grapheme": "h", "hatRange": { "start": { "line": 2, - "character": 9 + "character": 8 }, "end": { "line": 2, - "character": 10 + "character": 9 } } }, @@ -514,15 +514,15 @@ }, { "hatStyle": "default", - "grapheme": "d", + "grapheme": "r", "hatRange": { "start": { "line": 4, - "character": 15 + "character": 19 }, "end": { "line": 4, - "character": 16 + "character": 20 } } }, @@ -542,20 +542,20 @@ }, { "hatStyle": "default", - "grapheme": "h", + "grapheme": "t", "hatRange": { "start": { "line": 4, - "character": 10 + "character": 9 }, "end": { "line": 4, - "character": 11 + "character": 10 } } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "o", "hatRange": { "start": { @@ -570,15 +570,15 @@ }, { "hatStyle": "blue", - "grapheme": "s", + "grapheme": "e", "hatRange": { "start": { "line": 4, - "character": 5 + "character": 6 }, "end": { "line": 4, - "character": 6 + "character": 7 } } }, @@ -598,15 +598,15 @@ }, { "hatStyle": "default", - "grapheme": "m", + "grapheme": "l", "hatRange": { "start": { "line": 0, - "character": 5 + "character": 2 }, "end": { "line": 0, - "character": 6 + "character": 3 } } }, @@ -1357,21 +1357,21 @@ } }, { - "hatStyle": "blue", - "grapheme": "h", + "hatStyle": "default", + "grapheme": "e", "hatRange": { "start": { "line": 4, - "character": 10 + "character": 11 }, "end": { "line": 4, - "character": 11 + "character": 12 } } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "s", "hatRange": { "start": { @@ -1400,34 +1400,34 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "i", "hatRange": { "start": { "line": 4, - "character": 18 + "character": 14 }, "end": { "line": 4, - "character": 19 + "character": 15 } } }, { "hatStyle": "default", - "grapheme": "w", + "grapheme": "o", "hatRange": { "start": { "line": 4, - "character": 2 + "character": 1 }, "end": { "line": 4, - "character": 3 + "character": 2 } } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": ".", "hatRange": { "start": { @@ -1456,43 +1456,43 @@ }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "c", "hatRange": { "start": { "line": 2, - "character": 3 + "character": 4 }, "end": { "line": 2, - "character": 4 + "character": 5 } } }, { "hatStyle": "default", - "grapheme": "b", + "grapheme": "v", "hatRange": { "start": { "line": 2, - "character": 17 + "character": 19 }, "end": { "line": 2, - "character": 18 + "character": 20 } } }, { "hatStyle": "default", - "grapheme": "c", + "grapheme": "a", "hatRange": { "start": { "line": 2, - "character": 24 + "character": 23 }, "end": { "line": 2, - "character": 25 + "character": 24 } } }, @@ -1511,7 +1511,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "blue", "grapheme": "s", "hatRange": { "start": { @@ -1526,20 +1526,20 @@ }, { "hatStyle": "blue", - "grapheme": "c", + "grapheme": "e", "hatRange": { "start": { "line": 2, - "character": 46 + "character": 41 }, "end": { "line": 2, - "character": 47 + "character": 42 } } }, { - "hatStyle": "default", + "hatStyle": "blue", "grapheme": ".", "hatRange": { "start": { @@ -1654,7 +1654,7 @@ } }, { - "hatStyle": "default", + "hatStyle": "blue", "grapheme": "s", "hatRange": { "start": { @@ -1669,48 +1669,48 @@ }, { "hatStyle": "default", - "grapheme": "c", + "grapheme": "a", "hatRange": { "start": { "line": 2, - "character": 24 + "character": 23 }, "end": { "line": 2, - "character": 25 + "character": 24 } } }, { "hatStyle": "blue", - "grapheme": "c", + "grapheme": "e", "hatRange": { "start": { "line": 2, - "character": 46 + "character": 41 }, "end": { "line": 2, - "character": 47 + "character": 42 } } }, { "hatStyle": "default", - "grapheme": "b", + "grapheme": "v", "hatRange": { "start": { "line": 2, - "character": 17 + "character": 19 }, "end": { "line": 2, - "character": 18 + "character": 20 } } }, { - "hatStyle": "default", + "hatStyle": "blue", "grapheme": ".", "hatRange": { "start": { @@ -1753,15 +1753,15 @@ }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "c", "hatRange": { "start": { "line": 2, - "character": 3 + "character": 4 }, "end": { "line": 2, - "character": 4 + "character": 5 } } }, @@ -1780,7 +1780,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": ".", "hatRange": { "start": { @@ -1795,15 +1795,15 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "i", "hatRange": { "start": { "line": 4, - "character": 18 + "character": 14 }, "end": { "line": 4, - "character": 19 + "character": 15 } } }, @@ -1822,16 +1822,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "h", + "hatStyle": "default", + "grapheme": "e", "hatRange": { "start": { "line": 4, - "character": 10 + "character": 11 }, "end": { "line": 4, - "character": 11 + "character": 12 } } }, @@ -1850,7 +1850,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "s", "hatRange": { "start": { @@ -1893,15 +1893,15 @@ }, { "hatStyle": "default", - "grapheme": "w", + "grapheme": "o", "hatRange": { "start": { "line": 4, - "character": 2 + "character": 1 }, "end": { "line": 4, - "character": 3 + "character": 2 } } } @@ -3302,29 +3302,29 @@ }, { "hatStyle": "default", - "grapheme": "t", + "grapheme": "a", "hatRange": { "start": { "line": 2, - "character": 13 + "character": 12 }, "end": { "line": 2, - "character": 14 + "character": 13 } } }, { "hatStyle": "default", - "grapheme": "e", + "grapheme": "i", "hatRange": { "start": { "line": 2, - "character": 5 + "character": 3 }, "end": { "line": 2, - "character": 6 + "character": 4 } } }, @@ -3399,7 +3399,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "e", "hatRange": { "start": { @@ -3427,7 +3427,7 @@ } }, { - "hatStyle": "green", + "hatStyle": "blue", "grapheme": "e", "hatRange": { "start": { @@ -3469,16 +3469,16 @@ } }, { - "hatStyle": "blue", - "grapheme": "h", + "hatStyle": "default", + "grapheme": "t", "hatRange": { "start": { "line": 4, - "character": 10 + "character": 9 }, "end": { "line": 4, - "character": 11 + "character": 10 } } }, @@ -3498,15 +3498,15 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "d", "hatRange": { "start": { "line": 4, - "character": 18 + "character": 15 }, "end": { "line": 4, - "character": 19 + "character": 16 } } }, @@ -3581,29 +3581,29 @@ }, { "hatStyle": "default", - "grapheme": "t", + "grapheme": "a", "hatRange": { "start": { "line": 2, - "character": 13 + "character": 12 }, "end": { "line": 2, - "character": 14 + "character": 13 } } }, { "hatStyle": "default", - "grapheme": "e", + "grapheme": "i", "hatRange": { "start": { "line": 2, - "character": 5 + "character": 3 }, "end": { "line": 2, - "character": 6 + "character": 4 } } }, @@ -3678,7 +3678,7 @@ } }, { - "hatStyle": "blue", + "hatStyle": "default", "grapheme": "e", "hatRange": { "start": { @@ -4264,71 +4264,71 @@ }, { "hatStyle": "default", - "grapheme": "e", + "grapheme": "n", "hatRange": { "start": { "line": 2, - "character": 41 + "character": 42 }, "end": { "line": 2, - "character": 42 + "character": 43 } } }, { "hatStyle": "default", - "grapheme": "s", + "grapheme": "h", "hatRange": { "start": { "line": 2, - "character": 38 + "character": 36 }, "end": { "line": 2, - "character": 39 + "character": 37 } } }, { "hatStyle": "default", - "grapheme": "n", + "grapheme": "i", "hatRange": { "start": { "line": 2, - "character": 33 + "character": 32 }, "end": { "line": 2, - "character": 34 + "character": 33 } } }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "d", "hatRange": { "start": { "line": 2, - "character": 29 + "character": 30 }, "end": { "line": 2, - "character": 30 + "character": 31 } } }, { "hatStyle": "default", - "grapheme": "c", + "grapheme": "a", "hatRange": { "start": { "line": 2, - "character": 24 + "character": 23 }, "end": { "line": 2, - "character": 25 + "character": 24 } } }, @@ -4348,43 +4348,43 @@ }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "t", "hatRange": { "start": { "line": 2, - "character": 12 + "character": 13 }, "end": { "line": 2, - "character": 13 + "character": 14 } } }, { "hatStyle": "default", - "grapheme": "h", + "grapheme": "e", "hatRange": { "start": { "line": 2, - "character": 8 + "character": 9 }, "end": { "line": 2, - "character": 9 + "character": 10 } } }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "c", "hatRange": { "start": { "line": 2, - "character": 3 + "character": 4 }, "end": { "line": 2, - "character": 4 + "character": 5 } } }, @@ -4477,43 +4477,43 @@ }, { "hatStyle": "default", - "grapheme": "h", + "grapheme": "e", "hatRange": { "start": { "line": 2, - "character": 8 + "character": 9 }, "end": { "line": 2, - "character": 9 + "character": 10 } } }, { "hatStyle": "default", - "grapheme": "a", + "grapheme": "t", "hatRange": { "start": { "line": 2, - "character": 12 + "character": 13 }, "end": { "line": 2, - "character": 13 + "character": 14 } } }, { "hatStyle": "default", - "grapheme": "i", + "grapheme": "c", "hatRange": { "start": { "line": 2, - "character": 3 + "character": 4 }, "end": { "line": 2, - "character": 4 + "character": 5 } } }, @@ -4533,71 +4533,71 @@ }, { "hatStyle": "default", - "grapheme": "c", + "grapheme": "a", "hatRange": { "start": { "line": 2, - "character": 24 + "character": 23 }, "end": { "line": 2, - "character": 25 + "character": 24 } } }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "d", "hatRange": { "start": { "line": 2, - "character": 29 + "character": 30 }, "end": { "line": 2, - "character": 30 + "character": 31 } } }, { "hatStyle": "default", - "grapheme": "n", + "grapheme": "i", "hatRange": { "start": { "line": 2, - "character": 33 + "character": 32 }, "end": { "line": 2, - "character": 34 + "character": 33 } } }, { "hatStyle": "default", - "grapheme": "s", + "grapheme": "h", "hatRange": { "start": { "line": 2, - "character": 38 + "character": 36 }, "end": { "line": 2, - "character": 39 + "character": 37 } } }, { "hatStyle": "default", - "grapheme": "e", + "grapheme": "n", "hatRange": { "start": { "line": 2, - "character": 41 + "character": 42 }, "end": { "line": 2, - "character": 42 + "character": 43 } } }, @@ -4781,15 +4781,15 @@ }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "d", "hatRange": { "start": { "line": 2, - "character": 29 + "character": 30 }, "end": { "line": 2, - "character": 30 + "character": 31 } } }, @@ -4924,15 +4924,15 @@ }, { "hatStyle": "default", - "grapheme": "r", + "grapheme": "d", "hatRange": { "start": { "line": 2, - "character": 29 + "character": 30 }, "end": { "line": 2, - "character": 30 + "character": 31 } } }, From d5ddf025bca6f02e7719d918882e7cd9db4beccf Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 10 Sep 2026 15:00:13 +0200 Subject: [PATCH 12/12] rename option --- packages/lib-common/src/types/HatTokenMap.ts | 6 +++--- packages/lib-engine/src/core/HatAllocator.test.ts | 2 +- packages/lib-engine/src/core/HatAllocator.ts | 8 +++----- packages/lib-node-common/src/runRecordedTest.ts | 2 +- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/lib-common/src/types/HatTokenMap.ts b/packages/lib-common/src/types/HatTokenMap.ts index 317e89099e..aff7ff2c2d 100644 --- a/packages/lib-common/src/types/HatTokenMap.ts +++ b/packages/lib-common/src/types/HatTokenMap.ts @@ -16,10 +16,10 @@ export interface HatTokenMap { export interface HatAllocationOptions { /** - * Whether to preserve previous hat assignments. Defaults to `true`. - * Set to `false` to initialize an allocation independently of its history. + * Whether to ignore previous hat assignments and allocate from scratch. + * Defaults to `false`. Forced hats still apply when starting fresh. */ - preserveExistingHats?: boolean; + startFresh?: boolean; } export interface TokenHat { diff --git a/packages/lib-engine/src/core/HatAllocator.test.ts b/packages/lib-engine/src/core/HatAllocator.test.ts index 007aa22917..c284f1d953 100644 --- a/packages/lib-engine/src/core/HatAllocator.test.ts +++ b/packages/lib-engine/src/core/HatAllocator.test.ts @@ -76,7 +76,7 @@ suite("HatAllocator", () => { assert.ok(map.getToken("blue", "h"), "Normal allocation preserves hats"); await allocator.allocateHats([forcedWorld], { - preserveExistingHats: false, + startFresh: true, }); assert.deepEqual(snapshot(), expected); assert.ok(map.getToken("default", "w"), "Forced hats are still applied"); diff --git a/packages/lib-engine/src/core/HatAllocator.ts b/packages/lib-engine/src/core/HatAllocator.ts index f55e5c03e3..456358ff63 100644 --- a/packages/lib-engine/src/core/HatAllocator.ts +++ b/packages/lib-engine/src/core/HatAllocator.ts @@ -60,11 +60,11 @@ export class HatAllocator { * * @param forceTokenHats If supplied, force the allocator to use these hats * for the given tokens. This is used for the tutorial, and for testing. - * @param options Controls whether to preserve previous hat assignments. + * @param options Controls whether to start fresh without previous hat assignments. */ async allocateHats( forceTokenHats?: TokenHat[], - { preserveExistingHats = true }: HatAllocationOptions = {}, + { startFresh = false }: HatAllocationOptions = {}, ) { const activeMap = await this.context.getActiveMap(); @@ -80,9 +80,7 @@ export class HatAllocator { tokenGraphemeSplitter: this.tokenGraphemeSplitter, enabledHatStyles: this.hats.enabledHatStyles, forceTokenHats: normalizedForceTokenHats, - oldTokenHats: preserveExistingHats - ? activeMap.getStaleTokenHats() - : [], + oldTokenHats: startFresh ? [] : activeMap.getStaleTokenHats(), hatStability: this.ide.configuration.getOwnConfiguration( "experimental.hatStability", ), diff --git a/packages/lib-node-common/src/runRecordedTest.ts b/packages/lib-node-common/src/runRecordedTest.ts index ed8ae66d3c..04feb1f73c 100644 --- a/packages/lib-node-common/src/runRecordedTest.ts +++ b/packages/lib-node-common/src/runRecordedTest.ts @@ -152,7 +152,7 @@ export async function runRecordedTest({ // depend on whether VS Code delivered those events before this point. await hatTokenMap.allocateHats( serializedMarksToTokenHats(fixture.initialState.marks, editor), - { preserveExistingHats: false }, + { startFresh: true }, ); await Promise.all(