From faec415cde161c8137b514d51a8056e6b378036b Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Mon, 26 Aug 2019 11:13:33 -0700 Subject: [PATCH] Add middleware for processing deprecated. Fix #79584 --- .../client/src/cssMain.ts | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/extensions/css-language-features/client/src/cssMain.ts b/extensions/css-language-features/client/src/cssMain.ts index ee8c9973d3a45..778b9086fd5a7 100644 --- a/extensions/css-language-features/client/src/cssMain.ts +++ b/extensions/css-language-features/client/src/cssMain.ts @@ -9,9 +9,10 @@ import * as fs from 'fs'; import * as nls from 'vscode-nls'; const localize = nls.loadMessageBundle(); -import { languages, window, commands, ExtensionContext, Range, Position, CompletionItem, CompletionItemKind, TextEdit, SnippetString, workspace } from 'vscode'; +import { languages, window, commands, ExtensionContext, Range, Position, CompletionItem, CompletionItemKind, TextEdit, SnippetString, workspace, CompletionItemTag } from 'vscode'; import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, Disposable } from 'vscode-languageclient'; import { getCustomDataPathsInAllWorkspaces, getCustomDataPathsFromAllExtensions } from './customData'; +import { isArray } from 'util'; // this method is called when vs code is activated export function activate(context: ExtensionContext) { @@ -44,6 +45,32 @@ export function activate(context: ExtensionContext) { }, initializationOptions: { dataPaths + }, + middleware: { + async provideCompletionItem(document, position, context, token, next) { + const result = await next(document, position, context, token); + if (result) { + if (isArray(result)) { + return result.map(r => { + return { + ...r, + tags: (r as any).deprecated ? [CompletionItemTag.Deprecated] : undefined + }; + }); + } else { + return { + isIncomplete: result.isIncomplete, + items: result.items.map(r => { + return { + ...r, + tags: (r as any).deprecated ? [CompletionItemTag.Deprecated] : undefined + }; + }) + }; + } + } + return result; + } } };