Some error handling

This commit is contained in:
nknguyenhc
2025-03-22 00:53:20 +08:00
parent c8c2281cba
commit c1da035939
2 changed files with 9 additions and 3 deletions

View File

@@ -100,7 +100,7 @@ const ignoredErrors = [
2792, /* Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_node_or_to_add_aliases_to_the_paths_option */
];
export function getJavaScriptMode(documentRegions: LanguageModelCache<HTMLDocumentRegions>, languageId: 'javascript' | 'typescript', workspace: Workspace, extensionUri: Uri): LanguageMode {
export function getJavaScriptMode(documentRegions: LanguageModelCache<HTMLDocumentRegions>, languageId: 'javascript' | 'typescript', workspace: Workspace, extensionUri?: Uri): LanguageMode {
const jsDocuments = getLanguageModelCache<TextDocument>(10, 60, document => documentRegions.get(document).getEmbeddedDocument(languageId));
const host = getLanguageServiceHost(languageId === 'javascript' ? ts.ScriptKind.JS : ts.ScriptKind.TS);
@@ -311,16 +311,22 @@ export function getJavaScriptMode(documentRegions: LanguageModelCache<HTMLDocume
range: convertRange(jsDocument, d.textSpan)
};
} else {
if (!extensionUri) {
return undefined;
}
const filePath = path.posix.join(extensionUri.path, '../node_modules/typescript/lib', d.fileName);
const libUri = `${extensionUri.scheme}://${filePath}`;
const content = loadLibrary(d.fileName);
if (!content) {
return undefined;
}
const libDocument = TextDocument.create(libUri, 'typescript', 1, content);
return {
uri: libUri,
range: convertRange(libDocument, d.textSpan)
};
}
});
}).filter(d => !!d);
}
return null;
},

View File

@@ -113,7 +113,7 @@ export interface Uri {
path: string;
}
export function getLanguageModes(supportedLanguages: { [languageId: string]: boolean }, workspace: Workspace, clientCapabilities: ClientCapabilities, requestService: FileSystemProvider, extensionUri: Uri): LanguageModes {
export function getLanguageModes(supportedLanguages: { [languageId: string]: boolean }, workspace: Workspace, clientCapabilities: ClientCapabilities, requestService: FileSystemProvider, extensionUri?: Uri): LanguageModes {
const htmlLanguageService = getHTMLLanguageService({ clientCapabilities, fileSystemProvider: requestService });
const cssLanguageService = getCSSLanguageService({ clientCapabilities, fileSystemProvider: requestService });