From 572b785eb22a3090e16920ef8b212cdf9ab372f7 Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Sun, 25 Dec 2022 22:08:20 +0800 Subject: [PATCH] fix: avoid executePluginCommand duplicate error --- examples/vscode-angular/src/client.ts | 2 -- .../language-server/src/common/utils/registerFeatures.ts | 5 +---- .../language-service/src/languageFeatures/executeCommand.ts | 4 +++- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/examples/vscode-angular/src/client.ts b/examples/vscode-angular/src/client.ts index 3430f6b04..d63eb7c2b 100644 --- a/examples/vscode-angular/src/client.ts +++ b/examples/vscode-angular/src/client.ts @@ -43,8 +43,6 @@ export async function activate(context: vscode.ExtensionContext) { }, cancellationPipeName, noProjectReferences: true, - // @ts-expect-error - __noPluginCommands: true, }; const serverModule = vscode.Uri.joinPath(context.extensionUri, 'server.js'); const runOptions = { execArgv: [] }; diff --git a/packages/language-server/src/common/utils/registerFeatures.ts b/packages/language-server/src/common/utils/registerFeatures.ts index abd4dd782..803e6fe75 100644 --- a/packages/language-server/src/common/utils/registerFeatures.ts +++ b/packages/language-server/src/common/utils/registerFeatures.ts @@ -171,10 +171,7 @@ export function setupSemanticCapabilities( resolveProvider: true, }; server.executeCommandProvider = { commands: [...server.executeCommandProvider?.commands ?? []] }; - // @ts-expect-error - if (!initOptions.__noPluginCommands) { - server.executeCommandProvider.commands.push(embedded.executePluginCommand); - } + server.executeCommandProvider.commands.push(embedded.executePluginCommand); } if (!initOptions.respectClientCapabilities || params.textDocument?.semanticTokens) { server.semanticTokensProvider = { diff --git a/packages/language-service/src/languageFeatures/executeCommand.ts b/packages/language-service/src/languageFeatures/executeCommand.ts index d1bf9ea50..4d1fd086e 100644 --- a/packages/language-service/src/languageFeatures/executeCommand.ts +++ b/packages/language-service/src/languageFeatures/executeCommand.ts @@ -2,7 +2,9 @@ import type { LanguageServiceRuntimeContext } from '../types'; import { ExecuteCommandContext } from '@volar/language-service'; import * as vscode from 'vscode-languageserver-protocol'; -export const executePluginCommand = 'volar.executePluginCommand'; +const randomCommandId = Math.random().toString(36).slice(2); // TODO + +export const executePluginCommand = `volar.${randomCommandId}.executePluginCommand`; export type ExecutePluginCommandArgs = [ string, // uri