diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs index f70545988b..2a90d12253 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs @@ -85,6 +85,7 @@ namespace MonoDevelop.Ide.FindInFiles public TextReader Reader; public List<SearchResult> Results; public string Text { get; internal set; } + public System.Text.Encoding Encoding { get; internal set; } public FileSearchResult (FileProvider provider, TextReader reader, List<SearchResult> results) { @@ -172,6 +173,7 @@ namespace MonoDevelop.Ide.FindInFiles Interlocked.Increment (ref searchedFilesCount); if (replacePattern != null) { content.Text = content.Reader.ReadToEnd (); + content.Encoding = content.Provider.CurrentEncoding; content.Reader = new StringReader (content.Text); } content.Results.AddRange(FindAll (monitor, content.Provider, content.Reader, pattern, replacePattern, filter)); @@ -193,7 +195,7 @@ namespace MonoDevelop.Ide.FindInFiles if (content.Results.Count == 0) continue; try { - content.Provider.BeginReplace (content.Text); + content.Provider.BeginReplace (content.Text, content.Encoding); Replace (content.Provider, content.Results, replacePattern); content.Provider.EndReplace (); } catch (Exception e) { @@ -248,7 +250,7 @@ namespace MonoDevelop.Ide.FindInFiles continue; matches.Add(match); } - provider.BeginReplace (content); + provider.BeginReplace (content, provider.CurrentEncoding); int delta = 0; for (int i = 0; !monitor.CancellationToken.IsCancellationRequested && i < matches.Count; i++) { Match match = matches[i]; |