Skip to content

Commit 14ae124

Browse files
committed
Use const enums for minimized ISuggestDataDto types
From microsoft#71060 **Problem** ISuggestDataDto currently uses opaque property names in order to keep the size of the json object down. This makes the code difficult to read **Proposed Fix** Use a const enum to map human readable property name to the short names actually used for the json
1 parent 7aff0c4 commit 14ae124

3 files changed

Lines changed: 58 additions & 41 deletions

File tree

src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import * as search from 'vs/workbench/contrib/search/common/search';
1111
import { CancellationToken } from 'vs/base/common/cancellation';
1212
import { Position as EditorPosition } from 'vs/editor/common/core/position';
1313
import { Range as EditorRange, IRange } from 'vs/editor/common/core/range';
14-
import { ExtHostContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, MainContext, IExtHostContext, ILanguageConfigurationDto, IRegExpDto, IIndentationRuleDto, IOnEnterRuleDto, ILocationDto, IWorkspaceSymbolDto, reviveWorkspaceEditDto, IDocumentFilterDto, IDefinitionLinkDto, ISignatureHelpProviderMetadataDto, ILinkDto, ICallHierarchyItemDto, ISuggestDataDto, ICodeActionDto } from '../common/extHost.protocol';
14+
import { ExtHostContext, MainThreadLanguageFeaturesShape, ExtHostLanguageFeaturesShape, MainContext, IExtHostContext, ILanguageConfigurationDto, IRegExpDto, IIndentationRuleDto, IOnEnterRuleDto, ILocationDto, IWorkspaceSymbolDto, reviveWorkspaceEditDto, IDocumentFilterDto, IDefinitionLinkDto, ISignatureHelpProviderMetadataDto, ILinkDto, ICallHierarchyItemDto, ISuggestDataDto, ICodeActionDto, ISuggestDataDtoField } from '../common/extHost.protocol';
1515
import { LanguageConfigurationRegistry } from 'vs/editor/common/modes/languageConfigurationRegistry';
1616
import { LanguageConfiguration, IndentationRule, OnEnterRule } from 'vs/editor/common/modes/languageConfiguration';
1717
import { IModeService } from 'vs/editor/common/services/modeService';
@@ -328,20 +328,20 @@ export class MainThreadLanguageFeatures implements MainThreadLanguageFeaturesSha
328328

329329
private static _inflateSuggestDto(defaultRange: IRange, data: ISuggestDataDto): modes.CompletionItem {
330330
return {
331-
label: data.a,
332-
kind: data.b,
333-
tags: data.n,
334-
detail: data.c,
335-
documentation: data.d,
336-
sortText: data.e,
337-
filterText: data.f,
338-
preselect: data.g,
339-
insertText: typeof data.h === 'undefined' ? data.a : data.h,
340-
insertTextRules: data.i,
341-
range: data.j || defaultRange,
342-
commitCharacters: data.k,
343-
additionalTextEdits: data.l,
344-
command: data.m,
331+
label: data[ISuggestDataDtoField.label],
332+
kind: data[ISuggestDataDtoField.kind],
333+
tags: data[ISuggestDataDtoField.kindModifier],
334+
detail: data[ISuggestDataDtoField.detail],
335+
documentation: data[ISuggestDataDtoField.documentation],
336+
sortText: data[ISuggestDataDtoField.sortText],
337+
filterText: data[ISuggestDataDtoField.filterText],
338+
preselect: data[ISuggestDataDtoField.preselect],
339+
insertText: typeof data.h === 'undefined' ? data[ISuggestDataDtoField.label] : data.h,
340+
insertTextRules: data[ISuggestDataDtoField.insertTextRules],
341+
range: data[ISuggestDataDtoField.range] || defaultRange,
342+
commitCharacters: data[ISuggestDataDtoField.commitCharacters],
343+
additionalTextEdits: data[ISuggestDataDtoField.additionalTextEdits],
344+
command: data[ISuggestDataDtoField.command],
345345
// not-standard
346346
_id: data.x,
347347
};

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -929,21 +929,38 @@ export class IdObject {
929929
}
930930
}
931931

