コード例 #1
0
 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);
 }
コード例 #2
0
 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"));
 }
コード例 #3
0
 public void Remove(EditorRemoveMessage msg)
 {
 }
コード例 #4
0
ファイル: VimEditor.cs プロジェクト: acken/EditorEngine
        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);
            }
        }
コード例 #5
0
 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));
 }
コード例 #6
0
 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);
 }