diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs index f34f52145c..48103a5acf 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs @@ -65,6 +65,7 @@ namespace CSharpBinding CodeManipulation codeManipulation; CaretReferenceHighlightRenderer renderer; CodeEditorFormattingOptionsAdapter options; + TextEditorOptions originalEditorOptions; public void Attach(ITextEditor editor) { @@ -92,6 +93,7 @@ namespace CSharpBinding textViewServices.AddService(typeof(ITextEditorOptions), options); // Set TextEditor's options to same object + originalEditorOptions = textEditor.Options; textEditor.Options = options; } } @@ -107,9 +109,9 @@ namespace CSharpBinding if ((optionsService != null) && (optionsService == options)) textView.Services.RemoveService(typeof(ITextEditorOptions)); - // TODO Reset TextEditor options, too? - // if ((textEditor.Options != null) && (textEditor.Options == options)) - // textEditor.Options = SD.EditorControlService.GlobalOptions; + // Reset TextEditor options, too? + if ((textEditor.Options != null) && (textEditor.Options == options)) + textEditor.Options = originalEditorOptions; } codeManipulation.Dispose(); diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs index df87075e87..e747ab6177 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorAdapter.cs @@ -80,8 +80,10 @@ namespace ICSharpCode.AvalonEdit.AddIn internal void DetachExtensions() { if (extensions != null) { - foreach (var extension in extensions) - extension.Detach(); + // Detach extensions in reverse order + for (int i = extensions.Count - 1; i >= 0; i--) { + extensions[i].Detach(); + } } // Switch to global options, if no specific options service is registered