public static DParameterDataProvider Create(Document doc, IAbstractSyntaxTree SyntaxTree, CodeCompletionContext ctx) { var caretLocation = new CodeLocation(ctx.TriggerLineOffset, ctx.TriggerLine); try { var edData = DResolverWrapper.GetEditorData(doc); edData.CaretLocation = caretLocation; edData.CaretOffset = ctx.TriggerOffset; var argsResult = ParameterInsightResolution.ResolveArgumentContext(edData); if (argsResult == null || argsResult.ResolvedTypesOrMethods == null || argsResult.ResolvedTypesOrMethods.Length < 1) { return(null); } return(new DParameterDataProvider(doc, argsResult) { startoffset = ctx.TriggerOffset }); } catch { return(null); } }
/// <summary> /// Inserts import statement into correct place /// </summary> static void ApplySolution(string import, Document doc) { var eData = DResolverWrapper.GetEditorData(doc); var loc = new CodeLocation(0, DParser.FindLastImportStatementEndLocation(eData.SyntaxTree, eData.ModuleCode).Line + 1); doc.Editor.Insert(doc.Editor.GetLine(loc.Line).Offset, import.Trim() + doc.Editor.EolMarker); //IOInterface.InsertIntoCode(loc, "import " + mod.ModuleName + ";\n"); }
public static void CreateImportStatementForCurrentCodeContext() { var doc = IdeApp.Workbench.ActiveDocument; var edData = DResolverWrapper.GetEditorData(doc); try { ImportGen_CustImplementation.CreateImportDirectiveForHighlightedSymbol(edData, new ImportGen_CustImplementation(doc)); } catch (Exception ex) { MessageService.ShowError(IdeApp.Workbench.RootWindow, "Error during import directive creation", ex.Message); } }
/// <summary> /// Returns possible imports for current context /// </summary> IEnumerable <string> GetSolutions(Document doc) { //i had to copy-paste some code from other files ResolutionContext ctxt; var rr = Resolver.DResolverWrapper.ResolveHoveredCode(out ctxt); if (rr != null && rr.Length > 0) { var res = rr[rr.Length - 1]; var n = DResolver.GetResultMember(res); if (n != null) { //seems like this can filter function calls yield break; } } INode[] nodes; bool req; var edData = DResolverWrapper.GetEditorData(doc); try { nodes = ImportDirectiveCreator.TryFindingSelectedIdImportIndependently(edData, out req); } catch { yield break; } if (!req || nodes == null) { yield break; } foreach (var node in nodes) { var mod = node.NodeRoot as IAbstractSyntaxTree; if (mod != null && mod != edData.SyntaxTree) { yield return(mod.ModuleName); } } yield break; }