Beispiel #1
0
        public List <IAutoCompleteItem> getList(string partialName, int pos)
        {
            List <IAutoCompleteItem> rst = new List <IAutoCompleteItem>();

            foreach (Variable var in Variables.Values)
            {
                if (var.Name.StartsWith(partialName, true, null))
                {
                    rst.Add(var);
                }
            }

            foreach (Function func in GlobalFunctions.Values)
            {
                if (func.Name.StartsWith(partialName, true, null))
                {
                    rst.Add(func);
                }
            }

            if (m_parent != null)
            {
                List <IAutoCompleteItem> pr = m_parent.getList(partialName, pos);
                foreach (IAutoCompleteItem item in pr)
                {
                    rst.Add(item);
                }
            }

            foreach (AutoCompleteData ac in Requires)
            {
                var rrst = ac.Variables.getList(partialName, pos);
                foreach (IAutoCompleteItem t in rrst)
                {
                    if (t.isPrivate())
                    {
                        continue;
                    }
                    rst.Add(t);
                }
            }

            if (pos != -1 && m_scope != null)
            {
                Scope s = m_scope.getScope(pos);
                while (s != null)
                {
                    for (int i = s.Variables.Count - 1; i >= 0; i--)
                    {
                        Variable var = s.Variables[i];
                        if (var.StartPos < pos && var.Name.StartsWith(partialName, true, null))
                        {
                            if (!rst.Contains(var))
                            {
                                rst.Add(var);
                            }
                        }
                    }
                    for (int i = s.Functions.Count - 1; i >= 0; i--)
                    {
                        Function var = s.Functions[i];
                        if (var.StartPos < pos && var.Name.StartsWith(partialName, true, null))
                        {
                            if (!rst.Contains(var))
                            {
                                rst.Add(var);
                            }
                        }
                    }

                    s = s.Parent;
                }
            }


            rst.Sort();
            rst = rst.Distinct().ToList();
            return(rst);
        }