Browse Source

Use Ctrl+Click as go to definition.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4819 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
18f3aca132
  1. 6
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 12
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  3. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  4. 53
      src/Main/Base/Project/Src/Editor/Commands/GoToDefinition.cs
  5. 3
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractMember.cs
  6. 3
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IMember.cs

6
AddIns/ICSharpCode.SharpDevelop.addin

@ -1580,7 +1580,11 @@ @@ -1580,7 +1580,11 @@
label = "${res:XML.MainMenu.SearchMenu.GotoLineNr}"
shortcut = "Control|G"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.GotoLineNumber"/>
<MenuItem id = "Separator3" type = "Separator" />
<MenuItem id = "GotoDefinition"
label = "${res:ICSharpCode.NAntAddIn.GotoDefinitionMenuLabel}"
shortcut = "Control|Return"
icon="Icons.16x16.SelectionArrow"
class = "ICSharpCode.SharpDevelop.Editor.Commands.GoToDefinition"/>
<MenuItem id = "GotoBrace"
label = "${res:XML.MainMenu.SearchMenu.GotoBrace}"
shortcut = "Control|B"

12
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
// <version>$Revision$</version>
// </file>
using ICSharpCode.SharpDevelop.Editor.Commands;
using System;
using System.Collections.ObjectModel;
using System.Diagnostics;
@ -17,7 +18,6 @@ using System.Windows.Data; @@ -17,7 +18,6 @@ using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Threading;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing;
using ICSharpCode.AvalonEdit.Highlighting;
@ -384,7 +384,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -384,7 +384,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
TextViewPosition? logicalPos = textEditor.GetPositionFromPoint(mousePos);
if (logicalPos.HasValue) {
var textView = textEditor.TextArea.TextView;
positionInPixels =
positionInPixels =
textView.PointToScreen(
textView.GetVisualPosition(logicalPos.Value, VisualYPosition.LineBottom) - textView.ScrollOffset);
positionInPixels.X -= 4;
@ -425,6 +425,14 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -425,6 +425,14 @@ namespace ICSharpCode.AvalonEdit.AddIn
{
// close existing popup immediately on text editor mouse down
tryCloseExistingPopup(false);
if (e.ChangedButton == MouseButton.Left && Keyboard.Modifiers == ModifierKeys.Control) {
TextEditor editor = GetTextEditorFromSender(sender);
var position = editor.GetPositionFromPoint(e.GetPosition(editor));
if (position != null) {
GoToDefinition.Run(GetAdapterFromSender(sender), document.GetOffset(position.Value));
e.Handled = true;
}
}
}
/*void textArea_GotFocus(object sender, RoutedEventArgs e)

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

@ -95,6 +95,7 @@ @@ -95,6 +95,7 @@
<Compile Include="Src\Editor\CodeCompletion\TemplateCompletionItemProvider.cs" />
<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\IndentSelection.cs" />
<Compile Include="Src\Editor\DocumentUtilitites.cs" />
<Compile Include="Src\Editor\IDocument.cs" />

53
src/Main/Base/Project/Src/Editor/Commands/GoToDefinition.cs

@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <author name="Daniel Grunwald"/>
// <version>$Revision$</version>
// </file>
using ICSharpCode.SharpDevelop.Dom;
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.SharpDevelop.Editor.Commands
{
public class GoToDefinition : 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)
{
IDocument document = editor.Document;
string textContent = document.Text;
IExpressionFinder expressionFinder = ParserService.GetExpressionFinder(editor.FileName);
if (expressionFinder == null)
return;
ExpressionResult expression = expressionFinder.FindFullExpression(textContent, offset);
if (expression.Expression == null || expression.Expression.Length == 0)
return;
var caretPos = editor.Document.OffsetToPosition(offset);
ResolveResult result = ParserService.Resolve(expression, caretPos.Line, caretPos.Column, editor.FileName, textContent);
if (result != null) {
FilePosition pos = result.GetDefinitionPosition();
if (pos.IsEmpty == false) {
try {
if (pos.Position.IsEmpty)
FileService.OpenFile(pos.FileName);
else
FileService.JumpToFilePosition(pos.FileName, pos.Line, pos.Column);
} catch (Exception ex) {
MessageService.ShowException(ex, "Error jumping to '" + pos.FileName + "'.");
}
}
}
}
}
}

3
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Implementations/AbstractMember.cs

@ -71,6 +71,9 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -71,6 +71,9 @@ namespace ICSharpCode.SharpDevelop.Dom
public AbstractMember(IClass declaringType, string name) : base(declaringType, name)
{
// members must have a parent class
if (declaringType == null)
throw new ArgumentNullException("declaringType");
}
public abstract IMember Clone();

3
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/Interfaces/IMember.cs

@ -21,7 +21,8 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -21,7 +21,8 @@ namespace ICSharpCode.SharpDevelop.Dom
/// <summary>
/// Gets/Sets the declaring type reference (declaring type incl. type arguments).
/// Never returns null, if the property is set to null (e.g. when this is not a specialized member),
/// Never returns null.
/// If the property is set to null (e.g. when this is not a specialized member),
/// it should return the default type reference to the <see cref="DeclaringType"/>.
/// </summary>
IReturnType DeclaringTypeReference {

Loading…
Cancel
Save