Files
azuredatastudio/src/vs/editor/contrib/parameterHints/provideSignatureHelp.ts
2019-03-15 13:09:45 -07:00

35 lines
1.7 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { first } from 'vs/base/common/async';
import { onUnexpectedExternalError } from 'vs/base/common/errors';
import { registerDefaultLanguageCommand } from 'vs/editor/browser/editorExtensions';
import { Position } from 'vs/editor/common/core/position';
import { ITextModel } from 'vs/editor/common/model';
import * as modes from 'vs/editor/common/modes';
import { RawContextKey } from 'vs/platform/contextkey/common/contextkey';
import { CancellationToken } from 'vs/base/common/cancellation';
export const Context = {
Visible: new RawContextKey<boolean>('parameterHintsVisible', false),
MultipleSignatures: new RawContextKey<boolean>('parameterHintsMultipleSignatures', false),
};
export function provideSignatureHelp(model: ITextModel, position: Position, context: modes.SignatureHelpContext, token: CancellationToken): Promise<modes.SignatureHelp | null | undefined> {
const supports = modes.SignatureHelpProviderRegistry.ordered(model);
return first(supports.map(support => () => {
return Promise.resolve(support.provideSignatureHelp(model, position, token, context)).catch(onUnexpectedExternalError);
}));
}
registerDefaultLanguageCommand('_executeSignatureHelpProvider', (model, position, args) =>
provideSignatureHelp(model, position, {
triggerKind: modes.SignatureHelpTriggerKind.Invoke,
isRetrigger: false,
triggerCharacter: args['triggerCharacter']
}, CancellationToken.None));