Browse Source

Fixed SD2-595: Replace in files must use same Encoding detection as text editor

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@878 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
2e2e17e634
  1. 7
      src/AddIns/Misc/NAntAddIn/Test/ProcessRunnerNotStartedTestFixture.cs
  2. 7
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DocumentFactory.cs
  3. 6
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextBufferStrategy/StringTextBufferStrategy.cs
  4. 1
      src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
  5. 11
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/ProvidedDocumentInformation.cs
  6. 1
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/Search.cs
  7. 33
      src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchReplaceManager.cs
  8. BIN
      src/Main/StartUp/Project/Resources/StringResources.resources

7
src/AddIns/Misc/NAntAddIn/Test/ProcessRunnerNotStartedTestFixture.cs

@ -46,10 +46,15 @@ namespace ICSharpCode.NAntAddIn.Tests
} }
[Test] [Test]
[ExpectedException(typeof(ProcessRunnerException), "No process running.")]
public void WaitForExit() public void WaitForExit()
{ {
try {
runner.WaitForExit(); runner.WaitForExit();
Assert.Fail("Expected ProcessRunnerException");
} catch (ProcessRunnerException ex) {
Assert.AreEqual(ICSharpCode.Core.StringParser.Parse("${res:ICSharpCode.NAntAddIn.ProcessRunner.NoProcessRunningErrorText}"),
ex.Message);
}
} }
} }
} }

7
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DocumentFactory.cs

@ -7,7 +7,7 @@
using System; using System;
using System.IO; using System.IO;
using System.Text;
namespace ICSharpCode.TextEditor.Document namespace ICSharpCode.TextEditor.Document
{ {
@ -41,9 +41,8 @@ namespace ICSharpCode.TextEditor.Document
public IDocument CreateFromFile(string fileName) public IDocument CreateFromFile(string fileName)
{ {
IDocument document = CreateDocument(); IDocument document = CreateDocument();
StreamReader stream = File.OpenText(fileName); Encoding encoding = Encoding.Default;
document.TextContent = stream.ReadToEnd(); document.TextContent = Util.FileReader.ReadFileContent(fileName, ref encoding, encoding);
stream.Close();
return document; return document;
} }
} }

6
src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/TextBufferStrategy/StringTextBufferStrategy.cs

@ -8,6 +8,7 @@
using System; using System;
using System.IO; using System.IO;
using System.Diagnostics; using System.Diagnostics;
using System.Text;
using ICSharpCode.TextEditor.Undo; using ICSharpCode.TextEditor.Undo;
namespace ICSharpCode.TextEditor.Document namespace ICSharpCode.TextEditor.Document
@ -75,9 +76,8 @@ namespace ICSharpCode.TextEditor.Document
StringTextBufferStrategy(string fileName) StringTextBufferStrategy(string fileName)
{ {
StreamReader streamReader = File.OpenText(fileName); Encoding encoding = Encoding.Default;
SetContent(streamReader.ReadToEnd()); SetContent(Util.FileReader.ReadFileContent(fileName, ref encoding, encoding));
streamReader.Close();
} }
public static ITextBufferStrategy CreateTextBufferFromFile(string fileName) public static ITextBufferStrategy CreateTextBufferFromFile(string fileName)

1
src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs

