Browse Source

Reimplemented "Go to matching brace".

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4851 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
a9ded62ac1
  1. 2
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 6
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBracketSearcher.cs
  3. 2
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs
  4. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  5. 39
      src/Main/Base/Project/Src/Editor/Commands/GoToMatchingBrace.cs
  6. 7
      src/Main/Base/Project/Src/Editor/ITextEditor.cs

2
AddIns/ICSharpCode.SharpDevelop.addin

@ -1588,7 +1588,7 @@ @@ -1588,7 +1588,7 @@
<MenuItem id = "GotoBrace"
label = "${res:XML.MainMenu.SearchMenu.GotoBrace}"
shortcut = "Control|B"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.GotoMatchingBrace"/>
class = "ICSharpCode.SharpDevelop.Editor.Commands.GoToMatchingBrace"/>
<!-- </Condition> -->
</MenuItem>

6
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpBracketSearcher.cs

@ -14,12 +14,12 @@ using ICSharpCode.SharpDevelop.Editor; @@ -14,12 +14,12 @@ using ICSharpCode.SharpDevelop.Editor;
namespace CSharpBinding
{
/// <summary>
/// Description of CSharpBracketSearcher.
/// Searches matching brackets for C#.
/// </summary>
public class CSharpBracketSearcher : IBracketSearcher
{
string openingBrackets = "([{<";
string closingBrackets = ")]}>";
string openingBrackets = "([{";
string closingBrackets = ")]}";
public BracketSearchResult SearchBracket(IDocument document, int offset)
{

2
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs

@ -163,6 +163,7 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -163,6 +163,7 @@ namespace ICSharpCode.AvalonEdit.Editing
/// <summary>
/// Gets/Sets the caret offset.
/// Setting the caret offset has the side effect of setting the <see cref="DesiredXPos"/> to NaN.
/// </summary>
public int Offset {
get {
@ -184,6 +185,7 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -184,6 +185,7 @@ namespace ICSharpCode.AvalonEdit.Editing
/// <summary>
/// Gets/Sets the desired x-position of the caret, in device-independent pixels.
/// This property is NaN if the caret has no desired position.
/// </summary>
public double DesiredXPos {
get { return desiredXPos; }

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -96,6 +96,7 @@ @@ -96,6 +96,7 @@
<Compile Include="Src\Editor\CodeCompletion\TextCompletionItemProvider.cs" />
<Compile Include="Src\Editor\Commands\CommentRegion.cs" />
<Compile Include="Src\Editor\Commands\GoToDefinition.cs" />
<Compile Include="Src\Editor\Commands\GoToMatchingBrace.cs" />
<Compile Include="Src\Editor\Commands\IndentSelection.cs" />
<Compile Include="Src\Editor\DocumentUtilitites.cs" />
<Compile Include="Src\Editor\IBracketSearcher.cs" />

39
src/Main/Base/Project/Src/Editor/Commands/GoToMatchingBrace.cs

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
/*
* Created by SharpDevelop.
* User: daniel
* Date: 31.08.2009
* Time: 17:11
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using ICSharpCode.SharpDevelop.Gui;
using System;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Editor.Commands
{
public class GoToMatchingBrace : AbstractMenuCommand
{
public override void Run()
{
ITextEditorProvider editorProvider = WorkbenchSingleton.Workbench.ActiveViewContent as ITextEditorProvider;
if (editorProvider != null) {
Run(editorProvider.TextEditor, editorProvider.TextEditor.Caret.Offset);
}
}
public static void Run(ITextEditor editor, int offset)
{
BracketSearchResult result = editor.Language.BracketSearcher.SearchBracket(editor.Document, offset);
if (result != null) {
// place caret after the other bracket
if (result.OpeningBracketOffset <= offset && offset <= result.OpeningBracketOffset + result.OpeningBracketLength) {
editor.Select(result.ClosingBracketOffset + result.ClosingBracketLength, 0);
} else {
editor.Select(result.OpeningBracketOffset + result.OpeningBracketLength, 0);
}
}
}
}
}

7
src/Main/Base/Project/Src/Editor/ITextEditor.cs

@ -29,6 +29,7 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -29,6 +29,7 @@ namespace ICSharpCode.SharpDevelop.Editor
/// <summary>
/// Gets the primary view if split-view is active.
/// If split-view is disabled, the current ITextEditor instance is returned.
/// This property never returns null.
/// </summary>
/// <example>bool isSecondaryView = (editor != editor.PrimaryView);</example>
ITextEditor PrimaryView { get; }
@ -40,14 +41,20 @@ namespace ICSharpCode.SharpDevelop.Editor @@ -40,14 +41,20 @@ namespace ICSharpCode.SharpDevelop.Editor
/// <summary>
/// Gets an object that represents the caret inside this text editor.
/// This property never returns null.
/// </summary>
ITextEditorCaret Caret { get; }
/// <summary>
/// Gets the set of options used in the text editor.
/// This property never returns null.
/// </summary>
ITextEditorOptions Options { get; }
/// <summary>
/// Gets the language binding attached to this text editor.
/// This property never returns null.
/// </summary>
ILanguageBinding Language { get; }
/// <summary>

Loading…
Cancel
Save