diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1cb2e2a313..4e4359b36d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
## 2026
+- 2026-09-02: Visualize actions on the documentation page. ([#3330](https://github.com/cursorless-dev/cursorless/pull/3330))
- 2026-09-01: Visualize modifiers on the documentation page. ([#3328](https://github.com/cursorless-dev/cursorless/pull/3328); [#3329](https://github.com/cursorless-dev/cursorless/pull/3329))
- 2026-08-30: Overhauled the user documentation with generated and grouped action, modifier, and scope reference pages, richer descriptions and examples, dedicated paired-delimiter and target guides, and a streamlined landing page. ([#3303](https://github.com/cursorless-dev/cursorless/pull/3303); [#3304](https://github.com/cursorless-dev/cursorless/pull/3304); [#3305](https://github.com/cursorless-dev/cursorless/pull/3305); [#3306](https://github.com/cursorless-dev/cursorless/pull/3306); [#3307](https://github.com/cursorless-dev/cursorless/pull/3307); [#3308](https://github.com/cursorless-dev/cursorless/pull/3308); [#3309](https://github.com/cursorless-dev/cursorless/pull/3309); [#3310](https://github.com/cursorless-dev/cursorless/pull/3310); [#3311](https://github.com/cursorless-dev/cursorless/pull/3311); [#3312](https://github.com/cursorless-dev/cursorless/pull/3312); [#3313](https://github.com/cursorless-dev/cursorless/pull/3313); [#3314](https://github.com/cursorless-dev/cursorless/pull/3314); [#3315](https://github.com/cursorless-dev/cursorless/pull/3315); [#3316](https://github.com/cursorless-dev/cursorless/pull/3316))
- 2026-05-03: Add support for if and for statements in Talon-script. [`#3274`](https://github.com/cursorless-dev/cursorless/pull/3274)
diff --git a/packages/app-web-docs/src/docs/components/RecordedTestVisualizer.tsx b/packages/app-web-docs/src/docs/components/RecordedTestVisualizer.tsx
index cf582cabe2..4c22eb4c33 100644
--- a/packages/app-web-docs/src/docs/components/RecordedTestVisualizer.tsx
+++ b/packages/app-web-docs/src/docs/components/RecordedTestVisualizer.tsx
@@ -141,19 +141,27 @@ function CodeState({
const decorations = useMemo(
() => [
...state.selections.map(toDecoration),
- ...toMarkDecorations(state.marks),
+ ...toMarkDecorations(state.marks, state.documentContents),
],
- [state.selections, state.marks],
+ [state.selections, state.marks, state.documentContents],
);
return (
-
- {state.documentContents}
-
+ <>
+
+ {state.documentContents}
+
+ {state.clipboard != null && (
+
+ Clipboard:
+ "{state.clipboard}"
+
+ )}
+ >
);
}
@@ -178,19 +186,46 @@ function toDecoration(plainSelection: SelectionPlainObject): DecorationItem {
};
}
+/**
+ * Converts serialized token marks to Shiki decorations around the first
+ * occurrence of each mark's decorated character within its token.
+ */
function toMarkDecorations(
marks: SerializedMarks | undefined,
+ documentContents: string,
): DecorationItem[] {
if (marks == null) {
return [];
}
+ const lines = documentContents.split(/\r?\n/u);
+
return Object.entries(marks).map(([key, range]) => {
- const { hatStyle } = splitKey(key);
+ if (range.start.line !== range.end.line) {
+ throw new Error(`Mark ${key} spans multiple lines`);
+ }
+
+ const line = lines[range.start.line];
+
+ if (line == null) {
+ throw new Error(`Mark ${key} is outside the document`);
+ }
+
+ const { hatStyle, character } = splitKey(key);
+ const tokenText = line.slice(range.start.character, range.end.character);
+ const characterOffset = tokenText.indexOf(character);
+ const characterStart = range.start.character + characterOffset;
+
+ if (characterOffset === -1) {
+ throw new Error(`Mark ${key} does not occur in its token`);
+ }
return {
- start: range.start,
- end: range.end,
+ start: { line: range.start.line, character: characterStart },
+ end: {
+ line: range.start.line,
+ character: characterStart + character.length,
+ },
alwaysWrap: true,
properties: {
className: ["code-hat", `code-hat-${hatStyle}`],
diff --git a/packages/app-web-docs/src/docs/user/actions/addSelection.mdx b/packages/app-web-docs/src/docs/user/actions/addSelection.mdx
index 15607287b4..702ef14ae4 100644
--- a/packages/app-web-docs/src/docs/user/actions/addSelection.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/addSelection.mdx
@@ -2,6 +2,8 @@
sidebar_label: Append
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Append (Add selection)
Cursorless ID: `addSelection`
@@ -17,3 +19,15 @@ Default: `append`
## Examples
- `"append blue air"` - Adds the token containing letter `a` with a blue hat to the current selections.
+
+## Visualization
+
+
+
+
+
+### `"append air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/addSelectionAfter.mdx b/packages/app-web-docs/src/docs/user/actions/addSelectionAfter.mdx
index fdc2d4a399..99968729fd 100644
--- a/packages/app-web-docs/src/docs/user/actions/addSelectionAfter.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/addSelectionAfter.mdx
@@ -2,6 +2,8 @@
sidebar_label: Append post
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Append post (Add selection after)
Cursorless ID: `addSelectionAfter`
@@ -17,3 +19,15 @@ Default: `append post`
## Examples
- `"append post blue air"` - Adds an empty selection after the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"append post air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/addSelectionBefore.mdx b/packages/app-web-docs/src/docs/user/actions/addSelectionBefore.mdx
index 0a13fbcd48..b3f3ff3eef 100644
--- a/packages/app-web-docs/src/docs/user/actions/addSelectionBefore.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/addSelectionBefore.mdx
@@ -2,6 +2,8 @@
sidebar_label: Append pre
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Append pre (Add selection before)
Cursorless ID: `addSelectionBefore`
@@ -17,3 +19,15 @@ Default: `append pre`
## Examples
- `"append pre blue air"` - Adds an empty selection before the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"append pre air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/applyFormatter.mdx b/packages/app-web-docs/src/docs/user/actions/applyFormatter.mdx
index 5cba30920c..77989e6f72 100644
--- a/packages/app-web-docs/src/docs/user/actions/applyFormatter.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/applyFormatter.mdx
@@ -2,6 +2,8 @@
sidebar_label: Format
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Format (Apply formatter)
Cursorless ID: `applyFormatter`
@@ -17,3 +19,23 @@ Default: `format`
## Examples
- `"format camel at blue air"` - Reformats the token containing letter `a` with a blue hat as camel case.
+
+## Visualization
+
+
+
+
+
+### `"format camel at bat"`
+
+
+
+### `"format snake at bat"`
+
+
+
+### `"format camel at line"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/breakLine.mdx b/packages/app-web-docs/src/docs/user/actions/breakLine.mdx
index 75c611970d..d60d895c14 100644
--- a/packages/app-web-docs/src/docs/user/actions/breakLine.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/breakLine.mdx
@@ -2,6 +2,8 @@
sidebar_label: Break
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Break (Break line)
Cursorless ID: `breakLine`
@@ -17,3 +19,15 @@ Default: `break`
## Examples
- `"break blue air"` - Breaks the line before the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"break air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/callAsFunction.mdx b/packages/app-web-docs/src/docs/user/actions/callAsFunction.mdx
index 9f61c50f85..45292f293b 100644
--- a/packages/app-web-docs/src/docs/user/actions/callAsFunction.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/callAsFunction.mdx
@@ -2,6 +2,8 @@
sidebar_label: Call
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Call (Call as function)
Cursorless ID: `callAsFunction`
@@ -19,3 +21,23 @@ Default: `call`
- `"call blue air"` - Inserts a call to the token containing letter `a` with a blue hat at the current selection.
- `"call blue air on green bat"` - Inserts a call to the token containing letter `a` with a blue hat on the token containing letter `b` with a green hat.
+
+## Visualization
+
+
+
+
+
+### `"call air"`
+
+
+
+### `"call air"`
+
+
+
+### `"call air on bat"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/clearAndSetSelection.mdx b/packages/app-web-docs/src/docs/user/actions/clearAndSetSelection.mdx
index 9944cf8442..7c8b1a14e7 100644
--- a/packages/app-web-docs/src/docs/user/actions/clearAndSetSelection.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/clearAndSetSelection.mdx
@@ -2,6 +2,8 @@
sidebar_label: Change
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Change
Cursorless ID: `clearAndSetSelection`
@@ -18,3 +20,15 @@ Legacy: `clear`
## Examples
- `"change blue air"` - Changes the token containing letter `a` with a blue hat by clearing it and leaving the cursor in its place.
+
+## Visualization
+
+
+
+
+
+### `"change air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/copyToClipboard.mdx b/packages/app-web-docs/src/docs/user/actions/copyToClipboard.mdx
index da112a0cc7..5b72c8b8aa 100644
--- a/packages/app-web-docs/src/docs/user/actions/copyToClipboard.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/copyToClipboard.mdx
@@ -2,6 +2,8 @@
sidebar_label: Copy
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Copy (Copy to clipboard)
Cursorless ID: `copyToClipboard`
@@ -17,3 +19,15 @@ Default: `copy`
## Examples
- `"copy blue air"` - Copies the token containing letter `a` with a blue hat to the clipboard.
+
+## Visualization
+
+
+
+
+
+### `"copy line"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/cutToClipboard.mdx b/packages/app-web-docs/src/docs/user/actions/cutToClipboard.mdx
index c7ac516186..ca43875ea8 100644
--- a/packages/app-web-docs/src/docs/user/actions/cutToClipboard.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/cutToClipboard.mdx
@@ -2,6 +2,8 @@
sidebar_label: Carve
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Carve (Cut to clipboard)
Cursorless ID: `cutToClipboard`
@@ -17,3 +19,15 @@ Default: `carve`
## Examples
- `"carve blue air"` - Cuts the token containing letter `a` with a blue hat to the clipboard.
+
+## Visualization
+
+
+
+
+
+### `"carve line"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/decrement.mdx b/packages/app-web-docs/src/docs/user/actions/decrement.mdx
index ab91bf4861..3b4cd3e480 100644
--- a/packages/app-web-docs/src/docs/user/actions/decrement.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/decrement.mdx
@@ -2,6 +2,8 @@
sidebar_label: Decrement
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Decrement
Cursorless ID: `decrement`
@@ -17,3 +19,23 @@ Default: `decrement`
## Examples
- `"decrement blue five"` - Decrements the number at the token containing number `5` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"decrement five"`
+
+
+
+### `"decrement air"`
+
+
+
+### `"decrement line"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/deselect.mdx b/packages/app-web-docs/src/docs/user/actions/deselect.mdx
index 1c0116b859..79f4cc8b4e 100644
--- a/packages/app-web-docs/src/docs/user/actions/deselect.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/deselect.mdx
@@ -2,6 +2,8 @@
sidebar_label: Give
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Give (Deselect)
Cursorless ID: `deselect`
@@ -17,3 +19,15 @@ Default: `give`
## Examples
- `"give blue air"` - Removes the token containing letter `a` with a blue hat from the current selections.
+
+## Visualization
+
+
+
+
+
+### `"give air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/editNewLineAfter.mdx b/packages/app-web-docs/src/docs/user/actions/editNewLineAfter.mdx
index 377c2f2591..0f476f666d 100644
--- a/packages/app-web-docs/src/docs/user/actions/editNewLineAfter.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/editNewLineAfter.mdx
@@ -2,6 +2,8 @@
sidebar_label: Pour
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Pour (Edit new line/scope after)
Scope defaults to line. When used with a provided scope target, this action inserts the delimiters or spacing required for a new instance of that scope.
@@ -21,3 +23,19 @@ Default: `pour`
- `"pour blue air"` - Inserts a new line below the token containing letter `a` with a blue hat and moves the cursor to it.
- `"pour item blue air"` - Inserts the delimiters for a new collection item after the item containing the token containing letter `a` with a blue hat and moves the cursor there.
+
+## Visualization
+
+
+
+
+
+### `"pour air"`
+
+
+
+### `"pour token air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/editNewLineBefore.mdx b/packages/app-web-docs/src/docs/user/actions/editNewLineBefore.mdx
index 6de79669fd..a2f22eb117 100644
--- a/packages/app-web-docs/src/docs/user/actions/editNewLineBefore.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/editNewLineBefore.mdx
@@ -2,6 +2,8 @@
sidebar_label: Drink
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Drink (Edit new line/scope before)
Scope defaults to line. When used with a provided scope target, this action inserts the delimiters or spacing required for a new instance of that scope.
@@ -21,3 +23,19 @@ Default: `drink`
- `"drink blue air"` - Inserts a new line above the token containing letter `a` with a blue hat and moves the cursor to it.
- `"drink item blue air"` - Inserts the delimiters for a new collection item before the item containing the token containing letter `a` with a blue hat and moves the cursor there.
+
+## Visualization
+
+
+
+
+
+### `"drink air"`
+
+
+
+### `"drink token air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/increment.mdx b/packages/app-web-docs/src/docs/user/actions/increment.mdx
index cf2b424daa..cd1e4242ce 100644
--- a/packages/app-web-docs/src/docs/user/actions/increment.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/increment.mdx
@@ -2,6 +2,8 @@
sidebar_label: Increment
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Increment
Cursorless ID: `increment`
@@ -17,3 +19,23 @@ Default: `increment`
## Examples
- `"increment blue five"` - Increments the token containing number `5` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"increment five"`
+
+
+
+### `"increment air"`
+
+
+
+### `"increment line"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/indentLine.mdx b/packages/app-web-docs/src/docs/user/actions/indentLine.mdx
index 67ce8c478d..dc9f8f661b 100644
--- a/packages/app-web-docs/src/docs/user/actions/indentLine.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/indentLine.mdx
@@ -2,6 +2,8 @@
sidebar_label: Indent
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Indent (Indent line)
Cursorless ID: `indentLine`
@@ -17,3 +19,15 @@ Default: `indent`
## Examples
- `"indent blue air"` - Indents the line containing the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"indent air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/insertCopyAfter.mdx b/packages/app-web-docs/src/docs/user/actions/insertCopyAfter.mdx
index c8df2556cc..1a4b1bdf40 100644
--- a/packages/app-web-docs/src/docs/user/actions/insertCopyAfter.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/insertCopyAfter.mdx
@@ -2,6 +2,8 @@
sidebar_label: Clone
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Clone (Insert copy after)
After insertion, each selection moves to its newly created copy.
@@ -19,3 +21,19 @@ Default: `clone`
## Examples
- `"clone funk blue air"` - Inserts a copy of the function containing the token containing letter `a` with a blue hat after itself.
+
+## Visualization
+
+
+
+
+
+### `"clone air"`
+
+
+
+### `"clone token air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/insertCopyBefore.mdx b/packages/app-web-docs/src/docs/user/actions/insertCopyBefore.mdx
index ccc3849ebc..9119dad6b8 100644
--- a/packages/app-web-docs/src/docs/user/actions/insertCopyBefore.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/insertCopyBefore.mdx
@@ -2,6 +2,8 @@
sidebar_label: Clone up
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Clone up (Insert copy before)
After insertion, each selection moves to its newly created copy.
@@ -19,3 +21,19 @@ Default: `clone up`
## Examples
- `"clone up funk blue air"` - Inserts a copy of the function containing the token containing letter `a` with a blue hat before itself.
+
+## Visualization
+
+
+
+
+
+### `"clone up air"`
+
+
+
+### `"clone up token air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/insertEmptyLineAfter.mdx b/packages/app-web-docs/src/docs/user/actions/insertEmptyLineAfter.mdx
index 8d7087c21c..cd1f01cf19 100644
--- a/packages/app-web-docs/src/docs/user/actions/insertEmptyLineAfter.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/insertEmptyLineAfter.mdx
@@ -2,6 +2,8 @@
sidebar_label: Float
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Float (Insert empty line/scope after)
Scope defaults to line. When used with a provided scope target, this action inserts the delimiters or spacing required for a new instance of that scope.
@@ -20,3 +22,19 @@ Default: `float`
- `"float blue air"` - Inserts an empty line below the token containing letter `a` with a blue hat without moving the cursor.
- `"float item blue air"` - Inserts the required delimiter after the collection item containing the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"float air"`
+
+
+
+### `"float token bat"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/insertEmptyLineBefore.mdx b/packages/app-web-docs/src/docs/user/actions/insertEmptyLineBefore.mdx
index 98dcde6dbd..eaeef801ab 100644
--- a/packages/app-web-docs/src/docs/user/actions/insertEmptyLineBefore.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/insertEmptyLineBefore.mdx
@@ -2,6 +2,8 @@
sidebar_label: Drop
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Drop (Insert empty line/scope before)
Scope defaults to line. When used with a provided scope target, this action inserts the delimiters or spacing required for a new instance of that scope.
@@ -20,3 +22,19 @@ Default: `drop`
- `"drop blue air"` - Inserts an empty line above the token containing letter `a` with a blue hat without moving the cursor.
- `"drop item blue air"` - Inserts the required delimiter before the collection item containing the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"drop air"`
+
+
+
+### `"drop token air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/insertEmptyLinesAround.mdx b/packages/app-web-docs/src/docs/user/actions/insertEmptyLinesAround.mdx
index 831f4ceee2..0b660eb4cd 100644
--- a/packages/app-web-docs/src/docs/user/actions/insertEmptyLinesAround.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/insertEmptyLinesAround.mdx
@@ -2,6 +2,8 @@
sidebar_label: Puff
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Puff (Insert empty lines/scopes around)
Scope defaults to line. When used with a provided scope target, this action inserts the delimiters or spacing required for a new instance of that scope.
@@ -20,3 +22,19 @@ Default: `puff`
- `"puff blue air"` - Inserts empty lines around the line containing the token containing letter `a` with a blue hat without moving the cursor.
- `"puff token blue air"` - Inserts spaces around the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"puff air"`
+
+
+
+### `"puff token bat"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/insertSnippet.mdx b/packages/app-web-docs/src/docs/user/actions/insertSnippet.mdx
index 4ca6244956..145d3c3995 100644
--- a/packages/app-web-docs/src/docs/user/actions/insertSnippet.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/insertSnippet.mdx
@@ -2,6 +2,8 @@
sidebar_label: Snip
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Snip (Insert snippet)
Cursorless ID: `insertSnippet`
@@ -17,3 +19,15 @@ Default: `snip`
## Examples
- `"snip if after blue air"` - Inserts an if-statement snippet after the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"snip if after air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/joinLines.mdx b/packages/app-web-docs/src/docs/user/actions/joinLines.mdx
index c7a4bc4d89..4d425f855e 100644
--- a/packages/app-web-docs/src/docs/user/actions/joinLines.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/joinLines.mdx
@@ -2,6 +2,8 @@
sidebar_label: Join
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Join (Join lines)
When the target spans multiple lines, joins all of those lines; otherwise joins the target's line with the following line.
@@ -19,3 +21,15 @@ Default: `join`
## Examples
- `"join blue air"` - Joins the line containing the token containing letter `a` with a blue hat with the following line.
+
+## Visualization
+
+
+
+
+
+### `"join air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/moveToTarget.mdx b/packages/app-web-docs/src/docs/user/actions/moveToTarget.mdx
index bcf992b204..50cdcac47e 100644
--- a/packages/app-web-docs/src/docs/user/actions/moveToTarget.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/moveToTarget.mdx
@@ -2,6 +2,8 @@
sidebar_label: Move
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Move (Move to target)
A target destination is replaced, while a position destination such as `before` or `after` inserts there. The source is removed from its original location in either case.
@@ -21,3 +23,31 @@ Default: `move`
- `"move blue air"` - Moves the token containing letter `a` with a blue hat to the current selection.
- `"move blue air after green bat"` - Moves the token containing letter `a` with a blue hat to after the token containing letter `b` with a green hat.
+
+## Visualization
+
+
+
+
+
+### `"move air"`
+
+
+
+### `"move air to bat"`
+
+
+
+### `"move air before bat"`
+
+
+
+### `"move bat after air"`
+
+
+
+### `"move air and bat to cap and drum"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/nextHomophone.mdx b/packages/app-web-docs/src/docs/user/actions/nextHomophone.mdx
index ba9f99479e..52930dd31b 100644
--- a/packages/app-web-docs/src/docs/user/actions/nextHomophone.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/nextHomophone.mdx
@@ -2,6 +2,8 @@
sidebar_label: Phones
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Phones (Next homophone)
Cycles through words that sound alike, such as changing `where` to `wear`.
@@ -19,3 +21,19 @@ Default: `phones`
## Examples
- `"phones blue air"` - Replaces the token containing letter `a` with a blue hat with its next homophone.
+
+## Visualization
+
+
+
+
+
+### `"phones sit"`
+
+
+
+### `"phones sit"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/outdentLine.mdx b/packages/app-web-docs/src/docs/user/actions/outdentLine.mdx
index 2d920f98e3..8dfb80bf3e 100644
--- a/packages/app-web-docs/src/docs/user/actions/outdentLine.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/outdentLine.mdx
@@ -2,6 +2,8 @@
sidebar_label: Dedent
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Dedent (Outdent line)
Cursorless ID: `outdentLine`
@@ -17,3 +19,15 @@ Default: `dedent`
## Examples
- `"dedent blue air"` - Decreases the indentation of the line containing the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"dedent air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/pasteFromClipboard.mdx b/packages/app-web-docs/src/docs/user/actions/pasteFromClipboard.mdx
index 6368559d79..ff045e8b7b 100644
--- a/packages/app-web-docs/src/docs/user/actions/pasteFromClipboard.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/pasteFromClipboard.mdx
@@ -2,6 +2,8 @@
sidebar_label: Paste
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Paste (Paste from clipboard)
Cursorless ID: `pasteFromClipboard`
@@ -17,3 +19,23 @@ Default: `paste`
## Examples
- `"paste after blue air"` - Pastes the clipboard contents after the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"paste to air"`
+
+
+
+### `"paste before air"`
+
+
+
+### `"paste after air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/randomizeTargets.mdx b/packages/app-web-docs/src/docs/user/actions/randomizeTargets.mdx
index 364557a47e..79a038a000 100644
--- a/packages/app-web-docs/src/docs/user/actions/randomizeTargets.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/randomizeTargets.mdx
@@ -2,6 +2,8 @@
sidebar_label: Shuffle
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Shuffle (Randomize targets)
This action changes the order of multiple target contents. The targets can come from a list or range target, or from existing multiple selections.
@@ -21,3 +23,15 @@ Default: `shuffle`
- `"shuffle every item blue air"` - Randomizes the collection items associated with the token containing letter `a` with a blue hat.
- `"shuffle line blue air slice green bat"` - Randomizes the lines from the token containing letter `a` with a blue hat through the token containing letter `b` with a green hat.
- `"shuffle this"` - Randomizes the current selections.
+
+## Visualization
+
+
+
+
+
+### `"shuffle every item"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/remove.mdx b/packages/app-web-docs/src/docs/user/actions/remove.mdx
index cc20583b1e..07d3cf464c 100644
--- a/packages/app-web-docs/src/docs/user/actions/remove.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/remove.mdx
@@ -2,6 +2,8 @@
sidebar_label: Chuck
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Chuck (Remove)
This action can be used to remove a target without moving the cursor.
@@ -19,3 +21,15 @@ Default: `chuck`
## Examples
- `"chuck blue air"` - Removes the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"chuck air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/replaceWithTarget.mdx b/packages/app-web-docs/src/docs/user/actions/replaceWithTarget.mdx
index 49bc966fbe..00f4f89a4c 100644
--- a/packages/app-web-docs/src/docs/user/actions/replaceWithTarget.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/replaceWithTarget.mdx
@@ -2,6 +2,8 @@
sidebar_label: Bring
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Bring (Replace with target)
Cursorless ID: `replaceWithTarget`
@@ -19,3 +21,35 @@ Default: `bring`
- `"bring blue air"` - Inserts a copy of the token containing letter `a` with a blue hat at the current selection.
- `"bring blue air to green bat"` - Replaces the token containing letter `b` with a green hat with a copy of the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"bring air"`
+
+
+
+### `"bring air to bat"`
+
+
+
+### `"bring air before bat"`
+
+
+
+### `"bring bat after air"`
+
+
+
+### `"bring air to bat and cap"`
+
+
+
+### `"bring air and bat to cap and drum"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/reverseTargets.mdx b/packages/app-web-docs/src/docs/user/actions/reverseTargets.mdx
index 2c88ea0abc..b3ed576f42 100644
--- a/packages/app-web-docs/src/docs/user/actions/reverseTargets.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/reverseTargets.mdx
@@ -2,6 +2,8 @@
sidebar_label: Reverse
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Reverse (Reverse targets)
This action changes the order of multiple target contents. The targets can come from a list or range target, or from existing multiple selections.
@@ -21,3 +23,15 @@ Default: `reverse`
- `"reverse every item blue air"` - Reverses the collection items associated with the token containing letter `a` with a blue hat.
- `"reverse line blue air slice green bat"` - Reverses the lines from the token containing letter `a` with a blue hat through the token containing letter `b` with a green hat.
- `"reverse this"` - Reverses the current selections.
+
+## Visualization
+
+
+
+
+
+### `"reverse every item"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/rewrapWithPairedDelimiter.mdx b/packages/app-web-docs/src/docs/user/actions/rewrapWithPairedDelimiter.mdx
index 1379975fb2..23820ddbd1 100644
--- a/packages/app-web-docs/src/docs/user/actions/rewrapWithPairedDelimiter.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/rewrapWithPairedDelimiter.mdx
@@ -2,6 +2,8 @@
sidebar_label: Repack
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Repack (Rewrap with paired delimiter)
See [paired delimiters](../paired-delimiters.md) for the available pairs.
@@ -19,3 +21,15 @@ Default: `repack`
## Examples
- `"curly repack blue air"` - Replaces the paired delimiters around the token containing letter `a` with a blue hat with curly brackets.
+
+## Visualization
+
+
+
+
+
+### `"curly repack air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/setSelection.mdx b/packages/app-web-docs/src/docs/user/actions/setSelection.mdx
index 125abba5c5..17fad78944 100644
--- a/packages/app-web-docs/src/docs/user/actions/setSelection.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/setSelection.mdx
@@ -2,6 +2,8 @@
sidebar_label: Take
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Take (Select)
When used with a list target, this action creates one cursor for each target.
@@ -19,3 +21,15 @@ Default: `take`
## Examples
- `"take blue air"` - Selects the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"take air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/setSelectionAfter.mdx b/packages/app-web-docs/src/docs/user/actions/setSelectionAfter.mdx
index affe113a2f..38accaea93 100644
--- a/packages/app-web-docs/src/docs/user/actions/setSelectionAfter.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/setSelectionAfter.mdx
@@ -2,6 +2,8 @@
sidebar_label: Post
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Post (Set selection after)
When used with a list target, this action creates one cursor for each target.
@@ -19,3 +21,15 @@ Default: `post`
## Examples
- `"post blue air"` - Places the cursor after the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"post air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/setSelectionBefore.mdx b/packages/app-web-docs/src/docs/user/actions/setSelectionBefore.mdx
index 69ea0d907d..1fb70cbbc5 100644
--- a/packages/app-web-docs/src/docs/user/actions/setSelectionBefore.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/setSelectionBefore.mdx
@@ -2,6 +2,8 @@
sidebar_label: Pre
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Pre (Set selection before)
When used with a list target, this action creates one cursor for each target.
@@ -19,3 +21,15 @@ Default: `pre`
## Examples
- `"pre blue air"` - Places the cursor before the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"pre air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/sortTargets.mdx b/packages/app-web-docs/src/docs/user/actions/sortTargets.mdx
index 8d8a534896..8ada380643 100644
--- a/packages/app-web-docs/src/docs/user/actions/sortTargets.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/sortTargets.mdx
@@ -2,6 +2,8 @@
sidebar_label: Sort
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Sort (Sort targets)
This action changes the order of multiple target contents. The targets can come from a list or range target, or from existing multiple selections.
@@ -21,3 +23,15 @@ Default: `sort`
- `"sort every item blue air"` - Sorts the collection items associated with the token containing letter `a` with a blue hat.
- `"sort line blue air slice green bat"` - Sorts the lines from the token containing letter `a` with a blue hat through the token containing letter `b` with a green hat.
- `"sort this"` - Sorts the current selections.
+
+## Visualization
+
+
+
+
+
+### `"sort every item"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/swapTargets.mdx b/packages/app-web-docs/src/docs/user/actions/swapTargets.mdx
index 1729168068..2033450d5b 100644
--- a/packages/app-web-docs/src/docs/user/actions/swapTargets.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/swapTargets.mdx
@@ -2,6 +2,8 @@
sidebar_label: Swap
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Swap (Swap targets)
When both operands contain multiple targets, their targets are paired by position and swapped.
@@ -21,3 +23,19 @@ Default: `swap`
- `"swap with blue air"` - Swaps the current selection with the token containing letter `a` with a blue hat.
- `"swap blue air with green bat"` - Swaps the token containing letter `a` with a blue hat and the token containing letter `b` with a green hat.
+
+## Visualization
+
+
+
+
+
+### `"swap air with bat"`
+
+
+
+### `"swap air and bat with cap and drum"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/toggleLineComment.mdx b/packages/app-web-docs/src/docs/user/actions/toggleLineComment.mdx
index 01df9c0ea9..a8aceb1cb6 100644
--- a/packages/app-web-docs/src/docs/user/actions/toggleLineComment.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/toggleLineComment.mdx
@@ -2,6 +2,8 @@
sidebar_label: Comment
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Comment (Toggle line comment)
Cursorless ID: `toggleLineComment`
@@ -17,3 +19,19 @@ Default: `comment`
## Examples
- `"comment blue air"` - Toggles the comment on the line containing the token containing letter `a` with a blue hat.
+
+## Visualization
+
+
+
+
+
+### `"comment air"`
+
+
+
+### `"comment air"`
+
+
+
+
diff --git a/packages/app-web-docs/src/docs/user/actions/wrapWithPairedDelimiter.mdx b/packages/app-web-docs/src/docs/user/actions/wrapWithPairedDelimiter.mdx
index 73d8f645ea..15854230bd 100644
--- a/packages/app-web-docs/src/docs/user/actions/wrapWithPairedDelimiter.mdx
+++ b/packages/app-web-docs/src/docs/user/actions/wrapWithPairedDelimiter.mdx
@@ -2,6 +2,8 @@
sidebar_label: Wrap
---
+import { RecordedTestVisualizer, RecordedTestVisualizerOptions, RecordedTestVisualizerProvider } from "@site/src/docs/components/RecordedTestVisualizer";
+
# Wrap (Wrap with paired delimiter/snippet)
See [paired delimiters](../paired-delimiters.md) for the available pairs.
@@ -21,3 +23,19 @@ Default: `wrap`
- `"box wrap blue air"` - Wraps the token containing letter `a` with a blue hat in square brackets.
- `"if wrap blue air"` - Wraps the token containing letter `a` with a blue hat in an if-statement snippet.
+
+## Visualization
+
+
+
+
+
+### `"round wrap air"`
+
+
+
+### `"if wrap air"`
+
+
+
+
diff --git a/packages/test-vscode-e2e/src/suite/shouldSkipTest.ts b/packages/test-vscode-e2e/src/suite/shouldSkipTest.ts
index abc0f4089d..c14dc2301e 100644
--- a/packages/test-vscode-e2e/src/suite/shouldSkipTest.ts
+++ b/packages/test-vscode-e2e/src/suite/shouldSkipTest.ts
@@ -9,6 +9,12 @@ const isVersionProblematic =
semver.lt(vscode.version, "1.107.0") && semver.gte(vscode.version, "1.98.0");
export function shouldSkipRecordedTest(name: string): boolean {
+ switch (name) {
+ case "recorded/docs/actions/randomizeTargets":
+ return true;
+ // No default
+ }
+
return isVersionProblematic && name.startsWith("recorded/languages/latex/");
}
diff --git a/resources/fixtures/recorded/docs/actions/addSelection.yml b/resources/fixtures/recorded/docs/actions/addSelection.yml
new file mode 100644
index 0000000000..be100c1ebd
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/addSelection.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: append air
+ action:
+ name: addSelection
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 6}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 6}
+ - anchor: {line: 0, character: 7}
+ active: {line: 0, character: 10}
diff --git a/resources/fixtures/recorded/docs/actions/addSelectionAfter.yml b/resources/fixtures/recorded/docs/actions/addSelectionAfter.yml
new file mode 100644
index 0000000000..b7960cfffa
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/addSelectionAfter.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: append post air
+ action:
+ name: addSelectionAfter
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 6}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 6}
+ - anchor: {line: 0, character: 10}
+ active: {line: 0, character: 10}
diff --git a/resources/fixtures/recorded/docs/actions/addSelectionBefore.yml b/resources/fixtures/recorded/docs/actions/addSelectionBefore.yml
new file mode 100644
index 0000000000..ca6b552a73
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/addSelectionBefore.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: append pre air
+ action:
+ name: addSelectionBefore
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 6}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 6}
+ - anchor: {line: 0, character: 7}
+ active: {line: 0, character: 7}
diff --git a/resources/fixtures/recorded/docs/actions/applyFormatter.yml b/resources/fixtures/recorded/docs/actions/applyFormatter.yml
new file mode 100644
index 0000000000..ccc694fcd3
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/applyFormatter.yml
@@ -0,0 +1,29 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: format camel at bat
+ action:
+ name: replace
+ replaceWith: [bbbAaa]
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ usePrePhraseSnapshot: false
+spokenFormError: Action 'replace'
+initialState:
+ documentContents: // bbb_aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbbAaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/applyFormatter2.yml b/resources/fixtures/recorded/docs/actions/applyFormatter2.yml
new file mode 100644
index 0000000000..b74ae57f5c
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/applyFormatter2.yml
@@ -0,0 +1,29 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: format snake at bat
+ action:
+ name: replace
+ replaceWith: [bbb_aaa]
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ usePrePhraseSnapshot: false
+spokenFormError: Action 'replace'
+initialState:
+ documentContents: // bbbAaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 9}
+finalState:
+ documentContents: // bbb_aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/applyFormatter3.yml b/resources/fixtures/recorded/docs/actions/applyFormatter3.yml
new file mode 100644
index 0000000000..1c6e3c07ee
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/applyFormatter3.yml
@@ -0,0 +1,28 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: format camel at line
+ action:
+ name: replace
+ replaceWith: [aaaBbb]
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: primitive
+ modifiers:
+ - type: containingScope
+ scopeType: {type: line}
+ usePrePhraseSnapshot: false
+spokenFormError: Action 'replace'
+initialState:
+ documentContents: aaa bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks: {}
+finalState:
+ documentContents: aaaBbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/breakLine.yml b/resources/fixtures/recorded/docs/actions/breakLine.yml
new file mode 100644
index 0000000000..534d9b49ec
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/breakLine.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: break air
+ action:
+ name: breakLine
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: |-
+ // bbb
+ aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/callAsFunction.yml b/resources/fixtures/recorded/docs/actions/callAsFunction.yml
new file mode 100644
index 0000000000..a667726581
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/callAsFunction.yml
@@ -0,0 +1,25 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: call air
+ action:
+ name: callAsFunction
+ callee:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ argument: {type: implicit}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: aaa()// bbb aaa
+ selections:
+ - anchor: {line: 0, character: 4}
+ active: {line: 0, character: 4}
diff --git a/resources/fixtures/recorded/docs/actions/callAsFunction2.yml b/resources/fixtures/recorded/docs/actions/callAsFunction2.yml
new file mode 100644
index 0000000000..8d51255dee
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/callAsFunction2.yml
@@ -0,0 +1,25 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: call air
+ action:
+ name: callAsFunction
+ callee:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ argument: {type: implicit}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 6}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // aaa(bbb) aaa
+ selections:
+ - anchor: {line: 0, character: 7}
+ active: {line: 0, character: 10}
diff --git a/resources/fixtures/recorded/docs/actions/callAsFunction3.yml b/resources/fixtures/recorded/docs/actions/callAsFunction3.yml
new file mode 100644
index 0000000000..3ef7060d95
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/callAsFunction3.yml
@@ -0,0 +1,30 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: call air on bat
+ action:
+ name: callAsFunction
+ callee:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ argument:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+finalState:
+ documentContents: // aaa(bbb) aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/clearAndSetSelection.yml b/resources/fixtures/recorded/docs/actions/clearAndSetSelection.yml
new file mode 100644
index 0000000000..152d3cee8e
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/clearAndSetSelection.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: change air
+ action:
+ name: clearAndSetSelection
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: "// bbb "
+ selections:
+ - anchor: {line: 0, character: 7}
+ active: {line: 0, character: 7}
diff --git a/resources/fixtures/recorded/docs/actions/copyToClipboard.yml b/resources/fixtures/recorded/docs/actions/copyToClipboard.yml
new file mode 100644
index 0000000000..08b28057c4
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/copyToClipboard.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: copy line
+ action:
+ name: copyToClipboard
+ target:
+ type: primitive
+ modifiers:
+ - type: containingScope
+ scopeType: {type: line}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: Hello there
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks: {}
+finalState:
+ documentContents: Hello there
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ clipboard: Hello there
diff --git a/resources/fixtures/recorded/docs/actions/cutToClipboard.yml b/resources/fixtures/recorded/docs/actions/cutToClipboard.yml
new file mode 100644
index 0000000000..7576065197
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/cutToClipboard.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: carve line
+ action:
+ name: cutToClipboard
+ target:
+ type: primitive
+ modifiers:
+ - type: containingScope
+ scopeType: {type: line}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: Hello there
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks: {}
+finalState:
+ documentContents: ""
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ clipboard: Hello there
diff --git a/resources/fixtures/recorded/docs/actions/decrement.yml b/resources/fixtures/recorded/docs/actions/decrement.yml
new file mode 100644
index 0000000000..6d7cd07028
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/decrement.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: decrement five
+ action:
+ name: decrement
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: '5'}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // 5 aaa10
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.5:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 4}
+finalState:
+ documentContents: // 4 aaa10
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/decrement2.yml b/resources/fixtures/recorded/docs/actions/decrement2.yml
new file mode 100644
index 0000000000..73e8f4fdfe
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/decrement2.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: decrement air
+ action:
+ name: decrement
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // 5 aaa10
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 5}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // 5 aaa9
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/decrement3.yml b/resources/fixtures/recorded/docs/actions/decrement3.yml
new file mode 100644
index 0000000000..a4c905f4b2
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/decrement3.yml
@@ -0,0 +1,23 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: decrement line
+ action:
+ name: decrement
+ target:
+ type: primitive
+ modifiers:
+ - type: containingScope
+ scopeType: {type: line}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // 5 aaa10
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks: {}
+finalState:
+ documentContents: // 4 aaa9
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/deselect.yml b/resources/fixtures/recorded/docs/actions/deselect.yml
new file mode 100644
index 0000000000..b0846a4ed0
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/deselect.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: give air
+ action:
+ name: deselect
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 3}
+ - anchor: {line: 0, character: 7}
+ active: {line: 0, character: 7}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 3}
diff --git a/resources/fixtures/recorded/docs/actions/editNewLineAfter.yml b/resources/fixtures/recorded/docs/actions/editNewLineAfter.yml
new file mode 100644
index 0000000000..b861119b92
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/editNewLineAfter.yml
@@ -0,0 +1,25 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: pour air
+ action:
+ name: editNewLineAfter
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: |
+ // bbb aaa
+ selections:
+ - anchor: {line: 1, character: 0}
+ active: {line: 1, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/editNewLineAfter2.yml b/resources/fixtures/recorded/docs/actions/editNewLineAfter2.yml
new file mode 100644
index 0000000000..d70389851d
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/editNewLineAfter2.yml
@@ -0,0 +1,27 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: pour token air
+ action:
+ name: editNewLineAfter
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ modifiers:
+ - type: containingScope
+ scopeType: {type: token}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: "// bbb aaa "
+ selections:
+ - anchor: {line: 0, character: 11}
+ active: {line: 0, character: 11}
diff --git a/resources/fixtures/recorded/docs/actions/editNewLineBefore.yml b/resources/fixtures/recorded/docs/actions/editNewLineBefore.yml
new file mode 100644
index 0000000000..46155139c2
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/editNewLineBefore.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: drink air
+ action:
+ name: editNewLineBefore
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: |-
+
+ // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/editNewLineBefore2.yml b/resources/fixtures/recorded/docs/actions/editNewLineBefore2.yml
new file mode 100644
index 0000000000..9a772efc6c
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/editNewLineBefore2.yml
@@ -0,0 +1,27 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: drink token air
+ action:
+ name: editNewLineBefore
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ modifiers:
+ - type: containingScope
+ scopeType: {type: token}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 7}
+ active: {line: 0, character: 7}
diff --git a/resources/fixtures/recorded/docs/actions/increment.yml b/resources/fixtures/recorded/docs/actions/increment.yml
new file mode 100644
index 0000000000..1fd2a4a7d7
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/increment.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: increment five
+ action:
+ name: increment
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: '5'}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // 5 aaa10
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.5:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 4}
+finalState:
+ documentContents: // 6 aaa10
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/increment2.yml b/resources/fixtures/recorded/docs/actions/increment2.yml
new file mode 100644
index 0000000000..f4ab773b88
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/increment2.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: increment air
+ action:
+ name: increment
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // 5 aaa10
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 5}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // 5 aaa11
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/increment3.yml b/resources/fixtures/recorded/docs/actions/increment3.yml
new file mode 100644
index 0000000000..6f8faa9f95
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/increment3.yml
@@ -0,0 +1,23 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: increment line
+ action:
+ name: increment
+ target:
+ type: primitive
+ modifiers:
+ - type: containingScope
+ scopeType: {type: line}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // 5 aaa10
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks: {}
+finalState:
+ documentContents: // 6 aaa11
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/indentLine.yml b/resources/fixtures/recorded/docs/actions/indentLine.yml
new file mode 100644
index 0000000000..cbee024dbc
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/indentLine.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: indent air
+ action:
+ name: indentLine
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: " // bbb aaa"
+ selections:
+ - anchor: {line: 0, character: 4}
+ active: {line: 0, character: 4}
diff --git a/resources/fixtures/recorded/docs/actions/insertCopyAfter.yml b/resources/fixtures/recorded/docs/actions/insertCopyAfter.yml
new file mode 100644
index 0000000000..f38569ba5f
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertCopyAfter.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: clone air
+ action:
+ name: insertCopyAfter
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: |-
+ // bbb aaa
+ // bbb aaa
+ selections:
+ - anchor: {line: 1, character: 0}
+ active: {line: 1, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertCopyAfter2.yml b/resources/fixtures/recorded/docs/actions/insertCopyAfter2.yml
new file mode 100644
index 0000000000..87e4184b2d
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertCopyAfter2.yml
@@ -0,0 +1,27 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: clone token air
+ action:
+ name: insertCopyAfter
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ modifiers:
+ - type: containingScope
+ scopeType: {type: token}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertCopyBefore.yml b/resources/fixtures/recorded/docs/actions/insertCopyBefore.yml
new file mode 100644
index 0000000000..7ade55ce3c
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertCopyBefore.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: clone up air
+ action:
+ name: insertCopyBefore
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: |-
+ // bbb aaa
+ // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertCopyBefore2.yml b/resources/fixtures/recorded/docs/actions/insertCopyBefore2.yml
new file mode 100644
index 0000000000..ce79fed4c0
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertCopyBefore2.yml
@@ -0,0 +1,27 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: clone up token air
+ action:
+ name: insertCopyBefore
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ modifiers:
+ - type: containingScope
+ scopeType: {type: token}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter.yml b/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter.yml
new file mode 100644
index 0000000000..80eb93bc96
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter.yml
@@ -0,0 +1,25 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: float air
+ action:
+ name: insertEmptyLineAfter
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: |
+ // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter2.yml b/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter2.yml
new file mode 100644
index 0000000000..e443fa2124
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertEmptyLineAfter2.yml
@@ -0,0 +1,27 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: float token bat
+ action:
+ name: insertEmptyLineAfter
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ modifiers:
+ - type: containingScope
+ scopeType: {type: token}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore.yml b/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore.yml
new file mode 100644
index 0000000000..88fd4af013
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: drop air
+ action:
+ name: insertEmptyLineBefore
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: |-
+
+ // bbb aaa
+ selections:
+ - anchor: {line: 1, character: 0}
+ active: {line: 1, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore2.yml b/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore2.yml
new file mode 100644
index 0000000000..106948d8e8
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertEmptyLineBefore2.yml
@@ -0,0 +1,27 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: drop token air
+ action:
+ name: insertEmptyLineBefore
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ modifiers:
+ - type: containingScope
+ scopeType: {type: token}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertEmptyLinesAround.yml b/resources/fixtures/recorded/docs/actions/insertEmptyLinesAround.yml
new file mode 100644
index 0000000000..45250d5a0b
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertEmptyLinesAround.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: puff air
+ action:
+ name: insertEmptyLinesAround
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: |
+
+ // bbb aaa
+ selections:
+ - anchor: {line: 1, character: 0}
+ active: {line: 1, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertEmptyLinesAround2.yml b/resources/fixtures/recorded/docs/actions/insertEmptyLinesAround2.yml
new file mode 100644
index 0000000000..32366a0dec
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertEmptyLinesAround2.yml
@@ -0,0 +1,27 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: puff token bat
+ action:
+ name: insertEmptyLinesAround
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ modifiers:
+ - type: containingScope
+ scopeType: {type: token}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/insertSnippet.yml b/resources/fixtures/recorded/docs/actions/insertSnippet.yml
new file mode 100644
index 0000000000..4b6ebd4ff3
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/insertSnippet.yml
@@ -0,0 +1,51 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: snip if after air
+ action:
+ name: insertSnippet
+ snippetDescription:
+ type: list
+ fallbackLanguage: typescript
+ snippets:
+ - type: custom
+ body: "if ($1) {\n\t$0\n}"
+ scopeTypes:
+ - {type: statement}
+ languages: [c, cpp, csharp, java, javascript, typescript, javascriptreact, typescriptreact]
+ - type: custom
+ body: "if $1:\n\t$0"
+ scopeTypes:
+ - {type: statement}
+ languages: [python]
+ - type: custom
+ body: "if $1 then\n\t$0\nend"
+ scopeTypes:
+ - {type: statement}
+ languages: [lua]
+ destination:
+ type: primitive
+ insertionMode: after
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+spokenFormError: list insertion snippet
+initialState:
+ documentContents: const aaa = 0;
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 6}
+ end: {line: 0, character: 9}
+finalState:
+ documentContents: |-
+ const aaa = 0;
+ if () {
+
+ }
+ selections:
+ - anchor: {line: 1, character: 4}
+ active: {line: 1, character: 4}
diff --git a/resources/fixtures/recorded/docs/actions/joinLines.yml b/resources/fixtures/recorded/docs/actions/joinLines.yml
new file mode 100644
index 0000000000..824e246d07
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/joinLines.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: join air
+ action:
+ name: joinLines
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: |-
+ // aaa
+ bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+finalState:
+ documentContents: // aaa bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/moveToTarget.yml b/resources/fixtures/recorded/docs/actions/moveToTarget.yml
new file mode 100644
index 0000000000..3ae1f1d177
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/moveToTarget.yml
@@ -0,0 +1,25 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: move air
+ action:
+ name: moveToTarget
+ source:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ destination: {type: implicit}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: aaa// bbb
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 3}
diff --git a/resources/fixtures/recorded/docs/actions/moveToTarget2.yml b/resources/fixtures/recorded/docs/actions/moveToTarget2.yml
new file mode 100644
index 0000000000..e5f6a497b6
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/moveToTarget2.yml
@@ -0,0 +1,33 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: move air to bat
+ action:
+ name: moveToTarget
+ source:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+finalState:
+ documentContents: // aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/moveToTarget3.yml b/resources/fixtures/recorded/docs/actions/moveToTarget3.yml
new file mode 100644
index 0000000000..b9628e1f97
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/moveToTarget3.yml
@@ -0,0 +1,33 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: move air before bat
+ action:
+ name: moveToTarget
+ source:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ destination:
+ type: primitive
+ insertionMode: before
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+finalState:
+ documentContents: // aaa bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/moveToTarget4.yml b/resources/fixtures/recorded/docs/actions/moveToTarget4.yml
new file mode 100644
index 0000000000..8f61f89518
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/moveToTarget4.yml
@@ -0,0 +1,33 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: move bat after air
+ action:
+ name: moveToTarget
+ source:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ destination:
+ type: primitive
+ insertionMode: after
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // aaa bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/moveToTarget5.yml b/resources/fixtures/recorded/docs/actions/moveToTarget5.yml
new file mode 100644
index 0000000000..0467593511
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/moveToTarget5.yml
@@ -0,0 +1,47 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: move air and bat to cap and drum
+ action:
+ name: moveToTarget
+ source:
+ type: list
+ elements:
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: list
+ elements:
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: c}
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: d}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // aaa bbb ccc ddd
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+ default.b:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ default.c:
+ start: {line: 0, character: 11}
+ end: {line: 0, character: 14}
+ default.d:
+ start: {line: 0, character: 15}
+ end: {line: 0, character: 18}
+finalState:
+ documentContents: // aaa bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/nextHomophone.yml b/resources/fixtures/recorded/docs/actions/nextHomophone.yml
new file mode 100644
index 0000000000..4e732883e1
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/nextHomophone.yml
@@ -0,0 +1,29 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: phones sit
+ action:
+ name: replace
+ replaceWith: [rite]
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: i}
+ usePrePhraseSnapshot: false
+spokenFormError: Action 'replace'
+initialState:
+ documentContents: // right
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.i:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 8}
+finalState:
+ documentContents: // rite
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/nextHomophone2.yml b/resources/fixtures/recorded/docs/actions/nextHomophone2.yml
new file mode 100644
index 0000000000..4a804ce53c
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/nextHomophone2.yml
@@ -0,0 +1,29 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: phones sit
+ action:
+ name: replace
+ replaceWith: [write]
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: i}
+ usePrePhraseSnapshot: false
+spokenFormError: Action 'replace'
+initialState:
+ documentContents: // rite
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.i:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 7}
+finalState:
+ documentContents: // write
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/outdentLine.yml b/resources/fixtures/recorded/docs/actions/outdentLine.yml
new file mode 100644
index 0000000000..7805b8df1c
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/outdentLine.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: dedent air
+ action:
+ name: outdentLine
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: " // bbb aaa"
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 11}
+ end: {line: 0, character: 14}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/pasteFromClipboard.yml b/resources/fixtures/recorded/docs/actions/pasteFromClipboard.yml
new file mode 100644
index 0000000000..0df4724706
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/pasteFromClipboard.yml
@@ -0,0 +1,28 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: paste to air
+ action:
+ name: pasteFromClipboard
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ clipboard: clipboard
+finalState:
+ documentContents: // bbb clipboard
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/pasteFromClipboard2.yml b/resources/fixtures/recorded/docs/actions/pasteFromClipboard2.yml
new file mode 100644
index 0000000000..d856121e1e
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/pasteFromClipboard2.yml
@@ -0,0 +1,28 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: paste before air
+ action:
+ name: pasteFromClipboard
+ destination:
+ type: primitive
+ insertionMode: before
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ clipboard: clipboard
+finalState:
+ documentContents: // bbb clipboard aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/pasteFromClipboard3.yml b/resources/fixtures/recorded/docs/actions/pasteFromClipboard3.yml
new file mode 100644
index 0000000000..4175274023
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/pasteFromClipboard3.yml
@@ -0,0 +1,28 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: paste after air
+ action:
+ name: pasteFromClipboard
+ destination:
+ type: primitive
+ insertionMode: after
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ clipboard: clipboard
+finalState:
+ documentContents: // bbb aaa clipboard
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/randomizeTargets.yml b/resources/fixtures/recorded/docs/actions/randomizeTargets.yml
new file mode 100644
index 0000000000..9020599fdb
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/randomizeTargets.yml
@@ -0,0 +1,23 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: shuffle every item
+ action:
+ name: randomizeTargets
+ target:
+ type: primitive
+ modifiers:
+ - type: everyScope
+ scopeType: {type: collectionItem}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: "[1, 2, 3]"
+ selections:
+ - anchor: {line: 0, character: 4}
+ active: {line: 0, character: 4}
+ marks: {}
+finalState:
+ documentContents: "[2, 3, 1]"
+ selections:
+ - anchor: {line: 0, character: 4}
+ active: {line: 0, character: 4}
diff --git a/resources/fixtures/recorded/docs/actions/remove.yml b/resources/fixtures/recorded/docs/actions/remove.yml
new file mode 100644
index 0000000000..657c1cec20
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/remove.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: chuck air
+ action:
+ name: remove
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/replaceWithTarget.yml b/resources/fixtures/recorded/docs/actions/replaceWithTarget.yml
new file mode 100644
index 0000000000..4efcb9a2b7
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/replaceWithTarget.yml
@@ -0,0 +1,25 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: bring air
+ action:
+ name: replaceWithTarget
+ source:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ destination: {type: implicit}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: aaa// bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 3}
diff --git a/resources/fixtures/recorded/docs/actions/replaceWithTarget2.yml b/resources/fixtures/recorded/docs/actions/replaceWithTarget2.yml
new file mode 100644
index 0000000000..5bd0b97064
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/replaceWithTarget2.yml
@@ -0,0 +1,33 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: bring air to bat
+ action:
+ name: replaceWithTarget
+ source:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+finalState:
+ documentContents: // aaa aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/replaceWithTarget3.yml b/resources/fixtures/recorded/docs/actions/replaceWithTarget3.yml
new file mode 100644
index 0000000000..e2856054da
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/replaceWithTarget3.yml
@@ -0,0 +1,33 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: bring air before bat
+ action:
+ name: replaceWithTarget
+ source:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ destination:
+ type: primitive
+ insertionMode: before
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+finalState:
+ documentContents: // aaa bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/replaceWithTarget4.yml b/resources/fixtures/recorded/docs/actions/replaceWithTarget4.yml
new file mode 100644
index 0000000000..29f0796956
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/replaceWithTarget4.yml
@@ -0,0 +1,33 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: bring bat after air
+ action:
+ name: replaceWithTarget
+ source:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ destination:
+ type: primitive
+ insertionMode: after
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.b:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/replaceWithTarget5.yml b/resources/fixtures/recorded/docs/actions/replaceWithTarget5.yml
new file mode 100644
index 0000000000..59c1148810
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/replaceWithTarget5.yml
@@ -0,0 +1,40 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: bring air to bat and cap
+ action:
+ name: replaceWithTarget
+ source:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: list
+ elements:
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: c}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // aaa bbb ccc
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+ default.b:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ default.c:
+ start: {line: 0, character: 11}
+ end: {line: 0, character: 14}
+finalState:
+ documentContents: // aaa aaa aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/replaceWithTarget6.yml b/resources/fixtures/recorded/docs/actions/replaceWithTarget6.yml
new file mode 100644
index 0000000000..f652ba28f5
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/replaceWithTarget6.yml
@@ -0,0 +1,47 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: bring air and bat to cap and drum
+ action:
+ name: replaceWithTarget
+ source:
+ type: list
+ elements:
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ destination:
+ type: primitive
+ insertionMode: to
+ target:
+ type: list
+ elements:
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: c}
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: d}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // aaa bbb ccc ddd
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+ default.b:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ default.c:
+ start: {line: 0, character: 11}
+ end: {line: 0, character: 14}
+ default.d:
+ start: {line: 0, character: 15}
+ end: {line: 0, character: 18}
+finalState:
+ documentContents: // aaa bbb aaa bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/reverseTargets.yml b/resources/fixtures/recorded/docs/actions/reverseTargets.yml
new file mode 100644
index 0000000000..6f6a17c3ea
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/reverseTargets.yml
@@ -0,0 +1,23 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: reverse every item
+ action:
+ name: reverseTargets
+ target:
+ type: primitive
+ modifiers:
+ - type: everyScope
+ scopeType: {type: collectionItem}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: "[1, 2, 3]"
+ selections:
+ - anchor: {line: 0, character: 4}
+ active: {line: 0, character: 4}
+ marks: {}
+finalState:
+ documentContents: "[3, 2, 1]"
+ selections:
+ - anchor: {line: 0, character: 4}
+ active: {line: 0, character: 4}
diff --git a/resources/fixtures/recorded/docs/actions/rewrapWithPairedDelimiter.yml b/resources/fixtures/recorded/docs/actions/rewrapWithPairedDelimiter.yml
new file mode 100644
index 0000000000..1dae3d9cb4
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/rewrapWithPairedDelimiter.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: curly repack air
+ action:
+ name: rewrapWithPairedDelimiter
+ left: "{"
+ right: "}"
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb (aaa)
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 8}
+ end: {line: 0, character: 11}
+finalState:
+ documentContents: // bbb {aaa}
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/setSelection.yml b/resources/fixtures/recorded/docs/actions/setSelection.yml
new file mode 100644
index 0000000000..8704124a98
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/setSelection.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: take air
+ action:
+ name: setSelection
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 7}
+ active: {line: 0, character: 10}
diff --git a/resources/fixtures/recorded/docs/actions/setSelectionAfter.yml b/resources/fixtures/recorded/docs/actions/setSelectionAfter.yml
new file mode 100644
index 0000000000..d93009856f
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/setSelectionAfter.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: post air
+ action:
+ name: setSelectionAfter
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 10}
+ active: {line: 0, character: 10}
diff --git a/resources/fixtures/recorded/docs/actions/setSelectionBefore.yml b/resources/fixtures/recorded/docs/actions/setSelectionBefore.yml
new file mode 100644
index 0000000000..6b18bb3138
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/setSelectionBefore.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: pre air
+ action:
+ name: setSelectionBefore
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 7}
+ active: {line: 0, character: 7}
diff --git a/resources/fixtures/recorded/docs/actions/sortTargets.yml b/resources/fixtures/recorded/docs/actions/sortTargets.yml
new file mode 100644
index 0000000000..d53f045031
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/sortTargets.yml
@@ -0,0 +1,23 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: sort every item
+ action:
+ name: sortTargets
+ target:
+ type: primitive
+ modifiers:
+ - type: everyScope
+ scopeType: {type: collectionItem}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: "[3, 2, 1]"
+ selections:
+ - anchor: {line: 0, character: 4}
+ active: {line: 0, character: 4}
+ marks: {}
+finalState:
+ documentContents: "[1, 2, 3]"
+ selections:
+ - anchor: {line: 0, character: 4}
+ active: {line: 0, character: 4}
diff --git a/resources/fixtures/recorded/docs/actions/swapTargets.yml b/resources/fixtures/recorded/docs/actions/swapTargets.yml
new file mode 100644
index 0000000000..fdd42a5e58
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/swapTargets.yml
@@ -0,0 +1,30 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: swap air with bat
+ action:
+ name: swapTargets
+ target1:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ target2:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // aaa bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+ default.b:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/swapTargets2.yml b/resources/fixtures/recorded/docs/actions/swapTargets2.yml
new file mode 100644
index 0000000000..a78d9c5f63
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/swapTargets2.yml
@@ -0,0 +1,44 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: swap air and bat with cap and drum
+ action:
+ name: swapTargets
+ target1:
+ type: list
+ elements:
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: b}
+ target2:
+ type: list
+ elements:
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: c}
+ - type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: d}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // aaa bbb ccc ddd
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 3}
+ end: {line: 0, character: 6}
+ default.b:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+ default.c:
+ start: {line: 0, character: 11}
+ end: {line: 0, character: 14}
+ default.d:
+ start: {line: 0, character: 15}
+ end: {line: 0, character: 18}
+finalState:
+ documentContents: // ccc ddd aaa bbb
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/toggleLineComment.yml b/resources/fixtures/recorded/docs/actions/toggleLineComment.yml
new file mode 100644
index 0000000000..62adf06e69
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/toggleLineComment.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: comment air
+ action:
+ name: toggleLineComment
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 4}
+ end: {line: 0, character: 7}
+finalState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 3}
+ active: {line: 0, character: 3}
diff --git a/resources/fixtures/recorded/docs/actions/toggleLineComment2.yml b/resources/fixtures/recorded/docs/actions/toggleLineComment2.yml
new file mode 100644
index 0000000000..56801a17c7
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/toggleLineComment2.yml
@@ -0,0 +1,24 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: comment air
+ action:
+ name: toggleLineComment
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/wrapWithPairedDelimiter.yml b/resources/fixtures/recorded/docs/actions/wrapWithPairedDelimiter.yml
new file mode 100644
index 0000000000..eb75606187
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/wrapWithPairedDelimiter.yml
@@ -0,0 +1,26 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: round wrap air
+ action:
+ name: wrapWithPairedDelimiter
+ left: (
+ right: )
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+initialState:
+ documentContents: // bbb aaa
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 7}
+ end: {line: 0, character: 10}
+finalState:
+ documentContents: // bbb (aaa)
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
diff --git a/resources/fixtures/recorded/docs/actions/wrapWithPairedDelimiter2.yml b/resources/fixtures/recorded/docs/actions/wrapWithPairedDelimiter2.yml
new file mode 100644
index 0000000000..cf80b101a6
--- /dev/null
+++ b/resources/fixtures/recorded/docs/actions/wrapWithPairedDelimiter2.yml
@@ -0,0 +1,47 @@
+languageId: typescript
+command:
+ version: 7
+ spokenForm: if wrap air
+ action:
+ name: wrapWithSnippet
+ snippetDescription:
+ type: list
+ fallbackLanguage: typescript
+ snippets:
+ - type: custom
+ body: "if ($1) {\n\t$0\n}"
+ variableName: "0"
+ scopeType: {type: statement}
+ languages: [c, cpp, csharp, java, javascript, typescript, javascriptreact, typescriptreact]
+ - type: custom
+ body: "if $1:\n\t$0"
+ variableName: "0"
+ scopeType: {type: statement}
+ languages: [python]
+ - type: custom
+ body: "if $1 then\n\t$0\nend"
+ variableName: "0"
+ scopeType: {type: statement}
+ languages: [lua]
+ target:
+ type: primitive
+ mark: {type: decoratedSymbol, symbolColor: default, character: a}
+ usePrePhraseSnapshot: false
+spokenFormError: list wrap with snippet
+initialState:
+ documentContents: const aaa = 0;
+ selections:
+ - anchor: {line: 0, character: 0}
+ active: {line: 0, character: 0}
+ marks:
+ default.a:
+ start: {line: 0, character: 6}
+ end: {line: 0, character: 9}
+finalState:
+ documentContents: |-
+ if () {
+ const aaa = 0;
+ }
+ selections:
+ - anchor: {line: 0, character: 4}
+ active: {line: 0, character: 4}