public virtual void CodeCompletion(string Text, Point Position, CodeCompletionArgs e) { }
public override void CodeCompletion(string Text, Point Position, CodeCompletionArgs e) { string text2; if (((e.CompletionType == CodeCompletionType.ListMembers) || (e.CompletionType == CodeCompletionType.CompleteWord)) || ((e.CompletionType == CodeCompletionType.None) && (e.KeyChar == '.'))) { string text1; int num1; if (this.GetNameAndTypeFromCode(Text, Position.X, out text1, out text2, out num1)) { object obj1 = base.UnitInfo.GetObjectClass((text1 == string.Empty) ? base.UnitInfo.SelfName : text1, Position); bool flag1 = false; if ((obj1 == null) && (text1 != string.Empty)) { obj1 = base.UnitInfo.GetClassByName(text1); flag1 = true; } IListMembers members1 = null; if (obj1 != null) { members1 = new ListMembers(); if (obj1 is IInterfaceInfo) { this.AddCodeMembers(members1, (IInterfaceInfo)obj1, flag1); } else if (obj1 is Type) { this.AddCodeMembers(members1, (Type)obj1, flag1); } } if (text1 == string.Empty) { ArrayList list1 = new ArrayList(); base.UnitInfo.Sections.GetRanges(list1, Position); for (int num2 = list1.Count - 1; num2 >= 0; num2--) { if (list1[num2] is IHasParams) { if (members1 == null) { members1 = new ListMembers(); } this.AddCodeMembers(((IHasParams)list1[num2]).Params, members1); } if (list1[num2] is IHasLocalVars) { if (members1 == null) { members1 = new ListMembers(); } this.AddCodeMembers(((IHasLocalVars)list1[num2]).LocalVars, members1); } } } e.Provider = members1; } if (e.Provider != null) { e.Provider.ShowDescriptions = true; e.StartPosition = new Point(num1, Position.Y); int num3 = 0; if (this.FindCodeText(text2, e.Provider, out num3) && (e.CompletionType == CodeCompletionType.CompleteWord)) { e.SelIndex = num3; } e.Provider.SelIndex = Math.Max(num3, 0); e.Provider.Images = base.UnitInfo.Images; } } else { int num4; int num5; if (((e.CompletionType == CodeCompletionType.ParameterInfo) || ((e.CompletionType == CodeCompletionType.None) && (e.KeyChar == '('))) && this.GetMethodNameFromCode(Text, Position.X, out text2, out num5, out num4)) { ArrayList list2 = new ArrayList(); base.UnitInfo.GetMethods(text2, Position, list2); if (list2.Count > 0) { IParameterInfo info1 = new River.Orqa.Editor.Syntax.ParameterInfo(); info1.ShowParams = true; info1.ShowQualifiers = false; foreach (object obj2 in list2) { IListMember member1 = info1.AddMember(); if (obj2 is IMethodInfo) { IMethodInfo info2 = (IMethodInfo)obj2; member1.Qualifier = base.UnitInfo.GetMethodQualifier(info2); member1.Name = info2.Name; member1.DataType = info2.DataType; member1.ParamText = base.UnitInfo.GetParamText(info2.Params); continue; } if (obj2 is System.Reflection.MethodInfo) { System.Reflection.MethodInfo info3 = (System.Reflection.MethodInfo)obj2; member1.Qualifier = base.UnitInfo.GetMethodQualifier(info3); member1.DataType = (info3.ReturnType != null) ? info3.ReturnType.Name : string.Empty; member1.Name = info3.Name; member1.ParamText = base.UnitInfo.GetParamText(info3.GetParameters()); } } e.Provider = info1; } e.StartPosition = new Point(num5, Position.Y); e.EndPosition = new Point(num4, Position.Y); e.ToolTip = true; } } e.NeedShow = (e.Provider != null) && (e.Provider.Count > 0); if (e.CompletionType == CodeCompletionType.None) { e.Interval = Consts.DefaultHintDelay; } }