Go To Definition

Free

Make ctrl+click perform a "Go To Definition" on the identifier under the cursor. Also, when the ctrl key is held down, highlight identifiers that look like they have definitions to navigate to.

(62) Review
Visual Studio
2013, 2012, 2010
Download (121,768)
11/10/2013
2.5
View
E-mail Twitter del.icio.us Digg Facebook
Add to favorites
Description
Reviews (62)
Q and A (30)
Sign in to write a review
Sort by:

by grundt | August 22 2014

Works well - very speedy ... the only trick is remembering that it's available

by hsinwei | July 05 2014

by Prateek Bhushan | May 05 2014

It is an awesome tool, however I have to degrade to VS2008, can I use it for that?

Noah Richards May 19 2014
| Edit |
Delete

Nope. VS2008 used a completely different editor and extensibility system, so this definitely won't work there. Sorry :(

by stabilopro | April 19 2014

by Jamie Collins | February 28 2014

A fantastic extension I've been using since VSS 2010 and have just installed VSS 2013.

In common with @a5Digital, I too would like a way of navigating 'Peek Definition' but wonder whether this functionality is exposed by the API. There is no mention of 'peek' in the docs for VSConstants.VSStd97CmdID (http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.vsconstants.vsstd97cmdid.aspx). So it doesn't seem possible - or am I missing something?

Noah Richards March 01 2014
| Edit |
Delete

It wouldn't be in the "97" set, since that was for VS 97, so waaaay too old :) Check the values in the vsstd12cmdid section, which has peek definition + peek navigate (http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.vsconstants.vsstd12cmdid.aspx).

by VolarVideo | February 25 2014

I wish this worked. Using VS2013 and GTD 2.5. I ctrl+click doesn't do anything. Ctrl+hover and the identifier turns into a hyperlink but when I click nothing happens.

Noah Richards February 25 2014
| Edit |
Delete

That's unfortunate. Can you point me (a comment in Q&A) at what GTD 2.5 is? It must somehow conflict with how the mouse event is handled, but I'm not sure how.

by Oleg V. Korzhukov | February 18 2014

Most useful extension I ever installed to VS

by Batu Ozk | January 15 2014

by iphilsy | January 03 2014

Thank you thank you thank you. Works great. You turned my frown upside-down!

by ITSTH | November 28 2013

For me it's the best plugin ever for visual studio. It's the fastest way of navigating. Just one suggestion: I think it would be nice if Ctrl+RightClick on a keyword triggered the search for references of a function.

by denis_stankovski | November 21 2013

Thank you so much!

by a5Digital | November 13 2013

I agree with most of these reviews - this extension is a must. However I there is so much more potential here which would leave me baffled if the author doesn't explore the possibility of augmenting this:

a) allow for another key combo + left click perform a peek definition
b) allow for another key combo + left click perform a find all references

If these are exposed via the API (and I believe they are), adding these features should be fairly trivial.

Noah Richards November 14 2013
| Edit |
Delete

Sending a different command would be pretty easy to add, yup. If you want it to be configurable, that's more difficult, but just hardcoding combinations wouldn't be bad.

If you're curious about implementing it yourself, the source is here: https://github.com/noahric/gotodef. The actual command logic is in DispatchGoToDef in GoToDefMouseHandler.cs, so you could probably modify that function (or add new functions) for peek or find all references. Since the extension is still built to be compatible with VS2010, you'd want to hardcode the cmdset/cmdid for peek definition and do a version check first, though.

If you have any questions, let me know on the Q&A!

by Daniel Joos | October 21 2013

Works with VS 2013. It just requires some manual work:
1. Download the .vsix file
2. Unzip it (e.g. using 7zip)
3. Open the vsixmanifest file and add the following block to line 22
<VisualStudio Version="12.0">
<Edition>Pro</Edition>
</VisualStudio>
4. Save and Zip all files again
5. Rename the .zip to .vsix and install it

Noah Richards November 10 2013
| Edit |
Delete

2.5 should now support VS2013. Let me know if you run into any issues, thanks!

by maxima | October 21 2013

+1 VS2013
--------------------------
I use this from day one and is most helpful tool ever... But I have a request (I am amazed that nobody made it yet).

Could you please add Ctrl-Shift-Click to invoke VS Find All References command.

That will make your tool best for ever!! :)

Noah Richards November 10 2013
| Edit |
Delete

2.5 should now support VS2013. Ctrl-shift-click doesn't do find all, but it is now ignored (per another user's request).

by Jan Mazur | October 19 2013

+1 for the VS2013 support

Noah Richards November 10 2013
| Edit |
Delete

2.5 should now support VS2013. Let me know if you run into any issues, thanks!

by Kurt Dowswell | October 18 2013

Please add VS 2013 support! Love this extension. Use it countless times per day :)

Noah Richards November 10 2013
| Edit |
Delete

