/// <summary> /// Поиск точки в текущем документе в позиции курсора /// Документ должен быть открыт. /// </summary> /// <param name="dte"></param> /// <param name="Wrapper"></param> /// <param name="Manager"></param> /// <returns></returns> public static List <PointOfInterest> FindPointUnderCursor(IDEInterop ide, TreeManager treeManager) { string SourceText = ide.GetCurrentTextDocument(); PointOfInterest root = treeManager.GetTree(ide.GetCurrentDocumentFileName(), SourceText); LexLocation loc = ide.GetCursorPosition(); string Text = ide.GetLine(loc.StartLine); List <PointOfInterest> Points = TreeSearchEngine.FindPointByLocation(root, loc.StartLine, loc.StartColumn); if (Points == null || Points.Count == 0) { return(null); } List <PointOfInterest> Result = new List <PointOfInterest>(); foreach (PointOfInterest pt in Points) { PointOfInterest p2 = pt.ClonePointAssignItems(); p2.ApplyInnerContext(); p2.Items = new List <PointOfInterest>(); Result.Add(p2); TreeSearchEngine.SetNearLG(root, pt, SourceText, out p2.NearL, out p2.NearG); } int len = loc.StartLine == loc.EndLine ? loc.EndColumn - loc.StartColumn : Text.Length - loc.StartColumn; Result[0].Title = GetCurrentWord(Text, loc.StartColumn, len); return(Result); }
private PointOfInterest FindPointInCurrentPosition(PointOfInterest ParsedPoints) { int line = tbEditor.GetLineFromCharIndex(tbEditor.SelectionStart) + 1; int col = tbEditor.SelectionStart - tbEditor.GetFirstCharIndexFromLine(line - 1); try { return(TreeSearchEngine.FindPointByLocation(ParsedPoints, line, col)[0]); } catch (Exception) {} return(null); }
public PointOfInterest FindPointByLocation(string Text, string FileName, int Line, int Column) { PointOfInterest point; try { point = treeManager.GetTree(FileName, Text); } catch (Exception e) { throw new Exception(Strings.CannotParseFile + " " + FileName); } List <PointOfInterest> RList = TreeSearchEngine.FindPointByLocation(point, Line, Column); PointOfInterest Res = null; if (RList != null && RList.Count != 0) { Res = RList[0].ClonePointWithoutItems(); Res.Text = ide.GetLine(Line); } return(Res); }