private void InitDescription(XSourceEntity member) //, _VSOBJDESCOPTIONS flags, IVsObjectBrowserDescription3 description) { description = new List <Tuple <string, VSOBDESCRIPTIONSECTION> >(); string descText; if (member != null) { string modifier = ""; string access = ""; if ((member is XSourceTypeSymbol) && (member.Kind != Kind.Namespace)) { modifier = member.Modifiers.ToDisplayString(); access = member.Visibility.ToDisplayString(); } else if ((member is XSourceMemberSymbol) && ((member.Kind != Kind.Function) && (member.Kind != Kind.Procedure))) { modifier = member.Modifiers.ToDisplayString(); access = member.Visibility.ToDisplayString(); } // if (!string.IsNullOrEmpty(modifier)) { description.Add(Item(modifier + " ", VSOBDESCRIPTIONSECTION.OBDS_ATTRIBUTE)); } // if (!string.IsNullOrEmpty(access)) { description.Add(Item(access + " ", VSOBDESCRIPTIONSECTION.OBDS_ATTRIBUTE)); } // if (member.Kind != Kind.Field) { VSOBDESCRIPTIONSECTION descName = VSOBDESCRIPTIONSECTION.OBDS_MISC; descText = XSettings.FormatKeyword(member.Kind.DisplayName()) + " "; if (member.Kind == Kind.Constructor) { descName = VSOBDESCRIPTIONSECTION.OBDS_NAME; } description.Add(Item(descText, descName)); } if (member.Kind != Kind.Constructor) { descText = member.Name; description.Add(Item(descText, VSOBDESCRIPTIONSECTION.OBDS_NAME)); } // Parameters ? if (member.Kind.HasParameters()) { descText = "("; description.Add(Item(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC)); XSourceMemberSymbol realmember; XSourceTypeSymbol type = member as XSourceTypeSymbol; if (member.Kind == Kind.Delegate && type?.XMembers.Count > 0) { realmember = type.XMembers[0]; } else { realmember = member as XSourceMemberSymbol; } if (realmember != null && realmember.HasParameters) { // int paramNum = 1; foreach (IXParameterSymbol param in realmember.Parameters) { descText = param.Name; description.Add(Item(descText, VSOBDESCRIPTIONSECTION.OBDS_PARAM)); descText = param.ParamTypeDesc; description.Add(Item(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC)); descText = param.TypeName; // description.Add(Item(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE)); // Need a comma ? if (paramNum < realmember.ParameterCount) { paramNum++; descText = ","; description.Add(Item(descText, VSOBDESCRIPTIONSECTION.OBDS_COMMA)); } } } descText = ")"; description.Add(Item(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC)); } if (member.Kind.HasReturnType()) { descText = XLiterals.AsKeyWord; description.Add(Item(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC)); descText = member.TypeName; description.Add(Item(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE)); } description.Add(Item(null, VSOBDESCRIPTIONSECTION.OBDS_ENDDECL)); } // if (member.File?.Project != null) { string summary = null, returns = null, remarks = null; List <string> pNames = new List <string>(); List <string> pDescriptions = new List <string>(); if (member is XSourceMemberSymbol symbol1) { summary = XSharpXMLDocMember.GetMemberSummary(symbol1, member.File?.Project, out returns, out remarks); XSharpXMLDocMember.GetMemberParameters(symbol1, member.File?.Project, pNames, pDescriptions); } else if (member is XSourceTypeSymbol symbol) { summary = XSharpXMLDocMember.GetTypeSummary(symbol, member.File?.Project, out returns, out remarks); } if (!string.IsNullOrEmpty(summary)) { description.Add(Item(NEWLINE, VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(Item(SUMMARY, VSOBDESCRIPTIONSECTION.OBDS_NAME)); description.Add(Item(summary, VSOBDESCRIPTIONSECTION.OBDS_MISC)); } if (pNames.Count > 0) { description.Add(Item(NEWLINE, VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(Item(PARAMETERS, VSOBDESCRIPTIONSECTION.OBDS_NAME)); for (int i = 0; i < pNames.Count; i++) { description.Add(Item(NEWLINE + pNames[i], VSOBDESCRIPTIONSECTION.OBDS_PARAM)); description.Add(Item(" : ", VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(Item(pDescriptions[i], VSOBDESCRIPTIONSECTION.OBDS_MISC)); } } if (!string.IsNullOrEmpty(returns)) { description.Add(Item(NEWLINE, VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(Item(RETURNS, VSOBDESCRIPTIONSECTION.OBDS_NAME)); description.Add(Item(returns, VSOBDESCRIPTIONSECTION.OBDS_MISC)); } if (!string.IsNullOrEmpty(remarks)) { description.Add(Item(NEWLINE, VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(Item(REMARKS, VSOBDESCRIPTIONSECTION.OBDS_NAME)); description.Add(Item(remarks, VSOBDESCRIPTIONSECTION.OBDS_MISC)); } } }
private Tuple <string, VSOBDESCRIPTIONSECTION> Item(string item1, VSOBDESCRIPTIONSECTION item2) { return(new Tuple <string, VSOBDESCRIPTIONSECTION>(item1, item2)); }
private void initDescription(XEntityDefinition member) //, _VSOBJDESCOPTIONS flags, IVsObjectBrowserDescription3 description) { description = new List <Tuple <string, VSOBDESCRIPTIONSECTION> >(); // string descText = this.Name; // string namesp = ""; string className = ""; if (member != null) { if (member.Parent != null) { if (member.Parent is IXType) { namesp = ((IXType)member.Parent).Namespace; className = ((IXType)member.Parent).Name; } } // string modifier = ""; string access = ""; if ((member is XTypeDefinition) && (member.Kind != Kind.Namespace)) { modifier = member.Modifiers.ToDisplayString(); access = member.Visibility.ToDisplayString(); } else if ((member is XMemberDefinition) && ((member.Kind != Kind.Function) && (member.Kind != Kind.Procedure))) { modifier = member.Modifiers.ToDisplayString(); access = member.Visibility.ToDisplayString(); } // if (!String.IsNullOrEmpty(modifier)) { description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(modifier + " ", VSOBDESCRIPTIONSECTION.OBDS_ATTRIBUTE)); } // if (!String.IsNullOrEmpty(access)) { description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(access + " ", VSOBDESCRIPTIONSECTION.OBDS_ATTRIBUTE)); //description.AddDescriptionText3(access, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); } // if (member.Kind != Kind.Field) { VSOBDESCRIPTIONSECTION descName = VSOBDESCRIPTIONSECTION.OBDS_MISC; descText = XSettings.FormatKeyword(member.Kind.DisplayName()) + " "; if (member.Kind == Kind.Constructor) { descName = VSOBDESCRIPTIONSECTION.OBDS_NAME; } description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, descName)); //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); } if (member.Kind != Kind.Constructor) { descText = member.Name; description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_NAME)); } //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_NAME, null); // Parameters ? if (member.Kind.HasParameters()) { descText = "("; description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC)); //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); XMemberDefinition realmember; XTypeDefinition type = member as XTypeDefinition; if (member.Kind == Kind.Delegate && type?.XMembers.Count > 0) { realmember = type.XMembers[0]; } else { realmember = member as XMemberDefinition; } if (realmember != null && realmember.HasParameters) { // int paramNum = 1; foreach (XVariable param in realmember.Parameters) { descText = param.Name; description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_PARAM)); descText = param.ParamTypeDesc; description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC)); //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_PARAM, null); descText = param.TypeName; // IVsNavInfo navInfo = buildNavInfo(member.File, param.TypeName); // description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE)); //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE, navInfo); // Need a comma ? if (paramNum < realmember.ParameterCount) { paramNum++; descText = ","; description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_COMMA)); //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_COMMA, null); } } } descText = ")"; description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC)); //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); } if (member.Kind.HasReturnType()) { descText = XLiterals.AsKeyWord; description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC)); //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); descText = member.TypeName; description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE)); //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE, null); } // //if (!((member.Kind == Kind.Function) || (member.Kind == Kind.Procedure) || (member.Kind == Kind.VODLL)) && // ((member.Parent is XTypeDefinition) && (member.Parent.Kind == Kind.Class))) //{ // descText = " CLASS "; // description.Add(new Tuple<string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC)); // //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); // descText = className; // description.Add(new Tuple<string, VSOBDESCRIPTIONSECTION>(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE)); // //description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE, null); //} // description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(null, VSOBDESCRIPTIONSECTION.OBDS_ENDDECL)); //description.AddDescriptionText3(null, VSOBDESCRIPTIONSECTION.OBDS_ENDDECL, null); } // if (member.File?.Project != null) { string summary = null, returns = null, remarks = null; List <string> pNames = new List <string>(); List <string> pDescriptions = new List <string>(); if (member is XMemberDefinition) { summary = XSharpXMLDocMember.GetMemberSummary((XMemberDefinition)member, member.File?.Project, out returns, out remarks); XSharpXMLDocMember.GetMemberParameters((XMemberDefinition)member, member.File?.Project, pNames, pDescriptions); } else if (member is XTypeDefinition) { summary = XSharpXMLDocMember.GetTypeSummary((XTypeDefinition)member, member.File?.Project, out returns, out remarks); } if (!String.IsNullOrEmpty(summary)) { description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>("\n", VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>("\nSummary:\n", VSOBDESCRIPTIONSECTION.OBDS_NAME)); description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(summary, VSOBDESCRIPTIONSECTION.OBDS_MISC)); } if (pNames.Count > 0) { description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>("\n", VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>("\nParameters:", VSOBDESCRIPTIONSECTION.OBDS_NAME)); for (int i = 0; i < pNames.Count; i++) { description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>("\n" + pNames[i], VSOBDESCRIPTIONSECTION.OBDS_PARAM)); description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(" : ", VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(pDescriptions[i], VSOBDESCRIPTIONSECTION.OBDS_MISC)); } } if (!String.IsNullOrEmpty(returns)) { description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>("\n", VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>("\nReturn:\n", VSOBDESCRIPTIONSECTION.OBDS_NAME)); description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(returns, VSOBDESCRIPTIONSECTION.OBDS_MISC)); } if (!String.IsNullOrEmpty(remarks)) { description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>("\n", VSOBDESCRIPTIONSECTION.OBDS_MISC)); description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>("\nRemarks:\n", VSOBDESCRIPTIONSECTION.OBDS_NAME)); description.Add(new Tuple <string, VSOBDESCRIPTIONSECTION>(remarks, VSOBDESCRIPTIONSECTION.OBDS_MISC)); } } }
public int AddDescriptionText3(string pText, VSOBDESCRIPTIONSECTION obdSect, IVsNavInfo pHyperJump) { sb.Append(pText); return(VSConstants.S_OK); } // func AddDescriptionText3
public int AddDescriptionText3(string pText, VSOBDESCRIPTIONSECTION obdSect, IVsNavInfo pHyperJump) { Debug.Print("{0}: {1}", obdSect, pText); return(VSConstants.S_OK); }