Я пытаюсь проанализировать изменения (которые я получил ранее с сервера) от фактического исходного текста до существующего в открытом документе. Но я думаю, что мне не хватает чего-то, чтобы позиционировать курсор, потому что он обрезает части кода, и только первая строка работает, как я. Код (комментарий в предложении if предназначен для имитации того, что файл поступает с сервера)
DTE dte = Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(DTE)) as DTE;
var textDocument = dte.ActiveDocument.Object() as TextDocument;
var cursorPosition = textDocument.Selection.ActivePoint.AbsoluteCharOffset;
var editPoint = textDocument.StartPoint.CreateEditPoint();
var documentSourceText = CSharpSyntaxTree.ParseText(editPoint.GetText(textDocument.EndPoint)).GetRoot().GetText();
var fileSourceText = SourceText.From(ToString());
int i = 0;
while(i < documentSourceText.Lines.Count)
{
if (i < fileSourceText.Lines.Count) //&& !line.ToString().Equals(fileSourceText.Lines[i].ToString())
{
if(i == 0)
editPoint.MoveToAbsoluteOffset(documentSourceText.Lines[i].Start + 1);
else
{
editPoint.MoveToAbsoluteOffset(documentSourceText.Lines[i].Start);
}
editPoint.Delete(documentSourceText.Lines[i].End);
editPoint.Insert(fileSourceText.Lines[i].ToString());
}
else if (i >= fileSourceText.Lines.Count)
{
editPoint.MoveToAbsoluteOffset(documentSourceText.Lines[i].Start + 1);
editPoint.Delete(documentSourceText.Lines[i].EndIncludingLineBreak);
}
i++;
}
dte.ActiveDocument.Save();
textDocument.Selection.MoveToAbsoluteOffset(cursorPosition >= textDocument.EndPoint.AbsoluteCharOffset ? textDocument.EndPoint.AbsoluteCharOffset : cursorPosition );
Ввод выглядит примерно так:
using System;
namespace ConsoleApp13
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Вывод выглядит следующим образом:
using System;
olnamespace ConsoleApp13d {ne class Progra static void Main(string[] a Console.WriteLine("Hello Wor }
Может ли кто-нибудь помочь мне наглядно и хорошо сравнить 2 исходных файла и вставить их в документ dte?
Заранее спасибо!