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)); }