diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs index 0f435f013a..b8278cf429 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs @@ -167,7 +167,7 @@ namespace ICSharpCode.AvalonEdit.AddIn #region IEditable public ITextBuffer CreateSnapshot() { - return new ICSharpCode.SharpDevelop.Editor.AvalonEdit.AvalonEditTextSourceAdapter(codeEditor.Document.CreateSnapshot()); + return codeEditor.DocumentAdapter.CreateSnapshot(); } /// diff --git a/src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditDocumentAdapter.cs b/src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditDocumentAdapter.cs index 334d3045e7..03de7114c9 100644 --- a/src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditDocumentAdapter.cs +++ b/src/Main/Base/Project/Src/Editor/AvalonEdit/AvalonEditDocumentAdapter.cs @@ -163,9 +163,10 @@ namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit public System.IO.TextReader CreateReader() { - return CreateSnapshot().CreateReader(); + return document.CreateSnapshot().CreateReader(); } + #region Snapshots and ITextBufferVersion public ITextBuffer CreateSnapshot() { ChangeTrackingCheckpoint checkpoint; @@ -237,6 +238,7 @@ namespace ICSharpCode.SharpDevelop.Editor.AvalonEdit return checkpoint.GetChangesTo(otherVersion.checkpoint).Select(c => new TextChangeEventArgs(c.Offset, c.RemovedText, c.InsertedText)); } } + #endregion public void StartUndoableAction() { diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs index 6ceeb5c6bf..68d6eedc35 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs @@ -730,7 +730,7 @@ namespace ICSharpCode.SharpDevelop { // RaiseParseInformationUpdated is called inside a lock, but we don't want to raise the event inside that lock. // To ensure events are raised in the same order, we always invoke on the main thread. - Gui.WorkbenchSingleton.SafeThreadAsyncCall( + WorkbenchSingleton.SafeThreadAsyncCall( delegate { ParseInformationUpdated(null, e); }); @@ -744,9 +744,15 @@ namespace ICSharpCode.SharpDevelop static void RaiseParserUpdateStepFinished(ParserUpdateStepEventArgs e) { - Gui.WorkbenchSingleton.SafeThreadAsyncCall( + WorkbenchSingleton.SafeThreadAsyncCall( delegate { ParserUpdateStepFinished(null, e); + + IViewContent currentView = WorkbenchSingleton.Workbench.ActiveViewContent; + IParseInformationListener listener = currentView as IParseInformationListener; + if (listener != null && FileUtility.IsEqualFileName(e.FileName, currentView.PrimaryFileName)) { + listener.ParseInformationUpdated(e.ParseInformation); + } }); } diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs index 5ea9508b98..5dbc93e1c5 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/FindReferencesAndRenameHelper.cs @@ -415,7 +415,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring if (entry.Value.ViewContent is IEditable) { ParserService.ParseViewContent(entry.Value.ViewContent); } else { - ParserService.ParseFile(entry.Value.OpenedFile.FileName, entry.Key.CreateSnapshot()); + ParserService.ParseFile(entry.Value.OpenedFile.FileName, entry.Key); } } } diff --git a/src/Main/Base/Project/Src/Services/RefactoringService/NamespaceRefactoringService.cs b/src/Main/Base/Project/Src/Services/RefactoringService/NamespaceRefactoringService.cs index 7654207c92..b636273e11 100644 --- a/src/Main/Base/Project/Src/Services/RefactoringService/NamespaceRefactoringService.cs +++ b/src/Main/Base/Project/Src/Services/RefactoringService/NamespaceRefactoringService.cs @@ -43,7 +43,7 @@ namespace ICSharpCode.SharpDevelop.Refactoring public static void ManageUsings(Gui.IProgressMonitor progressMonitor, string fileName, IDocument document, bool sort, bool removedUnused) { - ParseInformation info = ParserService.ParseFile(fileName, document.CreateSnapshot()); + ParseInformation info = ParserService.ParseFile(fileName, document); if (info == null) return; ICompilationUnit cu = info.MostRecentCompilationUnit; diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorBasedPad.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorBasedPad.cs index 9212e796f4..1d08192e98 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorBasedPad.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/TextEditorBasedPad.cs @@ -63,8 +63,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor public ITextBuffer CreateSnapshot() { string content = WorkbenchSingleton.SafeThreadFunction(GetText); - return new ICSharpCode.SharpDevelop.Editor.AvalonEdit.AvalonEditTextSourceAdapter( - new ICSharpCode.AvalonEdit.Document.StringTextSource(content)); + return new StringTextBuffer(content); } string IEditable.Text {