From 0b0dc46a8bdede938d5fc884ab9bf9c63b2f13c3 Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Thu, 6 Mar 2025 23:14:40 +0800 Subject: [PATCH] refactor(language-service): remove component coloring logic from vue-template plugin --- packages/language-service/index.ts | 4 +- .../lib/plugins/vue-template.ts | 65 ------------------- packages/typescript-plugin/lib/common.ts | 2 +- 3 files changed, 3 insertions(+), 68 deletions(-) diff --git a/packages/language-service/index.ts b/packages/language-service/index.ts index 9a14bb46ed..957f291185 100644 --- a/packages/language-service/index.ts +++ b/packages/language-service/index.ts @@ -192,8 +192,8 @@ function getCommonLanguageServicePlugins( createCssPlugin(), createPugFormatPlugin(), createJsonPlugin(), - createVueTemplatePlugin('html', ts, getTsPluginClient), - createVueTemplatePlugin('pug', ts, getTsPluginClient), + createVueTemplatePlugin('html', getTsPluginClient), + createVueTemplatePlugin('pug', getTsPluginClient), createVueMissingPropsHintsPlugin(getTsPluginClient), createVueSfcPlugin(), createVueTwoslashQueriesPlugin(getTsPluginClient), diff --git a/packages/language-service/lib/plugins/vue-template.ts b/packages/language-service/lib/plugins/vue-template.ts index d728efb96e..5f85f326ef 100644 --- a/packages/language-service/lib/plugins/vue-template.ts +++ b/packages/language-service/lib/plugins/vue-template.ts @@ -1,7 +1,6 @@ import type { Disposable, LanguageServiceContext } from '@volar/language-service'; import { VueVirtualCode, hyphenateAttr, hyphenateTag, tsCodegen } from '@vue/language-core'; import { camelize, capitalize } from '@vue/shared'; -import { getComponentSpans } from '@vue/typescript-plugin/lib/common'; import type { ComponentPropInfo } from '@vue/typescript-plugin/lib/requests/getComponentProps'; import { create as createHtmlService } from 'volar-service-html'; import { create as createPugService } from 'volar-service-pug'; @@ -38,7 +37,6 @@ let modelData: html.HTMLDataV1; export function create( mode: 'html' | 'pug', - ts: typeof import('typescript'), getTsPluginClient?: (context: LanguageServiceContext) => import('@vue/typescript-plugin/lib/requests').Requests | undefined ): LanguageServicePlugin { let customData: html.IHTMLDataProvider[] = []; @@ -91,12 +89,6 @@ export function create( interFileDependencies: false, workspaceDiagnostics: false, }, - semanticTokensProvider: { - legend: { - tokenTypes: ['class'], - tokenModifiers: [], - }, - } }, create(context) { const tsPluginClient = getTsPluginClient?.(context); @@ -269,63 +261,6 @@ export function create( ...templateErrors, ]; }, - - provideDocumentSemanticTokens(document, range, legend) { - - if (!isSupportedDocument(document)) { - return; - } - - if (!context.project.vue) { - return; - } - const vueCompilerOptions = context.project.vue.compilerOptions; - - const languageService = context.inject<(import('volar-service-typescript').Provide), 'typescript/languageService'>('typescript/languageService'); - if (!languageService) { - return; - } - - const uri = URI.parse(document.uri); - const decoded = context.decodeEmbeddedDocumentUri(uri); - const sourceScript = decoded && context.language.scripts.get(decoded[0]); - const root = sourceScript?.generated?.root; - if (!(root instanceof VueVirtualCode)) { - return; - } - - const { template } = root.sfc; - if (!template) { - return; - } - - const spans = getComponentSpans.call( - { - files: context.language.scripts, - languageService, - typescript: ts, - vueOptions: vueCompilerOptions, - }, - root, - template, - { - start: document.offsetAt(range.start), - length: document.offsetAt(range.end) - document.offsetAt(range.start), - } - ); - const classTokenIndex = legend.tokenTypes.indexOf('class'); - - return spans.map(span => { - const start = document.positionAt(span.start); - return [ - start.line, - start.character, - span.length, - classTokenIndex, - 0, - ]; - }); - }, }; async function provideHtmlData(sourceDocumentUri: URI, vueCode: VueVirtualCode) { diff --git a/packages/typescript-plugin/lib/common.ts b/packages/typescript-plugin/lib/common.ts index 85c2cf008e..bdd382d7cf 100644 --- a/packages/typescript-plugin/lib/common.ts +++ b/packages/typescript-plugin/lib/common.ts @@ -335,7 +335,7 @@ function getEncodedSemanticClassifications( }; } -export function getComponentSpans( +function getComponentSpans( this: Pick, vueCode: VueVirtualCode, template: NonNullable,