![]() |
General Programming »
Macros and Add-ins »
VS.NET Addins
Intermediate
License: The Code Project Open License (CPOL)
Linkify Add-in for Visual StudioBy peterchenLink source code comments to your bug tracker, MSDN, development Wiki and more. |
C# 2.0, Windows, .NET 2.0VS2005, VS2008, Dev
|
||||||||||
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
New features: Version 1.3 (August 2008)
Linkify is a Visual Studio add-in that links your source code comments to your bug tracker, development Wiki, MSDN, Google or any other site or utility. It supports Visual Studio 2005 and 2008.
Instead of inserting a URL, you insert text that starts with a known prefix, e.g.:
// this code fixes bugz:666 - don't remove!
// for more info, see msdn:MakeSureDirectoryPathExists and wiki:ThatUglySaveBug
To follow one of the links, set the caret on the link text and select the "Linkify" from the Tools menu. It helps a lot to create a toolbar button and/or a keyboard shortcut for it!
The above example - if configured so - uses the bugz: protocol to link to your bug tracker, immediately opening case 666. msdn: is a preconfigured protocol that searches MSDN for MakeSureDirectoryPathExists via Google. wiki: might link to your development Wiki.
Of course, you could paste the URL as well, but Linkify has some advantages:
ShellExecute call can do: open URLs, open documents, run programs. The article now contains an installer that puts it in one of the five folders that Visual Studio 2005 and 2008 searches for add-ins in by default. However, if you have changed your add-in search folders or you run into other funny problems, here is how to install manually:
To install manually for Visual Studio 2005, unzip the two files from LinkifyAddin.zip to your Visual Studio Addins folder, e.g. \Documents and Settings\<user>\My Documents\Visual Studio 2005\Addins where <user> is either your user name or "All Users". When you start Visual Studio again, Linkify appears in the Tools menu. From there you can also put it on a toolbar button and/or assign a hotkey to it.
Installation is similar for Visual Studio 2008. The addin binary is the same for both versions of Visuaol Studio, and two .AddIn files are included - one for each Visual Studio version. I haven't seen bad side effects when placing both addin files in the search path for one Studio instance (Except that my AddIn manager recognizes it twice).
I haven't been able to test the installation and the latest binaries on VS2008 yet, please report any errors you find.
Holding down Shift while clicking Linkify or starting it while on unrecognized text opens the configuration dialog. There you can manage the list of recognized protocols and associate them with URLs and other commands.

bugz: http://companyserver/bugtracker/showbug.asp?id=* bugz:666 opens http://companyserver/bugtracker/showbug.asp?id=666 The asterisk (*) is replaced by the link text from the source code.
| Prefix: | The protocol prefix. You can use any character sequence here, but it is recommended to trail it with a colon. |
| End of Link: | Configures how the end of the link is detected after the protocol was recognized:
Note that your link text may use single or double quotes directly after the protocol prefix to override Space or Default. |
| Regular Expression: |
(only available if End of Link is set to Regular Expression) |
| Description | Just so you recognize what this was supposed to do. |
| URL Escape: | Escapes the link text according to URL rules, which is usually necessary when your target is a URL. |
| Confirm Execution: | Shows a confirmation box before running the command. Recommended if you are doing something irreversible or dangerous, or prefer being asked. |
| Expand Environment Strings: | if checked, environment strings in the URL/exe parameter are expanded before calling ShellExecute. This allows generic references such as %PROGRAMFILES%\SomeTool\SomeTool.exe, and other trickery. |
| URL/EXE: Arguments: |
filename and arguments parameters for ShellExecute / ProcessStartInfo. The first takes an executable and URL or a document path. If you specify an executable, you may also want to specify the command line arguments for it. |
| Utility URL: |
A link to more information / installation instructions for the prefix. The link is displayed when an error occurs or you enable Test Mode. If the prefix calls a custom tool, you could link to installaiton instructions here. Also, you could provide a page with additional details here. |
| More/Export... | Exports your settings to a file so you can move it to another PC. |
| More/Import... | Imports settings from a file. You can replace all existing protocols, add or merge them. |
| More/Add Defaults... | Adds the default (sample) protocols to the list, in case you deleted them but want them back. |
| More/Shift forces Config... | Enables / Disables going directly to the configuration dialog when Shift is pressed while clicking on Linkify. (on by default) |
| More/Test Mode... | Enables / Disables and extended confirmation dialog for all protocols (overrides the Confirm Execution option). This dialog contains additional information on what was recognized on the line and is intended for testing. |
| More/About... | Puts Linkify in power save mode to prevent global warming. (to be implemented) |
The link text parser is all-ugly manual scanning for specific characters. I'm quite happy with the results, but YMMV.
The End of Link setting now determines how the link is recognized.
) . or ; The settings Space and Default allow single or double quotes to enclose an expresison that does contain terminating characters:
google:"Visual Studio 2005" searches for Visual Studio 2005 (no quotes). google:'"Visual Studio 2005"' searches for "Visual Studio 2005" (with quotes). Source code is included with this add-in, although it isn't recommended reading (FxCop would probably handcuff me). It was a bit tricky to extract the text under the cursor using a sequence of manipulations to the current selection. I've changed that now to extracting the entire line and selection positions and working my way from there.
Visual Studio allows add-ins to save settings in a Globals object, but I found that this works only for strings. Since the settings class is serializable, I serialize to a memory stream and then convert the contents to a base-64 string. It's weird, I know, but I wanted to avoid any Unicode troubles. The settings can be imported from and exported to a file through the configuration dialog. The remaining code (configuration form, etc.) is pretty much straightforward. Most of the initialization is code created by the add-in wizard. If you are curious, you can diff my code against a default add-in wizard-generated project.
To search articles on The Code Project, you can add the following settings:
cp: http://www.codeproject.com/info/search.aspx?artkw=*&sbo=kw cpian: http://www.codeproject.com/info/search.aspx?st=au&target=* cp:Linkify will search for articles containing Linkify cpian:shog9 will search for articles by shog9 It doesn't make much sense; it's just a little tribute...
The add-in in binary form is free for any use (including development of a commercial application) and may be redistributed without charge, as long as it remains unmodified and the copyright notice stays intact. Source code of the add-in itself is free for non-commercial use. Please share bug fixes and improvements here. Inclusion in commercial add-ins on request.
Enjoy!
// (bugz:765) now works, which was driving me crazy! * Note: if I accidentally broke your existing links, first see if changing the configuration for that protocol helps. If not, please leave a message with the protocol prefix and the comment line in question.
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 2 Aug 2008 Editor: Chris Maunder |
Copyright 2006 by peterchen Everything else Copyright © CodeProject, 1999-2009 Web18 | Advertise on the Code Project |