diff --git a/packages/vscode-vue/src/common.ts b/packages/vscode-vue/src/common.ts index a4bb0fc4e..15124fd97 100644 --- a/packages/vscode-vue/src/common.ts +++ b/packages/vscode-vue/src/common.ts @@ -66,14 +66,14 @@ async function doActivate(context: vscode.ExtensionContext, createLc: CreateLang createLc( 'vue-semantic-server', 'Vue Semantic Server', - getDocumentSelector(context), + getDocumentSelector(context, ServerMode.PartialSemantic), await getInitializationOptions(ServerMode.PartialSemantic, context), 6009, ), createLc( 'vue-syntactic-server', 'Vue Syntactic Server', - getDocumentSelector(context), + getDocumentSelector(context, ServerMode.Syntactic), await getInitializationOptions(ServerMode.Syntactic, context), 6011, ) @@ -183,7 +183,7 @@ export function deactivate(): Thenable | undefined { ]); } -export function getDocumentSelector(context: vscode.ExtensionContext) { +export function getDocumentSelector(context: vscode.ExtensionContext, serverMode: ServerMode) { const takeOverMode = takeOverModeActive(context); const langs = takeOverMode ? [ 'vue', @@ -191,11 +191,19 @@ export function getDocumentSelector(context: vscode.ExtensionContext) { 'typescript', 'javascriptreact', 'typescriptreact', - 'json', - // 'jsonc', ] : [ 'vue', ]; + if ( + takeOverMode + && ( + serverMode === ServerMode.Semantic + || serverMode === ServerMode.PartialSemantic + ) + ) { // #2573 + langs.push('json'); + // langs.push('jsonc'); + } if (processHtml()) { langs.push('html'); } diff --git a/packages/vscode-vue/src/nodeClientMain.ts b/packages/vscode-vue/src/nodeClientMain.ts index 1d5484ec3..e09e27991 100644 --- a/packages/vscode-vue/src/nodeClientMain.ts +++ b/packages/vscode-vue/src/nodeClientMain.ts @@ -5,11 +5,12 @@ import * as vscode from 'vscode'; import * as lsp from 'vscode-languageclient/node'; import { activate as commonActivate, deactivate as commonDeactivate, getDocumentSelector } from './common'; import { middleware } from './middleware'; +import { ServerMode } from '@volar/vue-language-server'; export function activate(context: vscode.ExtensionContext) { const cancellationPipeName = path.join(os.tmpdir(), `vscode-${context.extension.id}-cancellation-pipe.tmp`); - const langs = getDocumentSelector(context); + const langs = getDocumentSelector(context, ServerMode.Semantic); let cancellationPipeUpdateKey: string | undefined; vscode.workspace.onDidChangeTextDocument((e) => {