private static void RecurseElements(CodeElements codeElements, List <Position> found, string name) { if (codeElements == null) { return; } foreach (var item in codeElements) { var element = item as CodeElement; if (element == null) { continue; } if (element.Kind == vsCMElement.vsCMElementFunction || element.Kind == vsCMElement.vsCMElementProperty) { var mname = MethodNameReader.GetMethodStringFromElement(element); var fullname = element.FullName; found.Add(new Position(mname, fullname, name, element.StartPoint.Line)); } if (element.Children != null) { RecurseElements(element.Children, found, name); } } }
private void analyzeElement(CodeElement elem) { _project = elem.ProjectItem.ContainingProject.FullName; if (elem.Kind == vsCMElement.vsCMElementNamespace) { _namespace = new[] { elem.FullName } } ; if (elem.Kind == vsCMElement.vsCMElementClass) { var cls = MethodNameReader.GetMethodStringFromElement(elem); _member = new[] { cls.Replace("/", "+") }; } if (elem.Kind == vsCMElement.vsCMElementFunction) { var test = MethodNameReader.GetMethodStringFromElement(elem); test = test .Replace("::", ".") .Replace("/", "+"); var parenthesis = test.IndexOf("("); if (parenthesis != -1) { test = test.Substring(0, parenthesis); } var space = test.IndexOf(" "); if (space != -1) { test = test.Substring(space + 1, test.Length - (space + 1)); } _test = new[] { test }; } }
public string Get() { try { var sel = (TextSelection)_application.ActiveDocument.Selection; var point = (TextPoint)sel.ActivePoint; var fcm = _application.ActiveDocument.ProjectItem.FileCodeModel; var elem = fcm.CodeElementFromPoint(point, vsCMElement.vsCMElementFunction); return(MethodNameReader.GetMethodStringFromElement(elem)); } catch (Exception ex) { Logger.Write(ex); return(null); } }
private string getFromCodeModel() { try { var sel = (TextSelection)_application.ActiveDocument.Selection; var point = (TextPoint)sel.ActivePoint; var fcm = _application.ActiveDocument.ProjectItem.FileCodeModel; var elem = CodeElementFromPoint(fcm, point, vsCMElement.vsCMElementFunction); if (elem != null) { return(MethodNameReader.GetMethodStringFromElement(elem)); } var elem1 = CodeElementFromPoint(fcm, point, vsCMElement.vsCMElementProperty); if (elem1 != null) { var property = (CodeProperty)elem1; var setterContains = property.Setter != null && property.Setter.StartPoint != null && property.Setter.StartPoint.LessThan(point) && property.Setter.EndPoint.GreaterThan(point); if (setterContains) { return(MethodNameReader.GetMethodStringFromElement((CodeElement)property.Setter)); } return(MethodNameReader.GetMethodStringFromElement((CodeElement)property.Getter)); } var elem2 = CodeElementFromPoint(fcm, point, vsCMElement.vsCMElementVariable); if (elem2 != null) { return(MethodNameReader.GetMethodStringFromElement(elem2)); } return(null); } catch (Exception ex) { AutoTest.Core.DebugLog.Debug.WriteException(ex); return(null); } }