diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index acadd67682..d38b693158 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -678,7 +678,7 @@
-
+
diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs b/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
index 9ed721623b..b5d57b6efc 100644
--- a/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
+++ b/src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
@@ -275,11 +275,10 @@ namespace ICSharpCode.SharpDevelop
Parallel.ForEach(
fileContents,
fileName => {
- ParseableFileContentEntry entry = finder.Create(fileName);
// Don't read files we don't have a parser for.
// This avoids loading huge files (e.g. sdps) when we have no intention of parsing them.
if (ParserService.GetParser(fileName) != null) {
- ITextBuffer content = entry.GetContent();
+ ITextBuffer content = finder.Create(fileName);
if (content != null)
ParserService.ParseFile(this, fileName, content);
}
diff --git a/src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentEnumerator.cs b/src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentFinder.cs
similarity index 54%
rename from src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentEnumerator.cs
rename to src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentFinder.cs
index 512aad608f..f79c4118de 100644
--- a/src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentEnumerator.cs
+++ b/src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentFinder.cs
@@ -14,38 +14,8 @@ using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.SharpDevelop.Project
{
- public class ParseableFileContentEntry
- {
- public FileName FileName { get; private set; }
- ITextBuffer openContent;
-
- public ITextBuffer GetContent()
- {
- if (openContent != null)
- return openContent;
- try {
- return new StringTextBuffer(ICSharpCode.AvalonEdit.Utils.FileReader.ReadFileContent(FileName, ParserService.DefaultFileEncoding));
- } catch (IOException) {
- return null;
- } catch (UnauthorizedAccessException) {
- return null;
- }
- }
-
- internal ParseableFileContentEntry(FileName fileName, FileName[] viewContentFileNamesCollection)
- {
- this.FileName = fileName;
- foreach (FileName name in viewContentFileNamesCollection) {
- if (FileUtility.IsEqualFileName(name, this.FileName)) {
- openContent = WorkbenchSingleton.SafeThreadFunction(ParserService.GetParseableFileContent, this.FileName.ToString());
- break;
- }
- }
- }
- }
-
///
- /// Can be used to create ParseableFileContentEntry for ProjectItems.
+ /// Can be used to create ITextBuffer for ProjectItems.
/// This class is thread-safe.
///
public class ParseableFileContentFinder
@@ -55,9 +25,19 @@ namespace ICSharpCode.SharpDevelop.Project
///
/// Retrieves the file contents for the specified project items.
///
- public ParseableFileContentEntry Create(FileName fileName)
+ public ITextBuffer Create(FileName fileName)
{
- return new ParseableFileContentEntry(fileName, viewContentFileNamesCollection);
+ foreach (FileName name in viewContentFileNamesCollection) {
+ if (FileUtility.IsEqualFileName(name, fileName))
+ return WorkbenchSingleton.SafeThreadFunction(ParserService.GetParseableFileContent, fileName.ToString());
+ }
+ try {
+ return new StringTextBuffer(ICSharpCode.AvalonEdit.Utils.FileReader.ReadFileContent(fileName, ParserService.DefaultFileEncoding));
+ } catch (IOException) {
+ return null;
+ } catch (UnauthorizedAccessException) {
+ return null;
+ }
}
}
}
diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
index 458d72269e..14cf199c59 100644
--- a/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
+++ b/src/Main/Base/Project/Src/Services/RefactoringService/RefactoringService.cs
@@ -249,7 +249,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring
progressMonitor.TaskName = StringParser.Parse("${res:SharpDevelop.Refactoring.FindingReferences}");
foreach (ProjectItem item in files) {
- var entry = finder.Create(FileName.Create(item.FileName));
+ FileName itemFileName = FileName.Create(item.FileName);
if (progressMonitor != null) {
progressMonitor.Progress += 1.0 / files.Count;
@@ -257,9 +257,9 @@ namespace ICSharpCode.SharpDevelop.Refactoring
return null;
}
- ITextBuffer content = entry.GetContent();
+ ITextBuffer content = finder.Create(itemFileName);
if (content != null) {
- AddReferences(references, ownerClass, member, entry.FileName, content.Text);
+ AddReferences(references, ownerClass, member, itemFileName, content.Text);
}
}