예제 #1
0
        void BuildCompletionData(PackageSymbol mpr)
        {
            foreach (var kv in mpr.Package.Packages)
            {
                CompletionDataGenerator.AddPackage(kv.Value.Name);
            }

            foreach (var kv in mpr.Package.Modules)
            {
                CompletionDataGenerator.AddModule(kv.Value);
            }
        }
        protected override void BuildCompletionDataInternal(IEditorData Editor, char enteredChar)
        {
            if (Editor.ParseCache == null)
            {
                return;
            }

            string pack = null;

            if (imp.ModuleIdentifier != null && imp.ModuleIdentifier.InnerDeclaration != null)
            {
                pack = imp.ModuleIdentifier.InnerDeclaration.ToString();

                // Will occur after an initial dot
                if (string.IsNullOrEmpty(pack))
                {
                    return;
                }
            }

            foreach (var p in Editor.ParseCache.LookupPackage(pack))
            {
                if (p == null)
                {
                    continue;
                }

                foreach (var kv_pack in p.Packages)
                {
                    CompletionDataGenerator.AddPackage(kv_pack.Value.Name);
                }

                foreach (var kv_mod in p.Modules)
                {
                    CompletionDataGenerator.AddModule(kv_mod.Value);
                }
            }
        }
예제 #3
0
        protected override void BuildCompletionDataInternal(IEditorData Editor, char enteredChar)
        {
            if (Editor.ParseCache == null)
            {
                return;
            }

            if (impBind != null)
            {
                DModule mod = null;

                var modName = imp.ModuleIdentifier.ToString(true);
                foreach (var pc in Editor.ParseCache)
                {
                    if ((mod = pc.GetModule(modName)) != null)
                    {
                        break;
                    }
                }

                if (mod == null)
                {
                    return;
                }

                var ctxt = ResolutionContext.Create(Editor);

                /*
                 * Show all members of the imported module
                 * + public imports
                 * + items of anonymous enums
                 */

                MemberCompletionEnumeration.EnumChildren(CompletionDataGenerator, ctxt, mod, true, MemberFilter.All);

                return;
            }


            string pack = null;

            if (imp.ModuleIdentifier != null && imp.ModuleIdentifier.InnerDeclaration != null)
            {
                pack = imp.ModuleIdentifier.InnerDeclaration.ToString();

                // Will occur after an initial dot
                if (string.IsNullOrEmpty(pack))
                {
                    return;
                }
            }

            foreach (var p in Editor.ParseCache.LookupPackage(pack))
            {
                if (p == null)
                {
                    continue;
                }

                foreach (var kv_pack in p.Packages)
                {
                    CompletionDataGenerator.AddPackage(kv_pack.Value.Name);
                }

                foreach (var kv_mod in p.Modules)
                {
                    CompletionDataGenerator.AddModule(kv_mod.Value);
                }
            }
        }