Exemplo n.º 1
0
        public static SyntaxTreeNode BuildTree(ITextBuffer textBuffer, IEnumerable <IMappingTagSpan <IStructureTag> > tags)
        {
            SyntaxTreeNode root = new SyntaxTreeNode(null, null);

            var depths = GetDepthList(textBuffer, tags);

            if (depths.Count != tags.Count())
            {
                throw new Exception("whoops");
            }

            SyntaxTreeNode activeNode = root;
            int            lastIndex  = -1;

            for (int i = 0; i < tags.Count(); i++)
            {
                SyntaxTreeNode parentNode = activeNode;
                int            N          = lastIndex - depths[i] + 1;
                lastIndex = depths[i];

                for (int j = 0; j < N; j++)
                {
                    parentNode = parentNode.GetParent();
                }

                SyntaxTreeNode node = new SyntaxTreeNode(parentNode, tags.ElementAt(i));
                activeNode = node;
            }

            return(root);
        }
        public void AltLeft()
        {
            SyntaxTreeNode node = ActiveNode.GetParent();

            if (node == null)
            {
                return;
            }

            ActiveNode = node;
            TextView.Caret.MoveTo(ActiveNode.GetHeaderPosition(TextBuffer));
        }