internal void GoWordRight(bool shift) { Range range = this.Clone();//for OnSelectionChanged disable Place prev; bool findIdentifier = IsIdentifierChar(range.CharAfterStart); do { prev = range.Start; if (IsIdentifierChar(range.CharAfterStart) ^ findIdentifier) { break; } //move right range.GoRight(shift); } while (prev != range.Start); this.Start = range.Start; this.End = range.End; if (tb.lineInfos[Start.iLine].VisibleState != VisibleState.Visible) { GoLeft(shift); } }
public void GoWordRight(bool shift) { ColumnSelectionMode = false; if (!shift && start < end) { Start = End; return; } Range range = this.Clone();//for OnSelectionChanged disable Place prev; bool findIdentifier = IsIdentifierChar(range.CharAfterStart); do { prev = range.Start; if (IsIdentifierChar(range.CharAfterStart) ^ findIdentifier) { break; } //move right range.GoRight(shift); } while (prev != range.Start); this.Start = range.Start; this.End = range.End; if (tb.lineInfos[Start.iLine].VisibleState != VisibleState.Visible) { GoLeft(shift); } }
/// <summary> /// Returns range of token /// </summary> public Range GetTokenRange(Token t) { var loc = t.Location; var place = new Place(loc.Column, loc.Line); var r = new Range(this, place, place); foreach (var c in t.Text) { if (c != '\r') { r.GoRight(true); } } return(r); }
internal void GoWordRight(bool shift) { Range range = this.Clone();//for OnSelectionChanged disable Place prev; bool wasNonSpace = false; bool wasSpace = false; do { prev = range.Start; switch (range.CharAfterStart) { case '\r': case '\n': wasSpace = true; wasNonSpace = true; break; case ' ': if (wasNonSpace) { wasSpace = true; } break; default: if (wasSpace && wasNonSpace) { goto found; } wasNonSpace = true; break; } //move right range.GoRight(shift); } while (prev != range.Start); found: this.Start = range.Start; this.End = range.End; if (tb.lines[Start.iLine].VisibleState != VisibleState.Visible) { GoLeft(shift); } }