public void Remove(EditorRemoveMessage message) { var tempFile = Path.GetTempFileName(); using (var reader = new StreamReader(message.Start.File)) { using (var writer = new StreamWriter(tempFile)) { long lineNr = 0; string line; var singleLineDelete = message.Start.Line == message.End.Line; while ((line = reader.ReadLine()) != null) { lineNr++; if (lineNr != 1 && (singleLineDelete || lineNr < message.Start.Line || lineNr > message.End.Line)) writer.Write(Environment.NewLine); if (lineNr >= message.Start.Line && lineNr <= message.End.Line) { int column = 0; foreach (char chr in line) { column++; var delete = true; if (lineNr == message.Start.Line && lineNr == message.End.Line) delete = column > message.Start.Column && column <= message.End.Column; else if (lineNr == message.Start.Line) delete = column > message.Start.Column; else if (lineNr == message.End.Line) delete = column <= message.End.Column; if (!delete) writer.Write(chr); } } else writer.Write(line); } } } File.Delete(message.Start.File); File.Move(tempFile, message.Start.File); }
public void When_asked_to_delete_code_in_multiple_line_it_will_delete_it() { var message = new EditorRemoveMessage( new GoTo() { File = _file, Line = 1, Column = 10 }, new GoTo() { Line = 2, Column = 21 }); _writer.Remove(message); Assert.That( File.ReadAllText(_file), Is.EqualTo( "some text odified" + Environment.NewLine + "by these lovelly commands")); }
public void Remove(EditorRemoveMessage msg) { }
public void Remove(EditorRemoveMessage message) { Logger.Write("Removing chunk for " + message.Start.File); if (message.Start.Line > message.End.Line) return; GoTo(new Location( message.Start.File, message.Start.Line, message.Start.Column)); var location = getLocation(); if (location == null) return; if (message.Start.Line == message.End.Line) { if (message.Start.Column >= message.End.Column) return; send("{0}:remove/0 {1} {2}", location.Buffer.ID, location.Offset, message.End.Column - message.Start.Column); return; } var content = runFunction("{0}:getText", location.Buffer.ID); if (content == null) return; var newline = "\\n"; if (Environment.OSVersion.Platform != PlatformID.Unix && Environment.OSVersion.Platform != PlatformID.MacOSX) newline = "\\r\\n"; var lines = content.Split(new[] { newline }, StringSplitOptions.None); for (int line = message.End.Line; line >= message.Start.Line; line--) { var column = 1; if (line == message.Start.Line) column = message.Start.Column; var length = lines[line - 1].Length - column + newline.Length; if (line == message.End.Line) length = message.End.Column - 1; GoTo(new Location( message.Start.File, line, column)); location = getLocation(); if (location == null) return; send("{0}:remove/0 {1} {2}", location.Buffer.ID, location.Offset, length); } }
public void Remove(EditorRemoveMessage msg) { // Remove text from file Publisher.Run( string.Format( "test-editor remove \"{0}|{1}|{2}\" \"{3}|{4}\"", msg.Start.File, msg.Start.Line, msg.Start.Column, msg.End.Line, msg.End.Column)); }
public void Remove(EditorRemoveMessage msg) { var message = string.Format( "remove \"{0}\" {1} {2} {3} {4}", msg.Start.File, msg.Start.Line, msg.Start.Column, msg.End.Line, msg.End.Column); send(message); }