提交 3f6a98a5 编写于 作者: J Johannes Rieken

CompletionItem#range is not optional, #63454

上级 d7377cb7
......@@ -433,7 +433,7 @@ export interface CompletionItem {
* *Note:* The range must be a [single line](#Range.isSingleLine) and it must
* [contain](#Range.contains) the position at which completion has been [requested](#CompletionItemProvider.provideCompletionItems).
*/
range?: IRange;
range: IRange;
/**
* An optional set of characters that when pressed while this completion is active will accept it first and
* then type that character. *Note* that all commit characters should have `length=1` and that superfluous
......
......@@ -9,6 +9,7 @@ import { CompletionProviderRegistry, CompletionItemKind } from 'vs/editor/common
import { provideSuggestionItems } from 'vs/editor/contrib/suggest/suggest';
import { Position } from 'vs/editor/common/core/position';
import { TextModel } from 'vs/editor/common/model/textModel';
import { Range } from 'vs/editor/common/core/range';
suite('Suggest', function () {
......@@ -20,21 +21,24 @@ suite('Suggest', function () {
model = TextModel.createFromString('FOO\nbar\BAR\nfoo', undefined, undefined, URI.parse('foo:bar/path'));
registration = CompletionProviderRegistry.register({ pattern: 'bar/path', scheme: 'foo' }, {
provideCompletionItems() {
provideCompletionItems(_doc, pos) {
return {
incomplete: false,
suggestions: [{
label: 'aaa',
kind: CompletionItemKind.Snippet,
insertText: 'aaa'
insertText: 'aaa',
range: Range.fromPositions(pos)
}, {
label: 'zzz',
kind: CompletionItemKind.Snippet,
insertText: 'zzz'
insertText: 'zzz',
range: Range.fromPositions(pos)
}, {
label: 'fff',
kind: CompletionItemKind.Property,
insertText: 'fff'
insertText: 'fff',
range: Range.fromPositions(pos)
}]
};
}
......
......@@ -9,6 +9,7 @@ import { URI } from 'vs/base/common/uri';
import { CoreEditingCommands } from 'vs/editor/browser/controller/coreCommands';
import { EditOperation } from 'vs/editor/common/core/editOperation';
import { Range } from 'vs/editor/common/core/range';
import { Position } from 'vs/editor/common/core/position';
import { Selection } from 'vs/editor/common/core/selection';
import { TokenizationResult2 } from 'vs/editor/common/core/token';
import { Handler } from 'vs/editor/common/editorCommon';
......@@ -28,6 +29,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils';
import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerService';
import { ISuggestMemoryService } from 'vs/editor/contrib/suggest/suggestMemory';
import { ITextModel } from 'vs/editor/common/model';
export interface Ctor<T> {
new(): T;
......@@ -149,6 +151,11 @@ suite('SuggestModel - Context', function () {
suite('SuggestModel - TriggerAndCancelOracle', function () {
function getDefaultSuggestRange(model: ITextModel, position: Position) {
const wordUntil = model.getWordUntilPosition(position);
return new Range(position.lineNumber, wordUntil.startColumn, position.lineNumber, wordUntil.endColumn);
}
const alwaysEmptySupport: CompletionItemProvider = {
provideCompletionItems(doc, pos): CompletionList {
return {
......@@ -165,7 +172,8 @@ suite('SuggestModel - TriggerAndCancelOracle', function () {
suggestions: [{
label: doc.getWordUntilPosition(pos).word,
kind: CompletionItemKind.Property,
insertText: 'foofoo'
insertText: 'foofoo',
range: getDefaultSuggestRange(doc, pos)
}]
};
}
......@@ -301,7 +309,8 @@ suite('SuggestModel - TriggerAndCancelOracle', function () {
suggestions: [{
label: 'My Table',
kind: CompletionItemKind.Property,
insertText: 'My Table'
insertText: 'My Table',
range: getDefaultSuggestRange(doc, pos)
}]
};
}
......@@ -718,7 +727,13 @@ suite('SuggestModel - TriggerAndCancelOracle', function () {
provideCompletionItems(doc, pos) {
return {
incomplete: true,
suggestions: [{ kind: CompletionItemKind.Folder, label: 'CompleteNot', insertText: 'Incomplete', sortText: 'a', overwriteBefore: pos.column - 1 }],
suggestions: [{
kind: CompletionItemKind.Folder,
label: 'CompleteNot',
insertText: 'Incomplete',
sortText: 'a',
range: getDefaultSuggestRange(doc, pos)
}],
dispose() { disposeA += 1; }
};
}
......@@ -727,7 +742,13 @@ suite('SuggestModel - TriggerAndCancelOracle', function () {
provideCompletionItems(doc, pos) {
return {
incomplete: false,
suggestions: [{ kind: CompletionItemKind.Folder, label: 'Complete', insertText: 'Complete', sortText: 'z', overwriteBefore: pos.column - 1 }],
suggestions: [{
kind: CompletionItemKind.Folder,
label: 'Complete',
insertText: 'Complete',
sortText: 'z',
range: getDefaultSuggestRange(doc, pos)
}],
dispose() { disposeB += 1; }
};
},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册