Skip to content

Commit c530f04

Browse files
Remove node references from Talon spoken form reader (#2480)
## Checklist - [/] I have added [tests](https://www.cursorless.org/docs/contributing/test-case-recorder/) - [/] I have updated the [docs](https://github.com/cursorless-dev/cursorless/tree/main/docs) and [cheatsheet](https://github.com/cursorless-dev/cursorless/tree/main/cursorless-talon/src/cheatsheet) - [/] I have not broken the cheatsheet
1 parent 57047bf commit c530f04

File tree

10 files changed

+48
-17
lines changed

10 files changed

+48
-17
lines changed

packages/cursorless-engine/src/cursorlessEngine.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
import {
22
Command,
33
CommandServerApi,
4-
ensureCommandShape,
54
FileSystem,
65
Hats,
76
IDE,
87
ScopeProvider,
8+
ensureCommandShape,
99
} from "@cursorless/common";
10+
import { KeyboardTargetUpdater } from "./KeyboardTargetUpdater";
1011
import {
1112
CommandRunnerDecorator,
1213
CursorlessEngine,
1314
} from "./api/CursorlessEngineApi";
1415
import { Debug } from "./core/Debug";
1516
import { HatTokenMapImpl } from "./core/HatTokenMapImpl";
16-
import { KeyboardTargetUpdater } from "./KeyboardTargetUpdater";
1717
import type { Snippets } from "./core/Snippets";
1818
import { StoredTargetMap } from "./core/StoredTargets";
1919
import { RangeUpdater } from "./core/updateSelections/RangeUpdater";
20+
import { DisabledSnippets } from "./disabledComponents/DisabledSnippets";
21+
import { DisabledTalonSpokenForms } from "./disabledComponents/DisabledTalonSpokenForms";
2022
import { CustomSpokenFormGeneratorImpl } from "./generateSpokenForm/CustomSpokenFormGeneratorImpl";
2123
import { LanguageDefinitions } from "./languages/LanguageDefinitions";
22-
import { TalonSpokenFormsJsonReader } from "./nodeCommon/TalonSpokenFormsJsonReader";
2324
import { ModifierStageFactoryImpl } from "./processTargets/ModifierStageFactoryImpl";
2425
import { ScopeHandlerFactoryImpl } from "./processTargets/modifiers/scopeHandlers";
2526
import { runCommand } from "./runCommand";
@@ -29,16 +30,17 @@ import { ScopeRangeProvider } from "./scopeProviders/ScopeRangeProvider";
2930
import { ScopeRangeWatcher } from "./scopeProviders/ScopeRangeWatcher";
3031
import { ScopeSupportChecker } from "./scopeProviders/ScopeSupportChecker";
3132
import { ScopeSupportWatcher } from "./scopeProviders/ScopeSupportWatcher";
33+
import { type TalonSpokenForms } from "./scopeProviders/TalonSpokenForms";
3234
import { injectIde } from "./singletons/ide.singleton";
3335
import { TreeSitter } from "./typings/TreeSitter";
34-
import { DisabledSnippets } from "./disabledComponents/DisabledSnippets";
3536

3637
export async function createCursorlessEngine(
3738
treeSitter: TreeSitter,
3839
ide: IDE,
3940
hats: Hats,
4041
commandServerApi: CommandServerApi | null,
4142
fileSystem: FileSystem,
43+
talonSpokenForms: TalonSpokenForms | undefined,
4244
snippets: Snippets = new DisabledSnippets(),
4345
): Promise<CursorlessEngine> {
4446
injectIde(ide);
@@ -62,10 +64,8 @@ export async function createCursorlessEngine(
6264
const languageDefinitions = new LanguageDefinitions(fileSystem, treeSitter);
6365
await languageDefinitions.init();
6466

65-
const talonSpokenForms = new TalonSpokenFormsJsonReader(fileSystem);
66-
6767
const customSpokenFormGenerator = new CustomSpokenFormGeneratorImpl(
68-
talonSpokenForms,
68+
talonSpokenForms ?? new DisabledTalonSpokenForms(),
6969
);
7070

7171
ide.disposeOnExit(
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import type {
2+
SpokenFormEntry,
3+
TalonSpokenForms,
4+
} from "../scopeProviders/TalonSpokenForms";
5+
6+
export class DisabledTalonSpokenForms implements TalonSpokenForms {
7+
getSpokenFormEntries(): Promise<SpokenFormEntry[]> {
8+
throw Error("Talon spoken forms are not implemented.");
9+
}
10+
11+
onDidChange() {
12+
return { dispose: () => {} };
13+
}
14+
}

packages/cursorless-engine/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export * from "./CommandHistory";
1111
export * from "./CommandHistoryAnalyzer";
1212
export * from "./util/grammarHelpers";
1313
export * from "./ScopeTestRecorder";
14+
export * from "./scopeProviders/TalonSpokenForms";
1415
export * from "./core/Snippets";
1516
export * from "./core/mergeSnippets";
1617
export * from "./util/object";

packages/cursorless-engine/src/nodeCommon/README.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/cursorless-vscode/src/extension.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ import {
1717
TestCaseRecorder,
1818
TreeSitter,
1919
} from "@cursorless/cursorless-engine";
20-
import { FileSystemCommandHistoryStorage } from "@cursorless/file-system-common";
20+
import {
21+
FileSystemCommandHistoryStorage,
22+
FileSystemTalonSpokenForms,
23+
} from "@cursorless/file-system-common";
2124
import {
2225
CursorlessApi,
2326
getCommandServerApi,
@@ -84,6 +87,7 @@ export async function activate(
8487
: await getCommandServerApi();
8588

8689
const treeSitter: TreeSitter = createTreeSitter(parseTreeApi);
90+
const talonSpokenForms = new FileSystemTalonSpokenForms(fileSystem);
8791

8892
const snippets = new VscodeSnippets(normalizedIde);
8993
void snippets.init();
@@ -103,6 +107,7 @@ export async function activate(
103107
hats,
104108
commandServerApi,
105109
fileSystem,
110+
talonSpokenForms,
106111
snippets,
107112
);
108113

packages/file-system-common/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
},
2626
"dependencies": {
2727
"@cursorless/common": "workspace:*",
28+
"@cursorless/cursorless-engine": "workspace:*",
2829
"glob": "^10.3.10",
2930
"pathe": "^1.1.2"
3031
},

packages/cursorless-engine/src/nodeCommon/TalonSpokenFormsJsonReader.ts renamed to packages/file-system-common/src/FileSystemTalonSpokenForms.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
import { Disposable, FileSystem, Notifier } from "@cursorless/common";
1+
import {
2+
Disposable,
3+
FileSystem,
4+
Notifier,
5+
type Listener,
6+
} from "@cursorless/common";
27
import { readFile } from "fs/promises";
3-
4-
import * as path from "pathe";
58
import {
69
NeedsInitialTalonUpdateError,
710
SpokenFormEntry,
811
TalonSpokenForms,
9-
} from "../scopeProviders/TalonSpokenForms";
12+
} from "@cursorless/cursorless-engine";
13+
import * as path from "pathe";
1014

1115
interface TalonSpokenFormsPayload {
1216
version: number;
@@ -15,7 +19,7 @@ interface TalonSpokenFormsPayload {
1519

1620
const LATEST_SPOKEN_FORMS_JSON_VERSION = 0;
1721

18-
export class TalonSpokenFormsJsonReader implements TalonSpokenForms {
22+
export class FileSystemTalonSpokenForms implements TalonSpokenForms {
1923
private disposable: Disposable;
2024
private notifier = new Notifier();
2125

@@ -31,7 +35,9 @@ export class TalonSpokenFormsJsonReader implements TalonSpokenForms {
3135
* @param callback The callback to run when the scope ranges change
3236
* @returns A {@link Disposable} which will stop the callback from running
3337
*/
34-
onDidChange = this.notifier.registerListener;
38+
onDidChange(listener: Listener) {
39+
return this.notifier.registerListener(listener);
40+
}
3541

3642
async getSpokenFormEntries(): Promise<SpokenFormEntry[]> {
3743
let payload: TalonSpokenFormsPayload;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
export * from "./FileSystemTalonSpokenForms";
12
export * from "./FileSystemCommandHistoryStorage";

packages/file-system-common/tsconfig.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
"references": [
99
{
1010
"path": "../common"
11+
},
12+
{
13+
"path": "../cursorless-engine"
1114
}
1215
]
1316
}

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)