Exemplo n.º 1
0
        static string GetMemberText(IAmbience ambience, IEntity member)
        {
            StringBuilder text = new StringBuilder();

            if (member is IField)
            {
                text.Append(ambience.Convert(member as IField));
            }
            else if (member is IProperty)
            {
                text.Append(ambience.Convert(member as IProperty));
            }
            else if (member is IEvent)
            {
                text.Append(ambience.Convert(member as IEvent));
            }
            else if (member is IMethod)
            {
                text.Append(ambience.Convert(member as IMethod));
            }
            else if (member is IClass)
            {
                text.Append(ambience.Convert(member as IClass));
            }
            else
            {
                text.Append("unknown member ");
                text.Append(member.ToString());
            }
            string documentation = member.Documentation;

            if (documentation != null && documentation.Length > 0)
            {
                text.Append('\n');
                text.Append(CodeCompletionData.XmlDocumentationToText(documentation));
            }
            return(text.ToString());
        }
Exemplo n.º 2
0
        void AddCompletionData(List <ICompletionData> resultList, ArrayList completionData)
        {
            //   var currentCodeCompleteText = "";
            //   var lenght = textEditor.currentOffset() - startOffset;
            //   if (lenght >0)
            //       currentCodeCompleteText = textEditor.get_Text(startOffset,lenght);
            //   "{0}:{1}  = {2}".format(startOffset,lenght , currentCodeCompleteText).debug();

            // used to store the method names for grouping overloads
            Dictionary <string, CodeCompletionData> nameDictionary = new Dictionary <string, CodeCompletionData>();

            // Add the completion data as returned by SharpDevelop.Dom to the
            // list for the text editor
            foreach (object obj in completionData)
            {
                if (obj is string)
                {
                    // namespace names are returned as string
                    resultList.Add(new DefaultCompletionData((string)obj, "namespace " + obj, 5));
                }
                else if (obj is IClass)
                {
                    IClass c = (IClass)obj;
                    resultList.Add(new CodeCompletionData(c, this));
                }
                else if (obj is IMember)
                {
                    IMember m = (IMember)obj;
                    if (m is IMethod && ((m as IMethod).IsConstructor))
                    {
                        // Skip constructors
                        continue;
                    }
                    // if OnlyShowCodeCompleteResulstFromO2Namespace filter for only O2.* namepace
                    if (OnlyShowCodeCompleteResulstFromO2Namespace && m.DeclaringType.Namespace.starts("O2") == false)
                    {
                        continue;
                    }

                    // NOT WORKING only show items that match currentCodeCompleteText regex
                    //        if (currentCodeCompleteText != "" && m.DotNetName.nregEx(currentCodeCompleteText))
                    //            continue;
                    //if
                    // Group results by name and add "(x Overloads)" to the
                    // description if there are multiple results with the same name.
                    CodeCompletionData data;
                    if (nameDictionary.TryGetValue(m.Name, out data))
                    {
                        data.AddOverload();
                    }
                    else
                    {
                        nameDictionary[m.Name] = data = new CodeCompletionData(m, this);
                        resultList.Add(data);
                    }
                }
                else
                {
                    // Current ICSharpCode.SharpDevelop.Dom should never return anything else
                    throw new NotSupportedException();
                }
            }
        }