A simple but useful module which really helps with my productivity when I used previous versions of Visual Studio. I also use Netbeans and Eclipse, and I love this feature in those editors and use it constantly.
Hitting F12 for me is not as quick/natural for me, personally. Productivity Power Tools has similar functionality of allowing you to control+click to peek a definition in VS2015, but I like the behavior of going to the definition much better than peeking it.
I think it would be nice to extend this module (or PPT) so that you can define peek and go to definition as shortcuts and have them as for instance control+click for one and shift+click for the other one, and just allow you to choose which maps to which function.
Sometimes I do want to promote to document rather than just peeking definition.
Please refer and reply to this discussion:
I used to use the "Go to definition" feature of pre-2012 versions of Visual Studio to navigate identifiers that came from build errors (which happens excessively often when something goes wrong while comipiling templates).
It is counter productive to have to copy/paste identifiers from the build output to a code window that does not deserve polluting, only to then use the addin.
Would it be possible to make this addin work in the context of any text window, like the build output?
It may be possible, but definitely not straightforward. The extension itself doesn't actually do the "Go to definition" logic, it just basically triggers a press of F12 (the GoToDefinition command). If F12 does work in the output window, then it's just a matter of getting the extension there and figuring out what to underline on ctrl+mouseover.
I've had a problem for ages while working on a legacy site that was built in VB.NET and we've added C# projects to it.
The problem seems to be that Go To Definition doesn't work across the projects.
I even tried setting up a test solution to see if the problem existed on a brand new one and it still did.
I've tried all the solutions I've found on the net around using Project References and not File ones but nothing seems to work.
Well, one thing works. ReSharper. Unfortunately, ReSharper is quite overkill just to get Go To Definition working properly...
Is there any chance your extension could fix this bug and enable the Go To Definition (And Find Usages if possible :P) across projects?
I'm not comfortable in making this change myself. Given your response to my review comments indicating that it wouldn't be too hard to implement peek definition and find all references with a non-configurable key combination, would you consider?
CTRL + Left Click == goto def
CTRL + Middle Click == peek definition
CTRL + Right Click == find all references
what do you think?
...well now that MS's PPT 2013 extension is out, which can do a peek definition with the ctrl-click, I guess this request (and extension) is no longer needed...
unless this one provides the ability to do both (peek and goto def) via different mouse buttons / key combo.
without this plug-in, when I click on a word, hold [Ctrl] and [Shift], and click on another word, it selects the everything between both clicks including the whole words.
however when I have this plug-in installed it tries to jump to the word I click on even if it isn't a hyperlinked one.
it would be nice if you ignored jumping if, other keys were pressed, specifically in this case the [Shift] key.
Hi, the functionality you're describing doesn't require the use of the Ctrl key. Click once in the file, then Shift+Click to where you want the selection and it should select everything in-between. Ctrl is not needed.
Sorry guys! I'm working on it, but I lost my windows VM and so I had to rebuild things (a few days of installing software and updates). I should be all set up to rebuild and then test with vs2013, so I'm hoping to get it done this weekend.
@Noah, I changed the names of the "identifier" DSL tokens so that the "conflict" doesn't exist anymore. But now I have another problem, which only occurs while the documents of my DSL are part of a C++,C# project.
GoToDef tries to find the definition of all tokens in my document, even though the names of the tokens are completely irrelevant with your extension.
The funny thing is, that only the tokens I allow in my extension are underlined, but when I click, your command handler is invoked rather than mine.
All this started to happen, as I added an ILanguageInfo implementation to my plugin. If I remove this, everything works as it should..
Any ideas ?
Correction, it occurs even if the document is not part of a C++ project. The underlining works fine according to my plugin - but the cursor does not change and when I click on an item your command handler is getting called instead of mine.
I managed to workaround through your plugin. I had to implement IVsCodeManager and add a filter for my textview in between.
Would it not help if you export your plugin only for C++,C# etc. instead for text content type ?
(When you say "text" content type, are you talking about the classifier? The mouse handler is "code", so the rest of the question assumes you meant that)
> Would it not help if you export your plugin only for C++,C# etc. instead for text content type ?
It would probably help your specific issue to enumerate which content types support GoToDef, though then it'd have the opposite problem from this: opt-in instead of opt-out, so it would miss supported languages. It turns out that many/most third party languages, even DSLs, tend to implement Go To Definition for *something*, even if it isn't a "definition".
Your case is an interesting one, though. Content types don't provide an anti-list, so there's no good way to say "code, but not some other content type". Added to that, VS doesn't ship with a standard "DSL" content type or, more appropriately, an "I-support-Go-To-Definition" content type, so all the extension can really do is guess. I had always hoped that the product team would make it a part of VS and make it possible for these to be less hacky, but the good/bad thing is that the extension tends to work pretty close to correctly in most scenarios, so I don't think there was a strong desire to spend the extra effort making it perfect. I wouldn't know, though, as I left VS/Microsoft over 2 years ago.
As for the mouse handler, if your handler is being called first and you don't want anything else to happen with that mouse event, you can mark e.Handled to true. It may not be the right solution in the general case, since there may be some later default behavior that's desirable, but it's worth testing, at least.
All said, I'd still be happy to add some manual logic (to the mouse handler provider) to have it skip files of your DSL's content type, or some base content type that you've created and that others could use to opt-out. Just let me know, or send me a pull request on github.
Sorry, yes I meant code. The funny thing is, I tried debugging your plugin and it actually works as expected, because now I am exporting a content type specific for my DLS which does not even derive from text.
But with power productivity tools it does not work. As this code is not open source, I can't debug, now do I have any idea where the problem may lie.
You can probably use .NET reflector to see what the productivity power tools version is doing.
If this version of the plugin isn't incompatible with your plugin, you may want to consider moving/copying your review or other pertinent information to that extension's page. I don't have any control over that version and I don't even know who works on it (internally at Microsoft), so I won't be of much help there, sorry :(