Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove node references from Talon spoken form reader #2480

Merged
merged 13 commits into from
Jul 11, 2024
Merged
14 changes: 7 additions & 7 deletions packages/cursorless-engine/src/cursorlessEngine.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
import {
Command,
CommandServerApi,
ensureCommandShape,
FileSystem,
Hats,
IDE,
ScopeProvider,
ensureCommandShape,
} from "@cursorless/common";
import { KeyboardTargetUpdater } from "./KeyboardTargetUpdater";
import {
CommandRunnerDecorator,
CursorlessEngine,
} from "./api/CursorlessEngineApi";
import { Debug } from "./core/Debug";
import { HatTokenMapImpl } from "./core/HatTokenMapImpl";
import { KeyboardTargetUpdater } from "./KeyboardTargetUpdater";
import type { Snippets } from "./core/Snippets";
import { StoredTargetMap } from "./core/StoredTargets";
import { RangeUpdater } from "./core/updateSelections/RangeUpdater";
import { DisabledSnippets } from "./disabledComponents/DisabledSnippets";
import { DisabledTalonSpokenForms } from "./disabledComponents/DisabledTalonSpokenForms";
import { CustomSpokenFormGeneratorImpl } from "./generateSpokenForm/CustomSpokenFormGeneratorImpl";
import { LanguageDefinitions } from "./languages/LanguageDefinitions";
import { TalonSpokenFormsJsonReader } from "./nodeCommon/TalonSpokenFormsJsonReader";
import { ModifierStageFactoryImpl } from "./processTargets/ModifierStageFactoryImpl";
import { ScopeHandlerFactoryImpl } from "./processTargets/modifiers/scopeHandlers";
import { runCommand } from "./runCommand";
Expand All @@ -29,16 +30,17 @@ import { ScopeRangeProvider } from "./scopeProviders/ScopeRangeProvider";
import { ScopeRangeWatcher } from "./scopeProviders/ScopeRangeWatcher";
import { ScopeSupportChecker } from "./scopeProviders/ScopeSupportChecker";
import { ScopeSupportWatcher } from "./scopeProviders/ScopeSupportWatcher";
import { type TalonSpokenForms } from "./scopeProviders/TalonSpokenForms";
import { injectIde } from "./singletons/ide.singleton";
import { TreeSitter } from "./typings/TreeSitter";
import { DisabledSnippets } from "./disabledComponents/DisabledSnippets";

export async function createCursorlessEngine(
treeSitter: TreeSitter,
ide: IDE,
hats: Hats,
commandServerApi: CommandServerApi | null,
fileSystem: FileSystem,
talonSpokenForms: TalonSpokenForms | undefined,
snippets: Snippets = new DisabledSnippets(),
): Promise<CursorlessEngine> {
injectIde(ide);
Expand All @@ -62,10 +64,8 @@ export async function createCursorlessEngine(
const languageDefinitions = new LanguageDefinitions(fileSystem, treeSitter);
await languageDefinitions.init();

const talonSpokenForms = new TalonSpokenFormsJsonReader(fileSystem);

const customSpokenFormGenerator = new CustomSpokenFormGeneratorImpl(
talonSpokenForms,
talonSpokenForms ?? new DisabledTalonSpokenForms(),
AndreasArvidsson marked this conversation as resolved.
Show resolved Hide resolved
);

ide.disposeOnExit(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import type {
SpokenFormEntry,
TalonSpokenForms,
} from "../scopeProviders/TalonSpokenForms";

export class DisabledTalonSpokenForms implements TalonSpokenForms {
getSpokenFormEntries(): Promise<SpokenFormEntry[]> {
throw Error("Talon spoken forms are not implemented.");
}

onDidChange() {
return { dispose: () => {} };
}
}
1 change: 1 addition & 0 deletions packages/cursorless-engine/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export * from "./CommandHistory";
export * from "./CommandHistoryAnalyzer";
export * from "./util/grammarHelpers";
export * from "./ScopeTestRecorder";
export * from "./scopeProviders/TalonSpokenForms";
export * from "./core/Snippets";
export * from "./core/mergeSnippets";
export * from "./util/object";
3 changes: 0 additions & 3 deletions packages/cursorless-engine/src/nodeCommon/README.md

This file was deleted.

7 changes: 6 additions & 1 deletion packages/cursorless-vscode/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ import {
TestCaseRecorder,
TreeSitter,
} from "@cursorless/cursorless-engine";
import { FileSystemCommandHistoryStorage } from "@cursorless/file-system-common";
import {
FileSystemCommandHistoryStorage,
FileSystemTalonSpokenForms,
} from "@cursorless/file-system-common";
import {
CursorlessApi,
getCommandServerApi,
Expand Down Expand Up @@ -84,6 +87,7 @@ export async function activate(
: await getCommandServerApi();

const treeSitter: TreeSitter = createTreeSitter(parseTreeApi);
const talonSpokenForms = new FileSystemTalonSpokenForms(fileSystem);

const snippets = new VscodeSnippets(normalizedIde);
void snippets.init();
Expand All @@ -103,6 +107,7 @@ export async function activate(
hats,
commandServerApi,
fileSystem,
talonSpokenForms,
snippets,
);

Expand Down
1 change: 1 addition & 0 deletions packages/file-system-common/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
},
"dependencies": {
"@cursorless/common": "workspace:*",
"@cursorless/cursorless-engine": "workspace:*",
"glob": "^10.3.10",
"pathe": "^1.1.2"
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
import { Disposable, FileSystem, Notifier } from "@cursorless/common";
import {
Disposable,
FileSystem,
Notifier,
type Listener,
} from "@cursorless/common";
import { readFile } from "fs/promises";

import * as path from "pathe";
import {
NeedsInitialTalonUpdateError,
SpokenFormEntry,
TalonSpokenForms,
} from "../scopeProviders/TalonSpokenForms";
} from "@cursorless/cursorless-engine";
import * as path from "pathe";

interface TalonSpokenFormsPayload {
version: number;
Expand All @@ -15,7 +19,7 @@ interface TalonSpokenFormsPayload {

const LATEST_SPOKEN_FORMS_JSON_VERSION = 0;

export class TalonSpokenFormsJsonReader implements TalonSpokenForms {
export class FileSystemTalonSpokenForms implements TalonSpokenForms {
private disposable: Disposable;
private notifier = new Notifier();

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

async getSpokenFormEntries(): Promise<SpokenFormEntry[]> {
let payload: TalonSpokenFormsPayload;
Expand Down
1 change: 1 addition & 0 deletions packages/file-system-common/src/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from "./FileSystemTalonSpokenForms";
export * from "./FileSystemCommandHistoryStorage";
3 changes: 3 additions & 0 deletions packages/file-system-common/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
"references": [
{
"path": "../common"
},
{
"path": "../cursorless-engine"
}
]
}
3 changes: 3 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading