/// <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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }