diff --git a/src/language/typescript/monaco.contribution.ts b/src/language/typescript/monaco.contribution.ts index d272f375fa..4011ae3b9d 100644 --- a/src/language/typescript/monaco.contribution.ts +++ b/src/language/typescript/monaco.contribution.ts @@ -547,6 +547,18 @@ export interface TypeScriptWorker { * @returns `Promise` */ provideInlayHints(fileName: string, start: number, end: number): Promise>; + + /** + * Get encoded semantic classifications in the range of the file. + * + * The returned number array is encoded as triples of [start, length, ClassificationType, ...]. + * @returns `Promise` + */ + getEncodedSemanticClassifications( + fileName: string, + start: number, + end: number + ): Promise<{ spans: number[] } | undefined>; } // --- TypeScript configuration and defaults --------- diff --git a/src/language/typescript/tsWorker.ts b/src/language/typescript/tsWorker.ts index c4f7d3eba0..b8190509f3 100644 --- a/src/language/typescript/tsWorker.ts +++ b/src/language/typescript/tsWorker.ts @@ -473,6 +473,21 @@ export class TypeScriptWorker implements ts.LanguageServiceHost, ITypeScriptWork return []; } } + + async getEncodedSemanticClassifications( + fileName: string, + start: number, + end: number + ): Promise { + if (fileNameIsLib(fileName)) { + return undefined; + } + return this._languageService.getEncodedSemanticClassifications( + fileName, + { start, length: end - start }, + '2020' as ts.SemanticClassificationFormat + ); + } } export interface ICreateData {