public Word GetEndBracketWord(Word Start, Pattern End, Span FindIn) { if (Start == null || Start.Pattern == null || Start.Span == null) return null; int CurrentRow = Start.Row.Index; int LastRow = Count - 1; if (FindIn.EndRow != null) LastRow = FindIn.EndRow.Index; int x = Start.Index; int count = 0; while (CurrentRow <= LastRow) { for (int i = x; i < this[CurrentRow].Count; i++) { Word w = this[CurrentRow][i]; if (w.Span == FindIn && w.Type == WordType.Word) { if (w.Pattern == Start.Pattern) count++; if (w.Pattern == End) count--; if (count == 0) return w; } } if (!Start.Pattern.IsMultiLineBracket) break; CurrentRow++; x = 0; } return null; }
public void AutoIndentSegment(Span span) { if (span == null) span = this[0].startSpan; Row start = span.StartRow; Row end = span.EndRow; if (start == null) start = this[0]; if (end == null) end = this[Count - 1]; for (int i = start.Index; i <= end.Index; i++) { Row r = this[i]; int depth = r.Indent; string text = r.Text.Substring(r.GetLeadingWhitespace().Length); var indent = new string('\t', depth); r.Text = indent + text; } ResetVisibleRows(); }
public Word GetStartBracketWord(Word Start, Pattern End, Span FindIn) { if (Start == null || Start.Pattern == null || Start.Span == null) return null; int CurrentRow = Start.Row.Index; int FirstRow = FindIn.StartRow.Index; int x = Start.Index; int count = 0; while (CurrentRow >= FirstRow) { for (int i = x; i >= 0; i--) { Word w = this[CurrentRow][i]; if (w.Span == FindIn && w.Type == WordType.Word) { if (w.Pattern == Start.Pattern) count++; if (w.Pattern == End) count--; if (count == 0) return w; } } if (!Start.Pattern.IsMultiLineBracket) break; CurrentRow--; if (CurrentRow >= 0) x = this[CurrentRow].Count - 1; } return null; }
public void SetExpansionSegment() { expansion_StartSpan = null; expansion_EndSpan = null; foreach (Span s in startSpans) { if (!endSpans.Contains(s)) { expansion_StartSpan = s; break; } } foreach (Span s in endSpans) { if (!startSpans.Contains(s)) { expansion_EndSpan = s; break; } } if (expansion_EndSpan != null) expansion_StartSpan = null; }