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

CompletionModel#incomplete

上级 d6eea9f1
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
import {isFalsyOrEmpty} from 'vs/base/common/arrays'; import {isFalsyOrEmpty} from 'vs/base/common/arrays';
import {TPromise} from 'vs/base/common/winjs.base'; import {TPromise} from 'vs/base/common/winjs.base';
import {IFilter, IMatch, fuzzyContiguousFilter} from 'vs/base/common/filters'; 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'; import {ISuggestionItem} from './suggest';
export class CompletionItem { export class CompletionItem {
...@@ -45,6 +45,7 @@ export class CompletionModel { ...@@ -45,6 +45,7 @@ export class CompletionModel {
private _lineContext: LineContext; private _lineContext: LineContext;
private _items: CompletionItem[] = []; private _items: CompletionItem[] = [];
private _incomplete: ISuggestSupport[] = [];
private _filteredItems: CompletionItem[] = undefined; private _filteredItems: CompletionItem[] = undefined;
private _topScoreIdx: number; private _topScoreIdx: number;
...@@ -53,11 +54,21 @@ export class CompletionModel { ...@@ -53,11 +54,21 @@ export class CompletionModel {
constructor(raw: ISuggestionItem[], lineContext: LineContext) { constructor(raw: ISuggestionItem[], lineContext: LineContext) {
this.raw = raw; this.raw = raw;
this._lineContext = lineContext; this._lineContext = lineContext;
for (let item of raw) { for (const item of raw) {
this._items.push(new CompletionItem(item)); 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 { get lineContext(): LineContext {
return this._lineContext; return this._lineContext;
} }
......
...@@ -12,7 +12,7 @@ import {CompletionModel} from 'vs/editor/contrib/suggest/common/completionModel' ...@@ -12,7 +12,7 @@ import {CompletionModel} from 'vs/editor/contrib/suggest/common/completionModel'
suite('CompletionModel', function () { 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 { return new class implements ISuggestionItem {
...@@ -25,7 +25,7 @@ suite('CompletionModel', function () { ...@@ -25,7 +25,7 @@ suite('CompletionModel', function () {
container: ISuggestResult = { container: ISuggestResult = {
currentWord: '', currentWord: '',
incomplete: false, incomplete,
suggestions: [this.suggestion] suggestions: [this.suggestion]
}; };
...@@ -46,9 +46,9 @@ suite('CompletionModel', function () { ...@@ -46,9 +46,9 @@ suite('CompletionModel', function () {
createSuggestItem('Foo', 3), createSuggestItem('Foo', 3),
createSuggestItem('foo', 2), createSuggestItem('foo', 2),
], { ], {
leadingLineContent: 'foo', leadingLineContent: 'foo',
characterCountDelta: 0 characterCountDelta: 0
}); });
}); });
test('filtering - cached', function () { test('filtering - cached', function () {
...@@ -75,4 +75,18 @@ suite('CompletionModel', function () { ...@@ -75,4 +75,18 @@ suite('CompletionModel', function () {
model.lineContext = { leadingLineContent: 'Foo', characterCountDelta: 0 }; model.lineContext = { leadingLineContent: 'Foo', characterCountDelta: 0 };
assert.equal(model.topScoreIdx, 1); 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.
先完成此消息的编辑!
想要评论请 注册