|
|
|
@ -13,6 +13,8 @@ using System.Windows.Controls;
@@ -13,6 +13,8 @@ using System.Windows.Controls;
|
|
|
|
|
using System.Windows.Data; |
|
|
|
|
using System.Windows.Input; |
|
|
|
|
using System.Windows.Threading; |
|
|
|
|
|
|
|
|
|
using ICSharpCode.AvalonEdit.AddIn.MyersDiff; |
|
|
|
|
using ICSharpCode.AvalonEdit.AddIn.Options; |
|
|
|
|
using ICSharpCode.AvalonEdit.Document; |
|
|
|
|
using ICSharpCode.AvalonEdit.Editing; |
|
|
|
@ -296,12 +298,12 @@ namespace ICSharpCode.AvalonEdit.AddIn
@@ -296,12 +298,12 @@ namespace ICSharpCode.AvalonEdit.AddIn
|
|
|
|
|
{ |
|
|
|
|
if (UseFixedEncoding) { |
|
|
|
|
using (StreamReader reader = new StreamReader(stream, primaryTextEditor.Encoding, detectEncodingFromByteOrderMarks: false)) { |
|
|
|
|
primaryTextEditor.Text = reader.ReadToEnd(); |
|
|
|
|
ReloadDocument(primaryTextEditor.Document, reader.ReadToEnd()); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
// do encoding auto-detection
|
|
|
|
|
using (StreamReader reader = FileReader.OpenStream(stream, this.Encoding ?? FileService.DefaultFileEncoding.GetEncoding())) { |
|
|
|
|
primaryTextEditor.Text = reader.ReadToEnd(); |
|
|
|
|
ReloadDocument(primaryTextEditor.Document, reader.ReadToEnd()); |
|
|
|
|
this.Encoding = reader.CurrentEncoding; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -311,6 +313,13 @@ namespace ICSharpCode.AvalonEdit.AddIn
@@ -311,6 +313,13 @@ namespace ICSharpCode.AvalonEdit.AddIn
|
|
|
|
|
NewLineConsistencyCheck.StartConsistencyCheck(this); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ReloadDocument(TextDocument document, string newContent) |
|
|
|
|
{ |
|
|
|
|
var diff = new MyersDiffAlgorithm(new StringSequence(document.Text), new StringSequence(newContent)); |
|
|
|
|
document.Replace(0, document.TextLength, newContent, diff.GetEdits().ToOffsetChangeMap()); |
|
|
|
|
document.UndoStack.ClearAll(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public event EventHandler LoadedFileContent; |
|
|
|
|
|
|
|
|
|
public void Save(Stream stream) |
|
|
|
|