diff --git a/packages/vue-language-service/src/documentService.ts b/packages/vue-language-service/src/documentService.ts index 02335ae90..d41e8b829 100644 --- a/packages/vue-language-service/src/documentService.ts +++ b/packages/vue-language-service/src/documentService.ts @@ -25,6 +25,7 @@ import useVuePlugin from './vuePlugins/vue'; import type * as _ from 'vscode-languageserver-protocol'; import { loadCustomPlugins } from './languageService'; import { EmbeddedLanguagePlugin } from '@volar/vue-language-service-types'; +import * as json from 'vscode-json-languageservice'; export interface DocumentService extends ReturnType { } @@ -41,6 +42,8 @@ export function getDocumentService( const services = createBasicRuntime(); let tsLs: ts2.LanguageService; + const jsonLs = json.getLanguageService({ /* schemaRequestService: vueHost?.schemaRequestService */ }); + // language support plugins const _getSettings: (section: string, scopeUri?: string | undefined) => Promise = async (section, scopeUri) => getSettings?.(section, scopeUri); const customPlugins = loadCustomPlugins(rootPath); @@ -63,7 +66,7 @@ export function getDocumentService( getStylesheet: services.getStylesheet }); const jsonPlugin = useJsonPlugin({ - getJsonLs: () => services.jsonLs, + getJsonLs: () => jsonLs, }); const tsPlugin = useTsPlugin({ getTsLs: () => tsLs, diff --git a/packages/vue-language-service/src/languageService.ts b/packages/vue-language-service/src/languageService.ts index e9b88fbe8..4fe1c101c 100644 --- a/packages/vue-language-service/src/languageService.ts +++ b/packages/vue-language-service/src/languageService.ts @@ -44,6 +44,7 @@ import useScriptSetupConversionsPlugin from './vuePlugins/scriptSetupConversions import useTagNameCasingConversionsPlugin from './vuePlugins/tagNameCasingConversions'; import useVuePlugin, { triggerCharacters as vueTriggerCharacters } from './vuePlugins/vue'; import useVueTemplateLanguagePlugin, { semanticTokenTypes as vueTemplateSemanticTokenTypes, triggerCharacters as vueTemplateLanguageTriggerCharacters } from './vuePlugins/vueTemplateLanguage'; +import * as json from 'vscode-json-languageservice'; import type * as _0 from 'vscode-html-languageservice'; import type * as _1 from 'vscode-css-languageservice'; @@ -115,6 +116,8 @@ export function createLanguageService( const blockingRequests = new Set>(); const tsTriggerCharacters = getTsTriggerCharacters(ts.version); + const jsonLs = json.getLanguageService({ schemaRequestService: vueHost?.schemaRequestService }); + // plugins const _getSettings: (section: string, scopeUri?: string | undefined) => Promise = async (section, scopeUri) => getSettings?.(section, scopeUri); const customPlugins = loadCustomPlugins(vueHost.getCurrentDirectory()).map(plugin => defineLanguageServicePlugin(plugin)); @@ -160,7 +163,7 @@ export function createLanguageService( ); const jsonPlugin = defineLanguageServicePlugin( useJsonPlugin({ - getJsonLs: () => services.jsonLs, + getJsonLs: () => jsonLs, schema: undefined, // TODO }), { diff --git a/packages/vue-typescript/package.json b/packages/vue-typescript/package.json index fa36e83f0..def17a212 100644 --- a/packages/vue-typescript/package.json +++ b/packages/vue-typescript/package.json @@ -26,7 +26,6 @@ "upath": "^2.0.1", "vscode-css-languageservice": "^5.1.9", "vscode-html-languageservice": "^4.2.1", - "vscode-json-languageservice": "^4.1.10", "vscode-languageserver-protocol": "^3.17.0-next.12", "vscode-languageserver-textdocument": "^1.0.3" } diff --git a/packages/vue-typescript/src/basicRuntime.ts b/packages/vue-typescript/src/basicRuntime.ts index 471eba2fd..a2a54adf3 100644 --- a/packages/vue-typescript/src/basicRuntime.ts +++ b/packages/vue-typescript/src/basicRuntime.ts @@ -4,7 +4,6 @@ import { TextRange } from '@volar/vue-code-gen/out/types'; import * as fs from 'fs'; import * as css from 'vscode-css-languageservice'; import * as html from 'vscode-html-languageservice'; -import * as json from 'vscode-json-languageservice'; import { TextDocument } from 'vscode-languageserver-textdocument'; import * as pug from '@volar/pug-language-service'; import { findClassNames } from './parsers/cssClasses'; @@ -58,7 +57,6 @@ export function createBasicRuntime() { const scssLs = css.getSCSSLanguageService({ fileSystemProvider }); const lessLs = css.getLESSLanguageService({ fileSystemProvider }); const pugLs = pug.getLanguageService(htmlLs); - const jsonLs = json.getLanguageService({ /* schemaRequestService: vueHost?.schemaRequestService */ }); const postcssLs: css.LanguageService = { ...scssLs, doValidation: (document, stylesheet, documentSettings) => { @@ -75,20 +73,17 @@ export function createBasicRuntime() { const stylesheetVBinds = new WeakMap(); const stylesheetClasses = new WeakMap>(); const htmlDocuments = new WeakMap(); - const jsonDocuments = new WeakMap(); const pugDocuments = new WeakMap(); return { fileSystemProvider, htmlLs, pugLs, - jsonLs, getCssLs, getStylesheet, getCssVBindRanges, getCssClasses, getHtmlDocument, - getJsonDocument, getPugDocument, updateHtmlCustomData, updateCssCustomData, @@ -252,24 +247,6 @@ export function createBasicRuntime() { return doc; } - function getJsonDocument(document: TextDocument) { - - if (document.languageId !== 'json' && document.languageId !== 'jsonc') - return; - - const cache = jsonDocuments.get(document); - if (cache) { - const [cacheVersion, cacheDoc] = cache; - if (cacheVersion === document.version) { - return cacheDoc; - } - } - - const doc = jsonLs.parseJSONDocument(document); - jsonDocuments.set(document, [document.version, doc]); - - return doc; - } function getPugDocument(document: TextDocument) { if (document.languageId !== 'jade') diff --git a/packages/vue-typescript/src/types.ts b/packages/vue-typescript/src/types.ts index 62cf78187..9e04dc7ff 100644 --- a/packages/vue-typescript/src/types.ts +++ b/packages/vue-typescript/src/types.ts @@ -42,11 +42,9 @@ export type BasicRuntimeContext = { htmlLs: html.LanguageService, pugLs: pug.LanguageService, - jsonLs: json.LanguageService, getCssLs: (lang: string) => css.LanguageService | undefined, getStylesheet: (documrnt: TextDocument) => css.Stylesheet | undefined, getHtmlDocument: (documrnt: TextDocument) => html.HTMLDocument | undefined, - getJsonDocument: (documrnt: TextDocument) => json.JSONDocument | undefined, getPugDocument: (documrnt: TextDocument) => pug.PugDocument | undefined, }