Skip to content

Commit

Permalink
fix: diagnostics not update
Browse files Browse the repository at this point in the history
close #1076
  • Loading branch information
johnsoncodehk committed Mar 21, 2022
1 parent 6e3d7e0 commit 255df25
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
7 changes: 6 additions & 1 deletion packages/vue-language-service/src/languageService.ts
Expand Up @@ -114,6 +114,7 @@ export function createLanguageService(
const templateTsLs = templateTsLsHost && templateTsLsRaw ? ts2.createLanguageService(ts, templateTsLsHost, templateTsLsRaw, tsSettings) : undefined;
const blockingRequests = new Set<Promise<any>>();
const documents = new WeakMap<ts.IScriptSnapshot, TextDocument>();
const documentVersions = new Map<string, number>();

// plugins
const customPlugins = _customPlugins.map(plugin => defineLanguageServicePlugin(plugin));
Expand Down Expand Up @@ -385,10 +386,14 @@ export function createLanguageService(

if (!document) {

const newVersion = (documentVersions.get(uri.toLowerCase()) ?? 0) + 1;

documentVersions.set(uri.toLowerCase(), newVersion);

document = TextDocument.create(
uri,
uri.endsWith('.vue') ? 'vue' : 'typescript', // TODO
0, // TODO
newVersion,
scriptSnapshot.getText(0, scriptSnapshot.getLength()),
);
documents.set(scriptSnapshot, document);
Expand Down
11 changes: 9 additions & 2 deletions packages/vue-language-service/src/stylesheetExtra.ts
Expand Up @@ -21,6 +21,7 @@ export function createStylesheetExtra(cssPlugin: ReturnType<typeof useCssPlugin>
const embeddedDocuments = new WeakMap<EmbeddedFile, TextDocument>();
const stylesheetVBinds = new WeakMap<css.Stylesheet, TextRange[]>();
const stylesheetClasses = new WeakMap<css.Stylesheet, Record<string, TextRange[]>>();
const embeddedDocumentVersions = new Map<string, number>();

return {
getCssVBindRanges,
Expand Down Expand Up @@ -48,10 +49,16 @@ export function createStylesheetExtra(cssPlugin: ReturnType<typeof useCssPlugin>
let document = embeddedDocuments.get(embeddedFile);

if (!document) {

const uri = shared.fsPathToUri(embeddedFile.fileName);
const newVersion = (embeddedDocumentVersions.get(embeddedFile.lsType + ':' + uri.toLowerCase()) ?? 0) + 1;

embeddedDocumentVersions.set(embeddedFile.lsType + ':' + uri.toLowerCase(), newVersion);

document = TextDocument.create(
shared.fsPathToUri(embeddedFile.fileName),
uri,
shared.syntaxToLanguageId(embeddedFile.lang),
0,
newVersion,
embeddedFile.content,
);
embeddedDocuments.set(embeddedFile, document);
Expand Down
14 changes: 11 additions & 3 deletions packages/vue-language-service/src/vueDocuments.ts
Expand Up @@ -210,11 +210,19 @@ export function parseVueDocuments(vueFiles: VueFiles) {
export function parseVueDocument(vueFile: VueFile) {

// cache map
let documentVersion = 0;
const embeddedDocumentVersions = new Map<string, number>();
const embeddedDocumentsMap = useCacheMap<EmbeddedFile, TextDocument>(embeddedFile => {

const uri = shared.fsPathToUri(embeddedFile.fileName);
const newVersion = (embeddedDocumentVersions.get(embeddedFile.lsType + ':' + uri.toLowerCase()) ?? 0) + 1;

embeddedDocumentVersions.set(embeddedFile.lsType + ':' + uri.toLowerCase(), newVersion);

return TextDocument.create(
shared.fsPathToUri(embeddedFile.fileName),
uri,
shared.syntaxToLanguageId(embeddedFile.lang),
0,
newVersion,
embeddedFile.content,
);
});
Expand All @@ -228,7 +236,7 @@ export function parseVueDocument(vueFile: VueFile) {
});

// reactivity
const document = computed(() => TextDocument.create(shared.fsPathToUri(vueFile.fileName), 'vue', 0, vueFile.refs.content.value));
const document = computed(() => TextDocument.create(shared.fsPathToUri(vueFile.fileName), 'vue', documentVersion++, vueFile.refs.content.value));
const sourceMaps = computed(() => {
return vueFile.refs.allEmbeddeds.value.map(embedded => sourceMapsMap.get(embedded));
});
Expand Down

0 comments on commit 255df25

Please sign in to comment.