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

Adding completion item kind enum

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