932+
export const enum ISuggestDataDtoField {
933+
label = 'a',
934+
kind = 'b',
935+
detail = 'c',
936+
documentation = 'd',
937+
sortText = 'e',
938+
filterText = 'f',
939+
preselect = 'g',
940+
insertText = 'h',
941+
insertTextRules = 'i',
942+
range = 'j',
943+
commitCharacters = 'k',
944+
additionalTextEdits = 'l',
945+
command = 'm',
946+
kindModifier = 'n',
947+
}
948+
932949
export interface ISuggestDataDto {
933-
a/* label */: string;
934-
b/* kind */: modes.CompletionItemKind;
935-
c/* detail */?: string;
936-
d/* documentation */?: string | IMarkdownString;
937-
e/* sortText */?: string;
938-
f/* filterText */?: string;
939-
g/* preselect */?: boolean;
940-
h/* insertText */?: string;
941-
i/* insertTextRules */?: modes.CompletionItemInsertTextRule;
942-
j/* range */?: IRange;
943-
k/* commitCharacters */?: string[];
944-
l/* additionalTextEdits */?: ISingleEditOperation[];
945-
m/* command */?: modes.Command;
946-
n/* kindModifier */?: modes.CompletionItemTag[];
950+
[ISuggestDataDtoField.label]: string;
951+
[ISuggestDataDtoField.kind]: modes.CompletionItemKind;
952+
[ISuggestDataDtoField.detail]?: string;
953+
[ISuggestDataDtoField.documentation]?: string | IMarkdownString;
954+
[ISuggestDataDtoField.sortText]?: string;
955+
[ISuggestDataDtoField.filterText]?: string;
956+
[ISuggestDataDtoField.preselect]?: boolean;
957+
[ISuggestDataDtoField.insertText]?: string;
958+
[ISuggestDataDtoField.insertTextRules]?: modes.CompletionItemInsertTextRule;
959+
[ISuggestDataDtoField.range]?: IRange;
960+
[ISuggestDataDtoField.commitCharacters]?: string[];
961+
[ISuggestDataDtoField.additionalTextEdits]?: ISingleEditOperation[];
962+
[ISuggestDataDtoField.command]?: modes.Command;
963+
[ISuggestDataDtoField.kindModifier]?: modes.CompletionItemTag[];
947964
// not-standard
948965
x?: ChainedCacheId;
949966
}

src/vs/workbench/api/common/extHostLanguageFeatures.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -724,18 +724,18 @@ class SuggestAdapter {
724724
//
725725
x: id,
726726
//
727-
a: item.label,
728-
b: typeConvert.CompletionItemKind.from(item.kind),
729-
n: item.tags && item.tags.map(typeConvert.CompletionItemTag.from),
730-
c: item.detail,
731-
d: typeof item.documentation === 'undefined' ? undefined : typeConvert.MarkdownString.fromStrict(item.documentation),
732-
e: item.sortText,
733-
f: item.filterText,
734-
g: item.preselect,
735-
i: item.keepWhitespace ? modes.CompletionItemInsertTextRule.KeepWhitespace : 0,
736-
k: item.commitCharacters,
737-
l: item.additionalTextEdits && item.additionalTextEdits.map(typeConvert.TextEdit.from),
738-
m: this._commands.toInternal(item.command, disposables),
727+
[extHostProtocol.ISuggestDataDtoField.label]: item.label,
728+
[extHostProtocol.ISuggestDataDtoField.kind]: typeConvert.CompletionItemKind.from(item.kind),
729+
[extHostProtocol.ISuggestDataDtoField.kindModifier]: item.tags && item.tags.map(typeConvert.CompletionItemTag.from),
730+
[extHostProtocol.ISuggestDataDtoField.detail]: item.detail,
731+
[extHostProtocol.ISuggestDataDtoField.documentation]: typeof item.documentation === 'undefined' ? undefined : typeConvert.MarkdownString.fromStrict(item.documentation),
732+
[extHostProtocol.ISuggestDataDtoField.sortText]: item.sortText,
733+
[extHostProtocol.ISuggestDataDtoField.filterText]: item.filterText,
734+
[extHostProtocol.ISuggestDataDtoField.preselect]: item.preselect,
735+
[extHostProtocol.ISuggestDataDtoField.insertTextRules]: item.keepWhitespace ? modes.CompletionItemInsertTextRule.KeepWhitespace : 0,
736+
[extHostProtocol.ISuggestDataDtoField.commitCharacters]: item.commitCharacters,
737+
[extHostProtocol.ISuggestDataDtoField.additionalTextEdits]: item.additionalTextEdits && item.additionalTextEdits.map(typeConvert.TextEdit.from),
738+
[extHostProtocol.ISuggestDataDtoField.command]: this._commands.toInternal(item.command, disposables),
739739
};
740740

741741
// 'insertText'-logic

0 commit comments

Comments
 (0)