提交 340e27d4 编写于 作者: J Johannes Rieken

CompletionModel#incomplete

上级 d6eea9f1
......@@ -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;
}
......
......@@ -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);
});
});
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册