mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-25 11:08:51 +01:00
Align IParameterHintsSupport with the ext host api
This commit is contained in:
@@ -306,7 +306,7 @@ class ExtHostApiCommands {
|
||||
position: position && typeConverters.fromPosition(position),
|
||||
triggerCharacter
|
||||
};
|
||||
return this._commands.executeCommand<modes.IParameterHints>('_executeSignatureHelpProvider', args).then(value => {
|
||||
return this._commands.executeCommand<modes.SignatureHelp>('_executeSignatureHelpProvider', args).then(value => {
|
||||
if (value) {
|
||||
return typeConverters.SignatureHelp.to(value);
|
||||
}
|
||||
|
||||
@@ -586,7 +586,7 @@ class SuggestAdapter implements modes.ISuggestSupport {
|
||||
}
|
||||
}
|
||||
|
||||
class ParameterHintsAdapter implements modes.IParameterHintsSupport {
|
||||
class ParameterHintsAdapter {
|
||||
|
||||
private _documents: ExtHostModelService;
|
||||
private _provider: vscode.SignatureHelpProvider;
|
||||
@@ -596,7 +596,7 @@ class ParameterHintsAdapter implements modes.IParameterHintsSupport {
|
||||
this._provider = provider;
|
||||
}
|
||||
|
||||
getParameterHints(resource: URI, position: IPosition, triggerCharacter?: string): TPromise<modes.IParameterHints> {
|
||||
provideSignatureHelp(resource: URI, position: IPosition): TPromise<modes.SignatureHelp> {
|
||||
|
||||
const doc = this._documents.getDocumentData(resource).document;
|
||||
const pos = TypeConverters.toPosition(position);
|
||||
@@ -607,10 +607,6 @@ class ParameterHintsAdapter implements modes.IParameterHintsSupport {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getParameterHintsTriggerCharacters(): string[] {
|
||||
throw new Error('illegal state');
|
||||
}
|
||||
}
|
||||
|
||||
type Adapter = OutlineAdapter | CodeLensAdapter | DeclarationAdapter | ExtraInfoAdapter
|
||||
@@ -841,8 +837,8 @@ export class ExtHostLanguageFeatures {
|
||||
return this._createDisposable(handle);
|
||||
}
|
||||
|
||||
$getParameterHints(handle: number, resource: URI, position: IPosition, triggerCharacter?: string): TPromise<modes.IParameterHints> {
|
||||
return this._withAdapter(handle, ParameterHintsAdapter, adapter => adapter.getParameterHints(resource, position, triggerCharacter));
|
||||
$provideSignatureHelp(handle: number, resource: URI, position: IPosition): TPromise<modes.SignatureHelp> {
|
||||
return this._withAdapter(handle, ParameterHintsAdapter, adapter => adapter.provideSignatureHelp(resource, position));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1032,12 +1028,13 @@ export class MainThreadLanguageFeatures {
|
||||
|
||||
$registerParameterHintsSupport(handle: number, selector: vscode.DocumentSelector, triggerCharacter: string[]): TPromise<any> {
|
||||
this._registrations[handle] = modes.ParameterHintsRegistry.register(selector, <modes.IParameterHintsSupport>{
|
||||
getParameterHints: (resource: URI, position: IPosition, triggerCharacter?: string): TPromise<modes.IParameterHints> => {
|
||||
return this._proxy.$getParameterHints(handle, resource, position, triggerCharacter);
|
||||
},
|
||||
getParameterHintsTriggerCharacters(): string[] {
|
||||
return triggerCharacter;
|
||||
|
||||
parameterHintsTriggerCharacters: triggerCharacter,
|
||||
|
||||
provideSignatureHelp: (model:IModel, position:IEditorPosition, cancellationToken:CancellationToken): Thenable<modes.SignatureHelp> => {
|
||||
return wireCancellationToken(cancellationToken, this._proxy.$provideSignatureHelp(handle, model.getAssociatedResource(), position));
|
||||
}
|
||||
|
||||
});
|
||||
return undefined;
|
||||
}
|
||||
|
||||
@@ -426,68 +426,12 @@ export const Suggest = {
|
||||
|
||||
export namespace SignatureHelp {
|
||||
|
||||
export function from(signatureHelp: types.SignatureHelp): modes.IParameterHints {
|
||||
|
||||
let result: modes.IParameterHints = {
|
||||
currentSignature: signatureHelp.activeSignature,
|
||||
currentParameter: signatureHelp.activeParameter,
|
||||
signatures: []
|
||||
};
|
||||
|
||||
for (let signature of signatureHelp.signatures) {
|
||||
|
||||
let signatureItem: modes.ISignature = {
|
||||
label: signature.label,
|
||||
documentation: signature.documentation,
|
||||
parameters: []
|
||||
};
|
||||
|
||||
let idx = 0;
|
||||
for (let parameter of signature.parameters) {
|
||||
|
||||
let parameterItem: modes.IParameter = {
|
||||
label: parameter.label,
|
||||
documentation: parameter.documentation,
|
||||
};
|
||||
|
||||
signatureItem.parameters.push(parameterItem);
|
||||
idx = signature.label.indexOf(parameter.label, idx);
|
||||
|
||||
if (idx >= 0) {
|
||||
parameterItem.signatureLabelOffset = idx;
|
||||
idx += parameter.label.length;
|
||||
parameterItem.signatureLabelEnd = idx;
|
||||
} else {
|
||||
parameterItem.signatureLabelOffset = 0;
|
||||
parameterItem.signatureLabelEnd = 0;
|
||||
}
|
||||
}
|
||||
|
||||
result.signatures.push(signatureItem);
|
||||
}
|
||||
|
||||
return result;
|
||||
export function from(signatureHelp: types.SignatureHelp): modes.SignatureHelp {
|
||||
return signatureHelp;
|
||||
}
|
||||
|
||||
export function to(hints: modes.IParameterHints): types.SignatureHelp {
|
||||
|
||||
const result = new types.SignatureHelp();
|
||||
result.activeSignature = hints.currentSignature;
|
||||
result.activeParameter = hints.currentParameter;
|
||||
|
||||
for (let signature of hints.signatures) {
|
||||
|
||||
const signatureItem = new types.SignatureInformation(signature.label, signature.documentation);
|
||||
result.signatures.push(signatureItem);
|
||||
|
||||
for (let parameter of signature.parameters) {
|
||||
|
||||
const parameterItem = new types.ParameterInformation(parameter.label, parameter.documentation);
|
||||
signatureItem.parameters.push(parameterItem);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
export function to(hints: modes.SignatureHelp): types.SignatureHelp {
|
||||
return hints;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user