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); } }