Browse Source

Fixed forum-8579: "Goto Matching Brace" doesn't work if "Highlighting matching braces" is deactivated

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1495 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
3c9dc9f139
  1. 7
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs
  2. 57
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
  3. 5
      src/Main/Base/Project/Src/Services/RefactoringService/NRefactoryCodeGenerator.cs

7
src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs

@ -905,9 +905,10 @@ namespace ICSharpCode.TextEditor.Actions
{ {
public override void Execute(TextArea textArea) public override void Execute(TextArea textArea)
{ {
if (textArea.TextView.Highlight != null) { Highlight highlight = textArea.FindMatchingBracketHighlight();
Point p1 = new Point(textArea.TextView.Highlight.CloseBrace.X + 1, textArea.TextView.Highlight.CloseBrace.Y); if (highlight != null) {
Point p2 = new Point(textArea.TextView.Highlight.OpenBrace.X + 1, textArea.TextView.Highlight.OpenBrace.Y); Point p1 = new Point(highlight.CloseBrace.X + 1, highlight.CloseBrace.Y);
Point p2 = new Point(highlight.OpenBrace.X + 1, highlight.OpenBrace.Y);
if (p1 == textArea.Caret.Position) { if (p1 == textArea.Caret.Position) {
if (textArea.Document.TextEditorProperties.BracketMatchingStyle == BracketMatchingStyle.After) { if (textArea.Document.TextEditorProperties.BracketMatchingStyle == BracketMatchingStyle.After) {
textArea.Caret.Position = p2; textArea.Caret.Position = p2;

57
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs

@ -229,42 +229,39 @@ namespace ICSharpCode.TextEditor
textView.Highlight = null; textView.Highlight = null;
return; return;
} }
bool changed = false; int oldLine1 = -1, oldLine2 = -1;
if (caret.Offset == 0) { if (textView.Highlight != null && textView.Highlight.OpenBrace.Y >=0 && textView.Highlight.OpenBrace.Y < Document.TotalNumberOfLines) {
if (textView.Highlight != null) { oldLine1 = textView.Highlight.OpenBrace.Y;
int line = textView.Highlight.OpenBrace.Y; }
int line2 = textView.Highlight.CloseBrace.Y; if (textView.Highlight != null && textView.Highlight.CloseBrace.Y >=0 && textView.Highlight.CloseBrace.Y < Document.TotalNumberOfLines) {
textView.Highlight = null; oldLine2 = textView.Highlight.CloseBrace.Y;
UpdateLine(line);
UpdateLine(line2);
}
return;
} }
textView.Highlight = FindMatchingBracketHighlight();
if (oldLine1 >= 0)
UpdateLine(oldLine1);
if (oldLine2 >= 0 && oldLine2 != oldLine1)
UpdateLine(oldLine2);
if (textView.Highlight != null) {
int newLine1 = textView.Highlight.OpenBrace.Y;
int newLine2 = textView.Highlight.CloseBrace.Y;
if (newLine1 != oldLine1 && newLine1 != oldLine2)
UpdateLine(newLine1);
if (newLine2 != oldLine1 && newLine2 != oldLine2 && newLine2 != newLine1)
UpdateLine(newLine2);
}
}
public Highlight FindMatchingBracketHighlight()
{
if (Caret.Offset == 0)
return null;
foreach (BracketHighlightingSheme bracketsheme in bracketshemes) { foreach (BracketHighlightingSheme bracketsheme in bracketshemes) {
// if (bracketsheme.IsInside(textareapainter.Document, textareapainter.Document.Caret.Offset)) {
Highlight highlight = bracketsheme.GetHighlight(Document, Caret.Offset - 1); Highlight highlight = bracketsheme.GetHighlight(Document, Caret.Offset - 1);
if (textView.Highlight != null && textView.Highlight.OpenBrace.Y >=0 && textView.Highlight.OpenBrace.Y < Document.TotalNumberOfLines) {
UpdateLine(textView.Highlight.OpenBrace.Y);
}
if (textView.Highlight != null && textView.Highlight.CloseBrace.Y >=0 && textView.Highlight.CloseBrace.Y < Document.TotalNumberOfLines) {
UpdateLine(textView.Highlight.CloseBrace.Y);
}
textView.Highlight = highlight;
if (highlight != null) { if (highlight != null) {
changed = true; return highlight;
break;
}
// }
}
if (changed || textView.Highlight != null) {
int line = textView.Highlight.OpenBrace.Y;
int line2 = textView.Highlight.CloseBrace.Y;
if (!changed) {
textView.Highlight = null;
} }
UpdateLine(line);
UpdateLine(line2);
} }
return null;
} }
public void SetDesiredColumn() public void SetDesiredColumn()

5
src/Main/Base/Project/Src/Services/RefactoringService/NRefactoryCodeGenerator.cs

@ -31,7 +31,10 @@ namespace ICSharpCode.SharpDevelop.Refactoring
if (node is Statement) if (node is Statement)
visitor.OutputFormatter.Indent(); visitor.OutputFormatter.Indent();
node.AcceptVisitor(visitor, null); node.AcceptVisitor(visitor, null);
return visitor.Text; string text = visitor.Text;
if (node is Statement && !text.EndsWith("\n"))
text += Environment.NewLine;
return text;
} }
} }

Loading…
Cancel
Save