예제 #1
0
        protected IEnumerable <MemberResult> GetModules(string[] package, bool modulesOnly = true)
        {
            var analysis = GetAnalysisEntry();

            if (analysis == null)
            {
                return(Enumerable.Empty <MemberResult>());
            }

            IPythonReplIntellisense pyReplEval = null;
            IReplEvaluator          eval;

            if (TextBuffer.Properties.TryGetProperty <IReplEvaluator>(typeof(IReplEvaluator), out eval))
            {
                pyReplEval = eval as IPythonReplIntellisense;
            }
            IEnumerable <KeyValuePair <string, bool> > replScopes = null;

            if (pyReplEval != null)
            {
                replScopes = pyReplEval.GetAvailableScopesAndKind();
            }

            if (package == null)
            {
                package = new string[0];
            }

            var modules = Enumerable.Empty <MemberResult>();

            if (analysis != null && (pyReplEval == null || !pyReplEval.LiveCompletionsOnly))
            {
                modules = modules.Concat(package.Length > 0 ?
                                         analysis.GetModuleMembers(package, !modulesOnly) :
                                         analysis.GetModules(true).Distinct(CompletionComparer.MemberEquality)
                                         );
            }
            if (replScopes != null)
            {
                modules = GetModulesFromReplScope(replScopes, package)
                          .Concat(modules)
                          .Distinct(CompletionComparer.MemberEquality);
            }

            return(modules);
        }