@ -229,6 +229,7 @@ namespace ICSharpCode.SharpDevelop.Gui
if (pendingAppendCalls >= 5) { if (pendingAppendCalls >= 5) {
return; return;
} }
pendingAppendCalls -= 1;
} }
if (messageCategories[SelectedCategoryIndex] != category) { if (messageCategories[SelectedCategoryIndex] != category) {
SelectCategory(category.Category, fullText); SelectCategory(category.Category, fullText);

11
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/DocumentIterator/ProvidedDocumentInformation.cs

@ -83,17 +83,6 @@ namespace SearchAndReplace
} }
} }
public void SaveBuffer()
{
if (document != null) {
} else {
StreamWriter streamWriter = File.CreateText(this.fileName);
streamWriter.Write(textBuffer.GetText(0, textBuffer.Length));
streamWriter.Close();
}
}
public IDocument CreateDocument() public IDocument CreateDocument()
{ {
if (document != null) { if (document != null) {

1
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/Search.cs

@ -79,7 +79,6 @@ namespace SearchAndReplace
{ {
if (CurrentDocumentInformation != null && TextIterator != null) { if (CurrentDocumentInformation != null && TextIterator != null) {
CurrentDocumentInformation.Replace(offset, length, pattern); CurrentDocumentInformation.Replace(offset, length, pattern);
CurrentDocumentInformation.SaveBuffer();
TextIterator.InformReplace(offset, length, pattern.Length); TextIterator.InformReplace(offset, length, pattern.Length);
} }
} }

33
src/Main/Base/Project/Src/TextEditor/SearchAndReplace/Engine/SearchReplaceManager.cs

@ -74,12 +74,15 @@ namespace SearchAndReplace
find.Reset(); find.Reset();
if (!find.SearchStrategy.CompilePattern()) if (!find.SearchStrategy.CompilePattern())
return; return;
while (true) { for (int count = 0;; count++) {
SearchResult result = SearchReplaceManager.find.FindNext(); SearchResult result = SearchReplaceManager.find.FindNext();
if (result == null) { if (result == null) {
if (count == 0) {
ShowNotFoundMessage();
} else {
MessageService.ShowMessage("${res:ICSharpCode.TextEditor.Document.SearchReplaceManager.MarkAllDone}", "${res:Global.FinishedCaptionText}"); MessageService.ShowMessage("${res:ICSharpCode.TextEditor.Document.SearchReplaceManager.MarkAllDone}", "${res:Global.FinishedCaptionText}");
}
find.Reset(); find.Reset();
return; return;
} else { } else {
@ -109,15 +112,19 @@ namespace SearchAndReplace
return; return;
List<TextEditorControl> textAreas = new List<TextEditorControl>(); List<TextEditorControl> textAreas = new List<TextEditorControl>();
while (true) { for (int count = 0;; count++) {
SearchResult result = SearchReplaceManager.find.FindNext(); SearchResult result = SearchReplaceManager.find.FindNext();
if (result == null) { if (result == null) {
if (count == 0) {
ShowNotFoundMessage();
} else {
foreach (TextEditorControl textArea in textAreas) { foreach (TextEditorControl textArea in textAreas) {
textArea.EndUpdate(); textArea.EndUpdate();
textArea.Refresh(); textArea.Refresh();
} }
MessageService.ShowMessage("${res:ICSharpCode.TextEditor.Document.SearchReplaceManager.ReplaceAllDone}", "${res:Global.FinishedCaptionText}"); MessageService.ShowMessage("${res:ICSharpCode.TextEditor.Document.SearchReplaceManager.ReplaceAllDone}", "${res:Global.FinishedCaptionText}");
}
find.Reset(); find.Reset();
return; return;
} else { } else {
@ -130,9 +137,8 @@ namespace SearchAndReplace
} }
string transformedPattern = result.TransformReplacePattern(SearchOptions.ReplacePattern); string transformedPattern = result.TransformReplacePattern(SearchOptions.ReplacePattern);
find.Replace(result.Offset, find.Replace(result.Offset, result.Length, transformedPattern);
result.Length, textArea.Document.Replace(result.Offset, result.Length, transformedPattern);
transformedPattern);
} }
} }
} }
@ -155,11 +161,7 @@ namespace SearchAndReplace
SearchResult result = find.FindNext(); SearchResult result = find.FindNext();
if (result == null) { if (result == null) {
MessageBox.Show((Form)WorkbenchSingleton.Workbench, ShowNotFoundMessage();
ResourceService.GetString("Dialog.NewProject.SearchReplace.SearchStringNotFound"),
"Not Found",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
find.Reset(); find.Reset();
} else { } else {
TextEditorControl textArea = OpenTextArea(result.FileName); TextEditorControl textArea = OpenTextArea(result.FileName);
@ -181,6 +183,15 @@ namespace SearchAndReplace
lastResult = result; lastResult = result;
} }
static void ShowNotFoundMessage()
{
MessageBox.Show((Form)WorkbenchSingleton.Workbench,
ResourceService.GetString("Dialog.NewProject.SearchReplace.SearchStringNotFound"),
ResourceService.GetString("Dialog.NewProject.SearchReplace.SearchStringNotFound.Title"),
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
static TextEditorControl OpenTextArea(string fileName) static TextEditorControl OpenTextArea(string fileName)
{ {
if (fileName != null) { if (fileName != null) {

BIN
src/Main/StartUp/Project/Resources/StringResources.resources

Binary file not shown.
Loading…
Cancel
Save