Skip to content

Commit c115031

Browse files
committed
fix(typescript): force update the opened script snapshot after the language plugin is ready
close #254
1 parent bdbd555 commit c115031

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

Diff for: packages/typescript/lib/quickstart/createAsyncLanguageServicePlugin.ts

+15-5
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,24 @@ export function createAsyncLanguageServicePlugin(
3636
let initialized = false;
3737

3838
info.languageServiceHost.getScriptSnapshot = fileName => {
39-
if (!initialized && extensions.some(ext => fileName.endsWith(ext))) {
40-
return emptySnapshot;
39+
if (!initialized) {
40+
if (extensions.some(ext => fileName.endsWith(ext))) {
41+
return emptySnapshot;
42+
}
43+
if (info.project.getScriptInfo(fileName)?.isScriptOpen()) {
44+
return emptySnapshot;
45+
}
4146
}
4247
return getScriptSnapshot(fileName);
4348
};
4449
info.languageServiceHost.getScriptVersion = fileName => {
45-
if (!initialized && extensions.some(ext => fileName.endsWith(ext))) {
46-
return 'initializing...';
50+
if (!initialized) {
51+
if (extensions.some(ext => fileName.endsWith(ext))) {
52+
return 'initializing...';
53+
}
54+
if (info.project.getScriptInfo(fileName)?.isScriptOpen()) {
55+
return getScriptVersion(fileName) + ',initializing...';
56+
}
4757
}
4858
return getScriptVersion(fileName);
4959
};
@@ -106,10 +116,10 @@ export function createAsyncLanguageServicePlugin(
106116
decorateLanguageServiceHost(ts, language, info.languageServiceHost);
107117
setup?.(language);
108118

119+
initialized = true;
109120
if ('markAsDirty' in info.project && typeof info.project.markAsDirty === 'function') {
110121
info.project.markAsDirty();
111122
}
112-
initialized = true;
113123
});
114124
}
115125

0 commit comments

Comments
 (0)