Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        /// <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");
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        /// <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;
        }