Skip to content

Commit f57ce6d

Browse files
committed
refactor: virtuals -> use
1 parent bc3e103 commit f57ce6d

File tree

13 files changed

+189
-203
lines changed

13 files changed

+189
-203
lines changed

packages/vscode-vue-languageservice/src/languageService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type * as vscode from 'vscode-languageserver';
22
import { TextDocument } from 'vscode-languageserver-textdocument';
33
import * as shared from '@volar/shared';
44
import { createSourceFile, SourceFile } from './sourceFile';
5-
import { getGlobalDoc } from './virtuals/global';
5+
import { createGlobalDefineDocument } from './utils/globalDoc';
66
import { pauseTracking, resetTracking } from '@vue/reactivity';
77
import * as upath from 'upath';
88
import type * as ts from 'typescript';
@@ -121,7 +121,7 @@ export function createLanguageService(
121121
const scriptTsLsRaw = vueHost.createTsLanguageService(scriptTsHost);
122122
const templateTsLs = ts2.createLanguageService(ts, templateTsHost, templateTsLsRaw);
123123
const scriptTsLs = ts2.createLanguageService(ts, scriptTsHost, scriptTsLsRaw);
124-
const globalDoc = getGlobalDoc(vueHost.getCurrentDirectory());
124+
const globalDoc = createGlobalDefineDocument(vueHost.getCurrentDirectory());
125125
const compilerHost = ts.createCompilerHost(vueHost.getCompilationSettings());
126126
const documentContext: html.DocumentContext = {
127127
resolveReference(ref: string, base: string) {

packages/vscode-vue-languageservice/src/services/completion.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -602,15 +602,21 @@ export function register({ modules: { html, emmet }, sourceFiles, getTsLs, htmlL
602602
return getter();
603603
}
604604
function useComponentCompletionData(sourceFile: SourceFile) {
605-
const { templateLsTemplateScript, virtualTemplateRaw, templateScriptData } = sourceFile.refs;
605+
606+
const {
607+
sfcTemplateScript,
608+
sfcTemplate,
609+
templateScriptData,
610+
} = sourceFile.refs;
611+
606612
const templateTsProjectVersion = ref<string>();
607613
const result = computed(() => {
608614
{ // watching
609615
templateTsProjectVersion.value;
610616
}
611617
const data = new Map<string, { item: vscode.CompletionItem | undefined, bind: vscode.CompletionItem[], on: vscode.CompletionItem[], slot: vscode.CompletionItem[] }>();
612-
if (templateLsTemplateScript.textDocument.value && virtualTemplateRaw.textDocument.value) {
613-
const doc = templateLsTemplateScript.textDocument.value;
618+
if (sfcTemplateScript.textDocument.value && sfcTemplate.textDocument.value) {
619+
const doc = sfcTemplateScript.textDocument.value;
614620
const text = doc.getText();
615621
for (const tag of [...templateScriptData.componentItems, ...templateScriptData.htmlElementItems]) {
616622
const tagName = (tag.data as TsCompletionData).name;

packages/vscode-vue-languageservice/src/services/diagnostics.ts

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,19 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
2828
function useDiagnostics(sourceFile: SourceFile) {
2929

3030
const {
31-
cssLsStyles,
32-
virtualJsonBlocks,
33-
scriptLsScript,
34-
lastUpdateChanged,
31+
cssLsDocuments,
32+
cssLsSourceMaps,
33+
sfcJsons,
34+
sfcScriptForScriptLs,
35+
lastUpdated: lastUpdateChanged,
3536
sfcErrors,
36-
virtualTemplateRaw,
37+
sfcTemplate,
3738
descriptor,
3839
vueDoc,
39-
templateLsTemplateScript,
40+
sfcTemplateScript,
4041
templateScriptData,
41-
templateLsScript,
42-
templatetTsSourceMaps,
42+
sfcScriptForTemplateLs,
43+
templateLsSourceMaps: templateTsSourceMaps,
4344
} = sourceFile.refs;
4445

4546
const templateTsProjectVersion = ref<string>();
@@ -52,8 +53,8 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
5253
result: ComputedRef<Promise<vscode.Diagnostic[]> | vscode.Diagnostic[]>;
5354
cache: ComputedRef<Promise<vscode.Diagnostic[]> | vscode.Diagnostic[]>;
5455
}, number, vscode.Diagnostic[]][] = [
55-
[useStylesValidation(computed(() => cssLsStyles.textDocuments.value)), 0, []],
56-
[useJsonsValidation(computed(() => virtualJsonBlocks.textDocuments.value)), 0, []],
56+
[useStylesValidation(computed(() => cssLsDocuments.value)), 0, []],
57+
[useJsonsValidation(computed(() => sfcJsons.textDocuments.value)), 0, []],
5758
[useTemplateValidation(), 0, []],
5859
[useScriptExistValidation(), 0, []],
5960
];
@@ -69,11 +70,11 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
6970
result: ComputedRef<vscode.Diagnostic[]>;
7071
cache: ComputedRef<vscode.Diagnostic[]>;
7172
}, number, vscode.Diagnostic[]][] = [
72-
[useScriptValidation(scriptLsScript.textDocument, 1), 0, []],
73-
[useScriptValidation(scriptLsScript.textDocument, 2), 0, []],
74-
[useScriptValidation(computed(() => scriptLsScript.textDocumentForSuggestion.value ?? scriptLsScript.textDocument.value), 3), 0, []],
73+
[useScriptValidation(sfcScriptForScriptLs.textDocument, 1), 0, []],
74+
[useScriptValidation(sfcScriptForScriptLs.textDocument, 2), 0, []],
75+
[useScriptValidation(computed(() => sfcScriptForScriptLs.textDocumentForSuggestion.value ?? sfcScriptForScriptLs.textDocument.value), 3), 0, []],
7576
// [useScriptValidation(virtualScriptGen.textDocument, 4), 0, []], // TODO: support cancel because it's very slow
76-
[useScriptValidation(computed(() => anyNoUnusedEnabled ? scriptLsScript.textDocumentForSuggestion.value : undefined), 1, true), 0, []],
77+
[useScriptValidation(computed(() => anyNoUnusedEnabled ? sfcScriptForScriptLs.textDocumentForSuggestion.value : undefined), 1, true), 0, []],
7778
];
7879

7980
return async (response: (diags: vscode.Diagnostic[]) => void, isCancel?: () => Promise<boolean>) => {
@@ -153,15 +154,15 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
153154

154155
function useTemplateValidation() {
155156
const htmlErrors = computed(() => {
156-
if (virtualTemplateRaw.textDocument.value && virtualTemplateRaw.htmlDocument.value) {
157-
return getVueCompileErrors(virtualTemplateRaw.textDocument.value);
157+
if (sfcTemplate.textDocument.value && sfcTemplate.htmlDocument.value) {
158+
return getVueCompileErrors(sfcTemplate.textDocument.value);
158159
}
159160
return [];
160161
});
161162
const pugErrors = computed(() => {
162163
const result: vscode.Diagnostic[] = [];
163-
if (virtualTemplateRaw.textDocument.value && virtualTemplateRaw.pugDocument.value) {
164-
const pugDoc = virtualTemplateRaw.pugDocument.value;
164+
if (sfcTemplate.textDocument.value && sfcTemplate.pugDocument.value) {
165+
const pugDoc = sfcTemplate.pugDocument.value;
165166
const astError = pugDoc.error;
166167
if (astError) {
167168
result.push({
@@ -213,8 +214,8 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
213214
}
214215
vueCompileError.message += errorText;
215216
vueCompileError.range = {
216-
start: virtualTemplateRaw.textDocument.value.positionAt(0),
217-
end: virtualTemplateRaw.textDocument.value.positionAt(virtualTemplateRaw.textDocument.value.getText().length),
217+
start: sfcTemplate.textDocument.value.positionAt(0),
218+
end: sfcTemplate.textDocument.value.positionAt(sfcTemplate.textDocument.value.getText().length),
218219
};
219220
result.push(vueCompileError);
220221
}
@@ -231,10 +232,10 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
231232
return cacheWithSourceMap.value;
232233
});
233234
const cacheWithSourceMap = computed(() => {
234-
if (!virtualTemplateRaw.textDocument.value) return [];
235+
if (!sfcTemplate.textDocument.value) return [];
235236
return [
236-
...toSourceDiags(htmlErrors.value, virtualTemplateRaw.textDocument.value.uri, virtualTemplateRaw.htmlSourceMap.value ? [virtualTemplateRaw.htmlSourceMap.value] : []),
237-
...toSourceDiags(pugErrors.value, virtualTemplateRaw.textDocument.value.uri, virtualTemplateRaw.pugSourceMap.value ? [virtualTemplateRaw.pugSourceMap.value] : []),
237+
...toSourceDiags(htmlErrors.value, sfcTemplate.textDocument.value.uri, sfcTemplate.htmlSourceMap.value ? [sfcTemplate.htmlSourceMap.value] : []),
238+
...toSourceDiags(pugErrors.value, sfcTemplate.textDocument.value.uri, sfcTemplate.pugSourceMap.value ? [sfcTemplate.pugSourceMap.value] : []),
238239
];
239240
});
240241
return {
@@ -320,7 +321,7 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
320321
const cacheWithSourceMap = computed(() => {
321322
let result: vscode.Diagnostic[] = [];
322323
for (const [uri, errs] of errors_cache.value) {
323-
result = result.concat(toSourceDiags(errs, uri, cssLsStyles.sourceMaps.value));
324+
result = result.concat(toSourceDiags(errs, uri, cssLsSourceMaps.value));
324325
}
325326
return result as vscode.Diagnostic[];
326327
});
@@ -360,7 +361,7 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
360361
let result: vscode.Diagnostic[] = [];
361362
if (errors_cache.value) {
362363
for (const [uri, errs] of await errors_cache.value) {
363-
result = result.concat(toSourceDiags(errs, uri, virtualJsonBlocks.sourceMaps.value));
364+
result = result.concat(toSourceDiags(errs, uri, sfcJsons.sourceMaps.value));
364365
}
365366
}
366367
return result as vscode.Diagnostic[];
@@ -373,7 +374,7 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
373374
function useScriptExistValidation() {
374375
const result = computed(() => {
375376
const diags: vscode.Diagnostic[] = [];
376-
if (!scriptTsLs.__internal__.getValidTextDocument(scriptLsScript.textDocument.value.uri)) {
377+
if (!scriptTsLs.__internal__.getValidTextDocument(sfcScriptForScriptLs.textDocument.value.uri)) {
377378
for (const script of [descriptor.script, descriptor.scriptSetup]) {
378379
if (!script || script.content === '') continue;
379380
const error = vscode.Diagnostic.create(
@@ -426,7 +427,7 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
426427
const cacheWithSourceMap = computed(() => {
427428
const doc = document.value;
428429
if (!doc) return [];
429-
let result = toTsSourceDiags('script', errors_cache.value, doc.uri, templatetTsSourceMaps.value);
430+
let result = toTsSourceDiags('script', errors_cache.value, doc.uri, templateTsSourceMaps.value);
430431
if (onlyUnusedCheck) {
431432
result = result.filter(error => error.tags?.includes(vscode.DiagnosticTag.Unnecessary));
432433
}
@@ -442,7 +443,7 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
442443
if (mode === 1) { // watching
443444
templateTsProjectVersion.value;
444445
}
445-
const doc = templateLsTemplateScript.textDocument.value;
446+
const doc = sfcTemplateScript.textDocument.value;
446447
if (!doc) return [];
447448
if (mode === 1) {
448449
return templateTsLs.doValidation(doc.uri, { semantic: true });
@@ -460,18 +461,18 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
460461
});
461462
const errors_2 = computed(() => {
462463
const result: vscode.Diagnostic[] = [];
463-
if (!templateLsTemplateScript.textDocument.value
464-
|| !templateLsTemplateScript.teleportSourceMap.value
464+
if (!sfcTemplateScript.textDocument.value
465+
|| !sfcTemplateScript.teleportSourceMap.value
465466
) return result;
466467
for (const diag of errors_1.value) {
467-
const spanText = templateLsTemplateScript.textDocument.value.getText(diag.range);
468+
const spanText = sfcTemplateScript.textDocument.value.getText(diag.range);
468469
if (!templateScriptData.setupReturns.includes(spanText)) continue;
469-
const propRights = templateLsTemplateScript.teleportSourceMap.value.getMappedRanges(diag.range.start, diag.range.end);
470+
const propRights = sfcTemplateScript.teleportSourceMap.value.getMappedRanges(diag.range.start, diag.range.end);
470471
for (const propRight of propRights) {
471472
if (propRight.data.isAdditionalReference) continue;
472-
const definitions = templateTsLs.findDefinition(templateLsTemplateScript.textDocument.value.uri, propRight.start);
473+
const definitions = templateTsLs.findDefinition(sfcTemplateScript.textDocument.value.uri, propRight.start);
473474
for (const definition of definitions) {
474-
if (definition.targetUri !== templateLsScript.textDocument.value.uri) continue;
475+
if (definition.targetUri !== sfcScriptForTemplateLs.textDocument.value.uri) continue;
475476
result.push({
476477
...diag,
477478
range: definition.targetSelectionRange,
@@ -489,17 +490,17 @@ export function register({ sourceFiles, getCssLs, jsonLs, templateTsLs, scriptTs
489490
return cacheWithSourceMap.value;
490491
});
491492
const cacheWithSourceMap = computed(() => {
492-
const result_1 = templateLsTemplateScript.textDocument.value ? toTsSourceDiags(
493+
const result_1 = sfcTemplateScript.textDocument.value ? toTsSourceDiags(
493494
'template',
494495
errors_1_cache.value,
495-
templateLsTemplateScript.textDocument.value.uri,
496-
templatetTsSourceMaps.value,
496+
sfcTemplateScript.textDocument.value.uri,
497+
templateTsSourceMaps.value,
497498
) : [];
498-
const result_2 = templateLsScript.textDocument.value ? toTsSourceDiags(
499+
const result_2 = sfcScriptForTemplateLs.textDocument.value ? toTsSourceDiags(
499500
'template',
500501
errors_2_cache.value,
501-
templateLsScript.textDocument.value.uri,
502-
templatetTsSourceMaps.value,
502+
sfcScriptForTemplateLs.textDocument.value.uri,
503+
templateTsSourceMaps.value,
503504
) : [];
504505
return [...result_1, ...result_2];
505506
});

0 commit comments

Comments
 (0)