public void AugmentSignatureHelpSession(ISignatureHelpSession session, IList <ISignature> signatures) { try { XSharpProjectPackage.Instance.DisplayOutPutMessage("XSharpSignatureHelpSource.AugmentSignatureHelpSession()"); XSharpModel.ModelWalker.Suspend(); ITextSnapshot snapshot = m_textBuffer.CurrentSnapshot; int position = session.GetTriggerPoint(m_textBuffer).GetPosition(snapshot); int start = (int)session.Properties["Start"]; int length = (int)session.Properties["Length"]; var comma = (bool)session.Properties["Comma"]; m_applicableToSpan = m_textBuffer.CurrentSnapshot.CreateTrackingSpan( new Span(start, length), SpanTrackingMode.EdgeInclusive, 0); object elt = session.Properties["Element"]; m_session = session; if (elt is XSharpModel.XElement) { XSharpModel.XElement element = elt as XSharpModel.XElement; signatures.Add(CreateSignature(m_textBuffer, element.Prototype, "", ApplicableToSpan, comma)); // if (elt is XSharpModel.XTypeMember) { XSharpModel.XTypeMember xMember = elt as XSharpModel.XTypeMember; List <XSharpModel.XTypeMember> namesake = xMember.Namesake(); foreach (var member in namesake) { signatures.Add(CreateSignature(m_textBuffer, member.Prototype, "", ApplicableToSpan, comma)); } // } // why not ? int paramCount = int.MaxValue; foreach (ISignature sig in signatures) { if (sig.Parameters.Count < paramCount) { paramCount = sig.Parameters.Count; } } // m_textBuffer.Changed += new EventHandler <TextContentChangedEventArgs>(OnSubjectBufferChanged); } else if (elt is System.Reflection.MemberInfo) { System.Reflection.MemberInfo element = elt as System.Reflection.MemberInfo; XSharpLanguage.MemberAnalysis analysis = new XSharpLanguage.MemberAnalysis(element); if (analysis.IsInitialized) { signatures.Add(CreateSignature(m_textBuffer, analysis.Prototype, "", ApplicableToSpan, comma)); // Any other member with the same name in the current Type and in the Parent(s) ? SystemNameSake(element.DeclaringType, signatures, element.Name, analysis.Prototype, comma); // m_textBuffer.Changed += new EventHandler <TextContentChangedEventArgs>(OnSubjectBufferChanged); } } session.Dismissed += OnSignatureHelpSessionDismiss; } catch (Exception ex) { XSharpProjectPackage.Instance.DisplayOutPutMessage("XSharpSignatureHelpSource.AugmentSignatureHelpSession Exception failed "); XSharpProjectPackage.Instance.DisplayException(ex); } finally { XSharpModel.ModelWalker.Resume(); } }