提交 2f34618b 编写于 作者: M Matt Bierner

Adding completion item kind enum

上级 b34379e8
......@@ -247,11 +247,19 @@ export interface ISuggestResult {
dispose?(): void;
}
/**
* How a suggest provider was triggered.
*/
export enum SuggestTriggerKind {
Invoke = 0,
TriggerCharacter = 1
}
/**
* @internal
*/
export interface SuggestContext {
trigger: 'auto' | 'manual';
triggerKind: SuggestTriggerKind;
triggerCharacter?: string;
}
......
......@@ -12,7 +12,7 @@ import { onUnexpectedExternalError } from 'vs/base/common/errors';
import { TPromise } from 'vs/base/common/winjs.base';
import { IModel, IEditorContribution, ICommonCodeEditor } from 'vs/editor/common/editorCommon';
import { CommonEditorRegistry } from 'vs/editor/common/editorCommonExtensions';
import { ISuggestResult, ISuggestSupport, ISuggestion, SuggestRegistry, SuggestContext } from 'vs/editor/common/modes';
import { ISuggestResult, ISuggestSupport, ISuggestion, SuggestRegistry, SuggestContext, SuggestTriggerKind } from 'vs/editor/common/modes';
import { Position, IPosition } from 'vs/editor/common/core/position';
import { RawContextKey } from 'vs/platform/contextkey/common/contextkey';
......@@ -57,7 +57,7 @@ export function provideSuggestionItems(model: IModel, position: Position, snippe
supports.unshift([_snippetSuggestSupport]);
}
const suggestConext = context || { trigger: 'auto' };
const suggestConext = context || { triggerKind: SuggestTriggerKind.Invoke };
// add suggestions from contributed providers - providers are ordered in groups of
// equal score and once a group produces a result the process stops
......
......@@ -11,7 +11,7 @@ import Event, { Emitter } from 'vs/base/common/event';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { TPromise } from 'vs/base/common/winjs.base';
import { ICommonCodeEditor, IModel, IWordAtPosition } from 'vs/editor/common/editorCommon';
import { ISuggestSupport, SuggestRegistry, StandardTokenType } from 'vs/editor/common/modes';
import { ISuggestSupport, SuggestRegistry, StandardTokenType, SuggestTriggerKind } from 'vs/editor/common/modes';
import { Position } from 'vs/editor/common/core/position';
import { provideSuggestionItems, getSuggestionComparator, ISuggestionItem } from './suggest';
import { CompletionModel } from './completionModel';
......@@ -358,7 +358,7 @@ export class SuggestModel implements IDisposable {
onlyFrom,
{
triggerCharacter: context.triggerCharacter,
trigger: context.auto ? 'auto' : 'manual'
triggerKind: context.triggerCharacter ? SuggestTriggerKind.TriggerCharacter : SuggestTriggerKind.Invoke
}
).then(items => {
......
......@@ -11,7 +11,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { TPromise } from 'vs/base/common/winjs.base';
import { Model } from 'vs/editor/common/model/model';
import { ICommonCodeEditor, Handler } from 'vs/editor/common/editorCommon';
import { ISuggestSupport, ISuggestResult, SuggestRegistry } from 'vs/editor/common/modes';
import { ISuggestSupport, ISuggestResult, SuggestRegistry, SuggestTriggerKind } from 'vs/editor/common/modes';
import { SuggestModel, LineContext } from 'vs/editor/contrib/suggest/browser/suggestModel';
import { MockCodeEditor, MockScopeLocation } from 'vs/editor/test/common/mocks/mockCodeEditor';
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
......@@ -458,12 +458,12 @@ suite('SuggestModel - TriggerAndCancelOracle', function () {
});
});
test('Trigger characters is provided in suggest context', function () {
test('Trigger character is provided in suggest context', function () {
let triggerCharacter = '';
disposables.push(SuggestRegistry.register({ scheme: 'test' }, {
triggerCharacters: ['.'],
provideCompletionItems(doc, pos, context) {
assert.equal(context.trigger, 'auto');
assert.equal(context.triggerKind, SuggestTriggerKind.TriggerCharacter);
triggerCharacter = context.triggerCharacter;
return <ISuggestResult>{
currentWord: '',
......
......@@ -546,7 +546,7 @@ export interface CompletionContext {
/**
* How the completion was triggered.
*/
readonly trigger: 'auto' | 'manual';
triggerKind: modes.SuggestTriggerKind;
/**
* Character that triggered the completion item provider.
......@@ -610,6 +610,7 @@ function convertKind(kind: CompletionItemKind): modes.SuggestionType {
}
return 'property';
}
class SuggestAdapter {
private _provider: CompletionItemProvider;
......@@ -758,6 +759,7 @@ export function createMonacoLanguagesAPI(): typeof monaco.languages {
DocumentHighlightKind: modes.DocumentHighlightKind,
CompletionItemKind: CompletionItemKind,
SymbolKind: modes.SymbolKind,
IndentAction: IndentAction
IndentAction: IndentAction,
SuggestTriggerKind: modes.SuggestTriggerKind
};
}
......@@ -4237,7 +4237,7 @@ declare module monaco.languages {
/**
* How the completion was triggered.
*/
readonly trigger: 'auto' | 'manual';
triggerKind: SuggestTriggerKind;
/**
* Character that triggered the completion item provider.
*
......@@ -4513,6 +4513,14 @@ declare module monaco.languages {
provideHover(model: editor.IReadOnlyModel, position: Position, token: CancellationToken): Hover | Thenable<Hover>;
}
/**
* How a suggest provider was triggered.
*/
export enum SuggestTriggerKind {
Invoke = 0,
TriggerCharacter = 1,
}
/**
* Represents a parameter of a callable-signature. A parameter can
* have a label and a doc-comment.
......
......@@ -2718,6 +2718,20 @@ declare module 'vscode' {
constructor(items?: CompletionItem[], isIncomplete?: boolean);
}
/**
* How a [completion provider](#CompletionItemProvider) was triggered
*/
export enum CompletionTriggerKind {
/**
* Completion was triggered normally.
*/
Invoke = 0,
/**
* Completion was triggered by a trigger character.
*/
TriggerCharacter = 1
}
/**
* Contains additional information about the context in which
* [completion provider](#CompletionItemProvider.provideCompletionItems) is triggered.
......@@ -2726,7 +2740,7 @@ declare module 'vscode' {
/**
* How the completion was triggered.
*/
readonly trigger: 'auto' | 'manual';
readonly triggerKind: CompletionTriggerKind;
/**
* Character that triggered the completion item provider.
......
......@@ -563,6 +563,7 @@ export function createApiFactory(
CompletionItem: extHostTypes.CompletionItem,
CompletionItemKind: extHostTypes.CompletionItemKind,
CompletionList: extHostTypes.CompletionList,
CompletionTriggerKind: extHostTypes.CompletionTriggerKind,
Diagnostic: extHostTypes.Diagnostic,
DiagnosticSeverity: extHostTypes.DiagnosticSeverity,
Disposable: extHostTypes.Disposable,
......
......@@ -492,7 +492,7 @@ class SuggestAdapter {
const pos = TypeConverters.toPosition(position);
return asWinJsPromise<vscode.CompletionItem[] | vscode.CompletionList>(token => {
return this._provider.provideCompletionItems(doc, pos, token, context);
return this._provider.provideCompletionItems(doc, pos, token, TypeConverters.CompletionContext.from(context));
}).then(value => {
const _id = this._idPool++;
......
......@@ -307,6 +307,28 @@ export function toDocumentHighlight(occurrence: modes.DocumentHighlight): types.
return new types.DocumentHighlight(toRange(occurrence.range), occurrence.kind);
}
export namespace CompletionTriggerKind {
export function from(kind: modes.SuggestTriggerKind) {
switch (kind) {
case modes.SuggestTriggerKind.TriggerCharacter:
return types.CompletionTriggerKind.TriggerCharacter;
case modes.SuggestTriggerKind.Invoke:
default:
return types.CompletionTriggerKind.Invoke;
}
}
}
export namespace CompletionContext {
export function from(context: modes.SuggestContext): types.CompletionContext {
return {
triggerKind: CompletionTriggerKind.from(context.triggerKind),
triggerCharacter: context.triggerCharacter
};
}
}
export const CompletionItemKind = {
from(kind: types.CompletionItemKind): modes.SuggestionType {
......
......@@ -879,6 +879,16 @@ export class SignatureHelp {
}
}
export enum CompletionTriggerKind {
Invoke = 0,
TriggerCharacter = 1
}
export interface CompletionContext {
triggerKind: CompletionTriggerKind;
triggerCharacter: string;
}
export enum CompletionItemKind {
Text = 0,
Method = 1,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册