public static DParameterDataProvider Create(Document doc, IAbstractSyntaxTree SyntaxTree, CodeCompletionContext ctx) { var caretOffset = ctx.TriggerOffset; var caretLocation = new CodeLocation(ctx.TriggerLineOffset, ctx.TriggerLine); IStatement stmt = null; var curBlock = DResolver.SearchBlockAt(SyntaxTree, caretLocation, out stmt); if (curBlock == null) { return(null); } //doc.Edito if (!(curBlock is D_Parser.Dom.DMethod)) { return(null); } try { var argsResult = DResolver.ResolveArgumentContext( doc.Editor.Text, caretOffset, caretLocation, curBlock as D_Parser.Dom.DMethod, DCodeCompletionSupport.EnumAvailableModules(doc), null); if (argsResult == null || argsResult.ResolvedTypesOrMethods == null || argsResult.ResolvedTypesOrMethods.Length < 1) { return(null); } return(new DParameterDataProvider(doc, argsResult)); } catch { return(null); } }