diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs index 6785ac4d3c..c36e7949d1 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs @@ -117,6 +117,7 @@ namespace ICSharpCode.AvalonEdit.AddIn void CaretChanged(object sender, EventArgs e) { NavigationService.Log(this.BuildNavPoint()); + StatusBarService.SetCaretPosition(this.Column, this.Line, this.Column); } #region Bookmark Handling diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs index 7741842680..ebd8272387 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs @@ -55,9 +55,6 @@ namespace ICSharpCode.AvalonEdit.AddIn readonly TextMarkerService textMarkerService; ErrorPainter errorPainter; - BracketHighlightRenderer primaryBracketRenderer; - BracketHighlightRenderer secondaryBracketRenderer; - public CodeEditorView PrimaryTextEditor { get { return primaryTextEditor; } } @@ -152,8 +149,6 @@ namespace ICSharpCode.AvalonEdit.AddIn Debug.Assert(primaryTextEditorAdapter != null); activeTextEditor = primaryTextEditor; - this.primaryBracketRenderer = new BracketHighlightRenderer(primaryTextEditor.TextArea.TextView); - this.Document = primaryTextEditor.Document; primaryTextEditor.SetBinding(TextEditor.DocumentProperty, new Binding("Document") { Source = this }); @@ -270,8 +265,6 @@ namespace ICSharpCode.AvalonEdit.AddIn SetRow(secondaryTextEditor, 2); this.Children.Add(secondaryTextEditor); - this.secondaryBracketRenderer = new BracketHighlightRenderer(secondaryTextEditor.TextArea.TextView); - secondaryTextEditorAdapter.FileNameChanged(); FetchParseInformation(); } else { @@ -283,7 +276,6 @@ namespace ICSharpCode.AvalonEdit.AddIn secondaryTextEditorAdapter.Language.Detach(); secondaryTextEditorAdapter = null; gridSplitter = null; - this.secondaryBracketRenderer = null; this.RowDefinitions.RemoveAt(this.RowDefinitions.Count - 1); this.ActiveTextEditor = primaryTextEditor; } @@ -306,24 +298,6 @@ namespace ICSharpCode.AvalonEdit.AddIn quickClassBrowser.SelectItemAtCaretPosition(this.ActiveTextEditorAdapter.Caret.Position); } - var caret = this.ActiveTextEditor.TextArea.Caret; - var activeAdapter = this.ActiveTextEditorAdapter; - - /* - * Special case: ITextEditor.Language guarantees that it never returns null. - * In this case however it can be null, since this code is called while the document is loaded. - * ITextEditor.Language gets set in CodeEditorAdapter.FileNameChanged, which is called after - * loading of the document has finished. - * */ - if (activeAdapter.Language != null) { - var bracketSearchResult = activeAdapter.Language.BracketSearcher.SearchBracket(activeAdapter.Document, activeAdapter.Caret.Offset); - if (activeAdapter == primaryTextEditorAdapter) - this.primaryBracketRenderer.SetHighlight(bracketSearchResult); - else - this.secondaryBracketRenderer.SetHighlight(bracketSearchResult); - } - - StatusBarService.SetCaretPosition(caret.Column, caret.Line, caret.Column); CaretPositionChanged.RaiseEvent(this, EventArgs.Empty); } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs index bfc920e6c0..5c9eb89a92 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs @@ -36,6 +36,7 @@ namespace ICSharpCode.AvalonEdit.AddIn public ITextEditor Adapter { get; set; } CodeEditorOptions options; + BracketHighlightRenderer bracketRenderer; public CodeEditorView() { @@ -43,15 +44,35 @@ namespace ICSharpCode.AvalonEdit.AddIn options = ICSharpCode.AvalonEdit.AddIn.Options.CodeEditorOptions.Instance; options.BindToTextEditor(this); + bracketRenderer = new BracketHighlightRenderer(this.TextArea.TextView); + this.MouseHover += TextEditorMouseHover; this.MouseHoverStopped += TextEditorMouseHoverStopped; this.MouseLeave += TextEditorMouseLeave; this.TextArea.TextView.MouseDown += TextViewMouseDown; + this.TextArea.Caret.PositionChanged += TextArea_PositionChanged; var editingKeyBindings = this.TextArea.DefaultInputHandler.Editing.InputBindings.OfType(); var tabBinding = editingKeyBindings.Single(b => b.Key == Key.Tab && b.Modifiers == ModifierKeys.None); tabBinding.Command = new CustomTabCommand(this, tabBinding.Command); } + + void TextArea_PositionChanged(object sender, EventArgs e) + { + /* + * Special case: ITextEditor.Language guarantees that it never returns null. + * In this case however it can be null, since this code may be called while the document is loaded. + * ITextEditor.Language gets set in CodeEditorAdapter.FileNameChanged, which is called after + * loading of the document has finished. + * */ + if (activeAdapter.Language != null) { + var bracketSearchResult = activeAdapter.Language.BracketSearcher.SearchBracket(activeAdapter.Document, activeAdapter.Caret.Offset); + if (activeAdapter == primaryTextEditorAdapter) + this.primaryBracketRenderer.SetHighlight(bracketSearchResult); + else + this.secondaryBracketRenderer.SetHighlight(bracketSearchResult); + } + } sealed class CustomTabCommand : ICommand {