From 5e07e0811d2a561679b3e8e2dacb84b641651043 Mon Sep 17 00:00:00 2001 From: "FAREAST\\chunyu" Date: Wed, 15 Jan 2025 16:44:10 +0800 Subject: [PATCH] enhancement --- .../src/vscode-cmd/emit-code/emit-code.ts | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/typespec-vscode/src/vscode-cmd/emit-code/emit-code.ts b/packages/typespec-vscode/src/vscode-cmd/emit-code/emit-code.ts index a57114288e5..a847231724d 100644 --- a/packages/typespec-vscode/src/vscode-cmd/emit-code/emit-code.ts +++ b/packages/typespec-vscode/src/vscode-cmd/emit-code/emit-code.ts @@ -29,7 +29,19 @@ async function configureEmitter( context: vscode.ExtensionContext, existingEmitters: string[], ): Promise { - const emitterKinds = getRegisterEmitterTypes(); + const emitterKinds = getRegisterEmitterTypes().filter((kind) => { + return ( + getRegisterEmitters(kind).filter((emitter) => !existingEmitters.includes(emitter.package)) + .length > 0 + ); + }); + if (emitterKinds.length === 0) { + logger.info("No new emitter available. All emitters are already configured.", [], { + showOutput: true, + showPopup: true, + }); + return undefined; + } const toEmitterTypeQuickPickItem = (kind: EmitterKind): any => { const registerEmitters = getRegisterEmitters(kind); const supportedLanguages = registerEmitters.map((e) => e.language).join(", "); @@ -290,7 +302,7 @@ async function doEmit(mainTspFile: string, emitter: Emitter) { return; } /*Config emitter output dir and emit in tspconfig.yaml. */ - const defaultEmitOutputDirInConfig = `{project-root}/${emitter.kind}/${getLanguageAlias(emitter.language)}`; + const defaultEmitOutputDirInConfig = `{output-dir}/${emitter.package}`; const tspConfigFile = path.join(baseDir, TspConfigFileName); let configYaml = parseDocument(""); //generate a empty yaml if (await isFile(tspConfigFile)) { @@ -532,12 +544,7 @@ export async function emitCode(context: vscode.ExtensionContext, uri: vscode.Uri fromConfig: false, package: "", kind: vscode.QuickPickItemKind.Default, - buttons: [ - { - iconPath: new vscode.ThemeIcon("settings-gear"), - tooltip: "Configure a new emitter for code generation", - }, - ], + iconPath: new vscode.ThemeIcon("settings-gear"), }; const allPickItems = [];