public static Task<IFunctionInfo> GetFunctionInfoAsync(IFunctionIndex functionIndex, string functionName) { var tcs = new TaskCompletionSource<IFunctionInfo>(); var result = functionIndex.GetFunctionInfo(functionName, null, (o, p) => { var r = functionIndex.GetFunctionInfo(functionName, p); tcs.TrySetResult(r); }); if (result != null) { tcs.TrySetResult(result); } return tcs.Task; }
public static Task <IFunctionInfo> GetFunctionInfoAsync(IFunctionIndex functionIndex, string functionName) { var tcs = new TaskCompletionSource <IFunctionInfo>(); var result = functionIndex.GetFunctionInfo(functionName, o => { var r = functionIndex.GetFunctionInfo(functionName); tcs.TrySetResult(r); }); if (result != null) { tcs.TrySetResult(result); } return(tcs.Task); }
public static async Task <IFunctionInfo> GetFunctionInfoAsync(this IFunctionIndex functionIndex, string functionName, string packageName = null) { var fi = functionIndex.GetFunctionInfo(functionName, packageName); if (fi != null) { return(fi); } packageName = await functionIndex.GetPackageNameAsync(functionName); if (!string.IsNullOrEmpty(packageName)) { return(functionIndex.GetFunctionInfo(functionName, packageName)); } return(null); }
public static void GetFunctionInfoAsync(this IFunctionIndex functionIndex, string functionName, string packageName, Action <IFunctionInfo, object> callback, object parameter = null) { var fi = functionIndex.GetFunctionInfo(functionName, packageName); if (fi != null) { callback(fi, parameter); } else { GetFunctionInfoFromPackageAsync(functionIndex, functionName, packageName, callback, parameter).DoNotWait(); } }
private static async Task GetFunctionInfoFromPackageAsync(IFunctionIndex functionIndex, string functionName, string packageName, Action <IFunctionInfo, object> callback, object parameter) { IFunctionInfo fi = null; packageName = packageName ?? await functionIndex.GetPackageNameAsync(functionName); if (!string.IsNullOrEmpty(packageName)) { fi = functionIndex.GetFunctionInfo(functionName, packageName); } await functionIndex.Services.MainThread().SwitchToAsync(); callback(fi, parameter); }
/// <summary> /// Extracts information on the current function in the completion context, if any. /// </summary> /// <returns></returns> private IFunctionInfo GetFunctionInfo(IRIntellisenseContext context) { // Retrieve parameter positions from the current text buffer snapshot IFunctionInfo functionInfo = null; var parametersInfo = context.AstRoot.GetSignatureInfoFromBuffer(context.EditorBuffer.CurrentSnapshot, context.Position); if (parametersInfo != null) { // User-declared functions take priority functionInfo = context.AstRoot.GetUserFunctionInfo(parametersInfo.FunctionName, context.Position) ?? _functionIndex.GetFunctionInfo(parametersInfo.FunctionName, null); } return(functionInfo); }
/// <summary> /// Extracts information on the current function in the completion context, if any. /// </summary> /// <returns></returns> private IFunctionInfo GetFunctionInfo(RCompletionContext context) { // Retrieve parameter positions from the current text buffer snapshot IFunctionInfo functionInfo = null; ParameterInfo parametersInfo = SignatureHelp.GetParametersInfoFromBuffer(context.AstRoot, context.TextBuffer.CurrentSnapshot, context.Position); if (parametersInfo != null) { // User-declared functions take priority functionInfo = context.AstRoot.GetUserFunctionInfo(parametersInfo.FunctionName, context.Position); if (functionInfo == null) { // Get collection of function signatures from documentation (parsed RD file) functionInfo = _functionIndex.GetFunctionInfo(parametersInfo.FunctionName, null, (o, p) => { }, context.Session.TextView); } } return(functionInfo); }