2.5 should now support VS2013. Let me know if you run into any issues, thanks!

by f00nth | October 04 2013

by Gameme | September 23 2013

Its awesome to get a navigation style similar to source insight. I love it.

by Stefanos Anastasiou | August 24 2013

This plugin is using a hack, which makes it unusable with DSLs.

The plugin, uses the following export type:

[ContentType("code")]

And in addition it tries to highlight and subsequently find symbol definitions, for every classification span which happens to have the following characters in them

if ((name.Contains("identifier") || name.Contains("user types")) &&
SetHighlightSpan(classification.Span))
{
updated = true;
return true;
}

i.e. "identifier", "user types"

I know of no language, which doesn't have an "identifier". So it is very probable that any DSL will not work with the plugin.

The funny thing is, that the plugin somehow managed to creep into power productivity tools 2012, and since everyone uses those, they also use the plugin.

We had to change our DSL in order to continue using the plugin..

The plugin should only support only languages which do support this feature natively, than trying to invoke "find symbol definitions" for all languages which happen to export an "identifier" token.

Noah Richards August 24 2013
| Edit |
Delete

Sadly, there wasn't a non-hacky way to implement the extension, and there's no way to determine which languages "support this feature natively". Since Go To Definition wasn't designed as a queryable command, the extension had to use some broad guessing at what has definitions, and it actually under guesses for certain scenarios (I remember one or two in VB, at least).

I'd be happy to at least modify this standalone version to avoid loading for documents that use your DSL language type and you could file a Connect bug to get it integrated back into the PPT extension . Fee free to either add a Q&A comment here or a github bug (https://github.com/noahric/gotodef/issues) with the details, or make the modifications yourself and send me a pull request on github.

by Code Buddha | August 07 2013

This made my day. You're awesome. Thanks!

