This commit is contained in:
Pine Wu
2020-01-17 17:13:45 +01:00
parent 7803c1d499
commit 591a43e8de
9 changed files with 38 additions and 35 deletions

View File

@@ -999,10 +999,14 @@ export const enum ISuggestDataDtoField {
additionalTextEdits = 'l',
command = 'm',
kindModifier = 'n',
// to merge into label
label2 = 'o',
}
export interface ISuggestDataDto {
[ISuggestDataDtoField.label]: string | modes.CompletionItemLabel;
[ISuggestDataDtoField.label]: string;
[ISuggestDataDtoField.label2]?: string | modes.CompletionItemLabel;
[ISuggestDataDtoField.kind]: modes.CompletionItemKind;
[ISuggestDataDtoField.detail]?: string;
[ISuggestDataDtoField.documentation]?: string | IMarkdownString;

View File

@@ -896,11 +896,7 @@ class SuggestAdapter {
}
private _convertCompletionItem(item: vscode.CompletionItem, position: vscode.Position, id: extHostProtocol.ChainedCacheId): extHostProtocol.ISuggestDataDto | undefined {
const label = typeof item.label === 'string'
? item.label
: item.label.name;
if (typeof label !== 'string' || label.length === 0) {
if (typeof item.label !== 'string' || item.label.length === 0) {
this._logService.warn('INVALID text edit -> must have at least a label');
return undefined;
}
@@ -915,6 +911,7 @@ class SuggestAdapter {
x: id,
//
[extHostProtocol.ISuggestDataDtoField.label]: item.label,
[extHostProtocol.ISuggestDataDtoField.label2]: item.label2,
[extHostProtocol.ISuggestDataDtoField.kind]: typeConvert.CompletionItemKind.from(item.kind),
[extHostProtocol.ISuggestDataDtoField.kindModifier]: item.tags && item.tags.map(typeConvert.CompletionItemTag.from),
[extHostProtocol.ISuggestDataDtoField.detail]: item.detail,

View File

@@ -832,7 +832,9 @@ export namespace CompletionItemKind {
export namespace CompletionItem {
export function to(suggestion: modes.CompletionItem, converter?: CommandsConverter): types.CompletionItem {
const result = new types.CompletionItem(suggestion.label);
const result = new types.CompletionItem(typeof suggestion.label === 'string' ? suggestion.label : suggestion.label.name);
result.label2 = suggestion.label;
result.insertText = suggestion.insertText;
result.kind = CompletionItemKind.to(suggestion.kind);
result.tags = suggestion.tags && suggestion.tags.map(CompletionItemTag.to);

View File

@@ -1361,7 +1361,8 @@ export interface CompletionItemLabel {
@es5ClassCompat
export class CompletionItem implements vscode.CompletionItem {
label: string | CompletionItemLabel;
label: string;
label2?: string | CompletionItemLabel;
kind?: CompletionItemKind;
tags?: CompletionItemTag[];
detail?: string;
@@ -1377,14 +1378,16 @@ export class CompletionItem implements vscode.CompletionItem {
additionalTextEdits?: TextEdit[];
command?: vscode.Command;
constructor(label: string | CompletionItemLabel, kind?: CompletionItemKind) {
constructor(label: string, kind?: CompletionItemKind) {
this.label = label;
this.label2 = { name: label };
this.kind = kind;
}
toJSON(): any {
return {
label: this.label,
label2: this.label2,
kind: this.kind && CompletionItemKind[this.kind],
detail: this.detail,
documentation: this.documentation,