diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBracketSearcher.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBracketSearcher.cs index 2c20890d77..cbe1327f06 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBracketSearcher.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBracketSearcher.cs @@ -36,8 +36,7 @@ namespace CSharpBinding if (otherOffset > -1) return new BracketSearchResult(Math.Min(offset - 1, otherOffset), 1, - Math.Max(offset - 1, otherOffset), 1, - openingBrackets[ind].ToString(), closingBrackets[ind].ToString()); + Math.Max(offset - 1, otherOffset), 1); } return null; diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetBracketSearcher.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetBracketSearcher.cs index d3ae3c1aa3..b16969e881 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetBracketSearcher.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetBracketSearcher.cs @@ -36,8 +36,7 @@ namespace ICSharpCode.VBNetBinding if (otherOffset > -1) return new BracketSearchResult(Math.Min(offset - 1, otherOffset), 1, - Math.Max(offset - 1, otherOffset), 1, - openingBrackets[ind].ToString(), closingBrackets[ind].ToString()); + Math.Max(offset - 1, otherOffset), 1); int length; VBStatement statement; diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/HiddenDefinition/HiddenDefinitionRenderer.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/HiddenDefinition/HiddenDefinitionRenderer.cs index a45e5fa07b..77eb9584c2 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/HiddenDefinition/HiddenDefinitionRenderer.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/HiddenDefinition/HiddenDefinitionRenderer.cs @@ -2,11 +2,7 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; -using System.ComponentModel.Design; -using System.Linq; using System.Windows.Controls.Primitives; - -using ICSharpCode.AvalonEdit.Document; using ICSharpCode.Core.Presentation; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Gui; @@ -45,10 +41,14 @@ namespace ICSharpCode.AvalonEdit.AddIn.HiddenDefinition { ClosePopup(); - if (BracketSearchResult == null || BracketSearchResult.OpeningBracket != "{") return; + if (BracketSearchResult == null) return; + + // verify if we have a open bracket + if (this.editor.Document.GetCharAt(BracketSearchResult.OpeningBracketOffset) != '{') + return; var line = GetLineText(BracketSearchResult.OpeningBracketOffset); - if(line == null) return; + if(line == null) return; control.DefinitionText = line; popup.Child = control; @@ -60,19 +60,23 @@ namespace ICSharpCode.AvalonEdit.AddIn.HiddenDefinition private string GetLineText(int offset) { - // get folding manager - var container = this.editor.Adapter.GetService(typeof(IServiceContainer)) as IServiceContainer; - if (container == null) return null; - var folding = container.GetService(typeof(ParserFoldingStrategy)) as ParserFoldingStrategy; - if (folding == null) return null; + // get line + var line = editor.Document.GetLineByOffset(offset); + string text = editor.Document.Text; - // get folding - var f = folding.FoldingManager.GetFoldingsContaining(offset).LastOrDefault(); - if (f == null) return null; + while (true) { + if (line == null || line.IsDeleted) return null; + string lineString = text.Substring(line.Offset, line.Length).Trim(); + + if (lineString != "{" && !string.IsNullOrEmpty(lineString) && + !lineString.StartsWith("//") && !lineString.StartsWith("/*") && + !lineString.StartsWith("*") && !lineString.StartsWith("'")) + break; + line = line.PreviousLine; + } - // get line - var line = editor.Document.GetLineByOffset(f.StartOffset); - if (line == null || line.IsDeleted) return null; + if (!editor.TextArea.TextView.VisualLinesValid) + return null; // check whether the line is visible int off = line.Offset; diff --git a/src/Main/Base/Project/Src/Editor/IBracketSearcher.cs b/src/Main/Base/Project/Src/Editor/IBracketSearcher.cs index c7d74a1a8a..9e165a4f1e 100644 --- a/src/Main/Base/Project/Src/Editor/IBracketSearcher.cs +++ b/src/Main/Base/Project/Src/Editor/IBracketSearcher.cs @@ -40,20 +40,13 @@ namespace ICSharpCode.SharpDevelop.Editor public int ClosingBracketLength { get; private set; } - public string OpeningBracket { get; private set; } - - public string ClosingBracket { get; private set; } - public BracketSearchResult(int openingBracketOffset, int openingBracketLength, - int closingBracketOffset, int closingBracketLength, - string openingBracket = null, string closingBracket = null) + int closingBracketOffset, int closingBracketLength) { this.OpeningBracketOffset = openingBracketOffset; this.OpeningBracketLength = openingBracketLength; this.ClosingBracketOffset = closingBracketOffset; this.ClosingBracketLength = closingBracketLength; - this.OpeningBracket = openingBracket; - this.ClosingBracket = closingBracket; } } }