1 - 20 of 62 Items   
Sign in to start a discussion


  • How to Switch to "Highlight-Word-Under-Cursor" as in SSMS?
    2 Posts | Last post July 31, 2013
    • Hi all.
      
      Is it actually possible to change this?
      Double-click is not convenient for me and I have been using SQL Server Management Studio with CTRL+Click to highlight a word for years.  In many situations with partial replacements this is the fastest method.
      
      Thank you,
      Rafael
    • Aha, found it!  Tools==>Options==>Productivity Power Tools -> turn off the feature in the right pane :)
  • Visual Studio 2012 Express
    3 Posts | Last post April 24, 2013
    • Is the extension working in visual studio express 2012?
      
      I use it in visual studio professional 2010 and I can't live without it!
      
      I am trying vs express 2012, but i am not able to install gtDef, it says it's already install for all possible products...
      
      Thanks and keep up the good work!
    • The Express editions of VS don't support any (non-microsoft) extensions, sorry!
      
      -Noah
    • You can use this short autohotkey script to do this with middle mouse button. Just store this code as .ahk file and run it.
      
      SetTitleMatchMode, 2
      #Persistent
      #IfWinActive, Microsoft Visual Studio Express
      MButton::
        Click
        Send {F12}
        Return
      #IfWinActive
  • Does not jump on Ctrl+click, but jumps on F12
    1 Posts | Last post January 10, 2013
    • Hi, it seems I have found some kind of conflict with another extension: "Highlight all occurrences of selected word" (http://visualstudiogallery.msdn.microsoft.com/4b92b6ad-f563-4705-8f7b-7f85ba3cc6bb)
      
      The extension highlights all occurrences of a selected word in the current document. My usual use case is to double-click an identifier, look at it's highlighted occurrences in the current context and then ctrl+click it to go to the definition. When I disable that highlighting extension I can navigate using ctrl+click, otherwise I get the highlighting on ctrl+click. 
      
      It is reproducible on a tiny snippet like this:
      #include <iostream>
      int main(int , char**) 
      {
          int myint = 5;
      
          std::cin >> myint;
          myint += 1;
          std::cout << myint;
      }
      
      I am using VS 2010 and the 2.4 version of your extension.
      Could you suggest any workaround?
  • Doesn't work for ids of HTML elements
    8 Posts | Last post November 28, 2012
    • This simply doesn't work for me. It only works for classes.
      
      Using 2.4 with VS 2012.
    • What language?
    • To be fair, I've never tested this with VS2012 (I've never used VS2012). If the classification of method names has been changed, it would stop the extension from working. It currently only matches:
      if (name.Contains("identifier") || name.Contains("user types"))
      
      If you (or anyone else) can let me know what the name is, I can add it to that list pretty easily.
    • Language: HTML.
      
      I don't know an answer to your other question. Would you be able to download a trial version of VS 2012 and get the information you need?
      
      Alternatively, could you guide me into obtaining an answer for you?
    • I'm not sure I remember what it is supposed to do in HTML.
      
      If you click on something that isn't underlined but you think should be, and you press F12 (or whatever Go To Definition is bound to), does it navigate someplace? If you have the extension installed, you can do the same by ctrl-clicking, even if it isn't underlined, if that helps.
    • F12 also ignores ids and also works for classes.
    • This won't work in any case that F12 doesn't, it just programmatically invokes F12 (+ a heuristic for the underlining).
    • Got it. I have filed a bug report about this: https://connect.microsoft.com/VisualStudio/feedback/details/772443/pressing-f12-doesnt-take-users-to-css-definitions-based-on-ids-of-html-elements. I hope other could reproduce it, click on the "I can too" link there and also vote for the bug.
  • Bug in implementation wich conflicts with word selection
    2 Posts | Last post October 29, 2012
    • Hi, 
      
      I believe there is a bug in implementation which causes this extension to conflict with word select functionality of the editor - i.e. when CTRL is pressed, mouse selection is automatically extended to words. I guess operator "&&" should be replaced by "||" in this method
      
              private bool InDragOperation(Point anchorPoint, Point currentPoint)
              {
                  // If the mouse up is more than a drag away from the mouse down, this is a drag
                  return Math.Abs(anchorPoint.X - currentPoint.X) >= SystemParameters.MinimumHorizontalDragDistance &&
                         Math.Abs(anchorPoint.Y - currentPoint.Y) >= SystemParameters.MinimumVerticalDragDistance;
              }
      
      i.e. current code detects only 'diagonal' drags, but it should work if drag is done along X or Y axis too.
      
      Thanks for this extension, BTW :).
      
    • Looks like a bug indeed :) Funny thing is that I'm pretty sure that code looks nearly identical to the drag/drop mouse handler built in to VS. I'll update the code shortly (and the extension at some point after that; that may take a little while). Thanks!
      
      -Noah
  • Go To Implementation?
    2 Posts | Last post September 28, 2012
    • I am using Resharper, which provides Go To Implementation in the context menu, which is very useful, as we use interfaces heavily.
      
      I'd love to be able to override the Ctrl+Click behaviour to go to the implementation instead, which is far more common usage than going to the interface.  I suspect you might not be able to pull it off though if it's only built into Resharper?
    • Assuming they register it as a command, you could modify the extension to call that command in DispatchGoToDef:
      https://github.com/NoahRic/GoToDef/blob/master/GoToDefMouseHandler.cs#L340
      
              bool DispatchGoToDef()
              {
                  Guid cmdGroup = VSConstants.GUID_VSStandardCommandSet97;
                  int hr = _commandTarget.Exec(ref cmdGroup,
                                               (uint)VSConstants.VSStd97CmdID.GotoDefn,
                                               (uint)OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT,
                                               System.IntPtr.Zero,
                                               System.IntPtr.Zero);
                  return ErrorHandler.Succeeded(hr);
              }
  • Please rebuild to also target Visual Studio 11 Beta
    2 Posts | Last post April 26, 2012
    • Some of the Productivity Power Tools extension for VS2010 are already included in VS11, but Ctrl+Click is not one of them.
      
      How hard would it be for you to have your "Go To Definition" extension also target VS11 Beta?
    • You can do it yourself.
      1. Download this extension.
      2. Rename GoToDef.vsix to GoToDef.zip
      3. Extract all the files in GoToDef.zip
      4. Open up the extension.vsixmanifest
      5. Change the <VisualStudio Version="10.0"> to <VisualStudio Version="11.0">
      6. Save
      7. Zip all the files (GoToDef.zip)
      8. Rename the GoToDef.zip to GoToDef.vsix
      9. Install the vsix
      10. Enjoy
  • Please add option to address Go To Definition to Object Browser instead of metadata
    2 Posts | Last post January 29, 2012
    • SEE:
      http://connect.microsoft.com/VisualStudio/feedback/details/667889/allow-addressing-go-to-definition-to-object-browser-rather-than-metadata#tabs
    • Overriding the GoToDefinition command behavior is orthogonal to this extension. If you want an example of how to write a command handler, take a look at the FixCtrlBackspace source here: https://github.com/NoahRic/Random/blob/master/FixCtrlBackspace.cs
  • Similar Navigate for custom control onclick
    1 Posts | Last post December 30, 2011
    • This is a great tool!  If I have a custom server control with a onclick event.  How can I add this functionality to my custom control to jump to subroutine?  Thanks.
      Brent
  • Navigate to previous statement
    3 Posts | Last post December 25, 2011
    • When press Ctrl + Click, this will jump to the method's definition, this is very helpful.
      
      I am very appreciate if you can add "Jump back" function to this addin (like Shift + click method's name).
      
      Thanks in advance.
    • View.NavigateBackward should do the trick. It'll be bound to Ctrl+- (ctrl minus) by default, or your mouse's back button, if it has one.
      
      -Noah
    • This is a great tool!  If I have a custom server control with a onclick event.  How can I add this functionality to my custom control?  Thanks.
11 - 20 of 30 Items