From 340e27d495e264fdfaf9dc8b919d5519d367cf3b Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 19 Aug 2016 16:10:15 +0200 Subject: [PATCH] CompletionModel#incomplete --- .../contrib/suggest/common/completionModel.ts | 15 ++++++++++-- .../test/common/completionModel.test.ts | 24 +++++++++++++++---- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/vs/editor/contrib/suggest/common/completionModel.ts b/src/vs/editor/contrib/suggest/common/completionModel.ts index 568a9ab058a..5af800de103 100644 --- a/src/vs/editor/contrib/suggest/common/completionModel.ts +++ b/src/vs/editor/contrib/suggest/common/completionModel.ts @@ -8,7 +8,7 @@ import {isFalsyOrEmpty} from 'vs/base/common/arrays'; import {TPromise} from 'vs/base/common/winjs.base'; import {IFilter, IMatch, fuzzyContiguousFilter} from 'vs/base/common/filters'; -import {ISuggestion} from 'vs/editor/common/modes'; +import {ISuggestion, ISuggestSupport} from 'vs/editor/common/modes'; import {ISuggestionItem} from './suggest'; export class CompletionItem { @@ -45,6 +45,7 @@ export class CompletionModel { private _lineContext: LineContext; private _items: CompletionItem[] = []; + private _incomplete: ISuggestSupport[] = []; private _filteredItems: CompletionItem[] = undefined; private _topScoreIdx: number; @@ -53,11 +54,21 @@ export class CompletionModel { constructor(raw: ISuggestionItem[], lineContext: LineContext) { this.raw = raw; this._lineContext = lineContext; - for (let item of raw) { + for (const item of raw) { this._items.push(new CompletionItem(item)); + + if (item.container.incomplete + && this._incomplete.indexOf(item.support) < 0) { + + this._incomplete.push(item.support); + } } } + get incomplete(): ISuggestSupport[] { + return this._incomplete; + } + get lineContext(): LineContext { return this._lineContext; } diff --git a/src/vs/editor/contrib/suggest/test/common/completionModel.test.ts b/src/vs/editor/contrib/suggest/test/common/completionModel.test.ts index d4a6c2e5532..791e01c59ef 100644 --- a/src/vs/editor/contrib/suggest/test/common/completionModel.test.ts +++ b/src/vs/editor/contrib/suggest/test/common/completionModel.test.ts @@ -12,7 +12,7 @@ import {CompletionModel} from 'vs/editor/contrib/suggest/common/completionModel' suite('CompletionModel', function () { - function createSuggestItem(label: string, overwriteBefore: number): ISuggestionItem { + function createSuggestItem(label: string, overwriteBefore: number, incomplete: boolean = false): ISuggestionItem { return new class implements ISuggestionItem { @@ -25,7 +25,7 @@ suite('CompletionModel', function () { container: ISuggestResult = { currentWord: '', - incomplete: false, + incomplete, suggestions: [this.suggestion] }; @@ -46,9 +46,9 @@ suite('CompletionModel', function () { createSuggestItem('Foo', 3), createSuggestItem('foo', 2), ], { - leadingLineContent: 'foo', - characterCountDelta: 0 - }); + leadingLineContent: 'foo', + characterCountDelta: 0 + }); }); test('filtering - cached', function () { @@ -75,4 +75,18 @@ suite('CompletionModel', function () { model.lineContext = { leadingLineContent: 'Foo', characterCountDelta: 0 }; assert.equal(model.topScoreIdx, 1); }); + + test('complete/incomplete', function () { + + assert.equal(model.incomplete.length, 0); + + let incompleteModel = new CompletionModel([ + createSuggestItem('foo', 3, true), + createSuggestItem('foo', 2), + ], { + leadingLineContent: 'foo', + characterCountDelta: 0 + }); + assert.equal(incompleteModel.incomplete.length, 1); + }); }); -- GitLab