public ReplaceTextCommand(TextSource ts, List<Range> ranges, string insertedText) : base(ts) { //sort ranges by place ranges.Sort((r1, r2)=> { if (r1.Start.iLine == r2.Start.iLine) return r1.Start.iChar.CompareTo(r2.Start.iChar); return r1.Start.iLine.CompareTo(r2.Start.iLine); }); // this.ranges = ranges; this.insertedText = insertedText; lastSel = sel = new RangeInfo(ts.CurrentTB.Selection); }