Saturday, January 19, 2013

In August of last year, I wrote about upgrading Visual Studio 2010 extensions so that they will work with Visual Studio 2012. In particular, I discussed upgrading the AllMargins Visual Studio extension, which was quite popular.

For some time now, David Pugh of Microsoft has pulled this extension off of Visual Studio Gallery. It is only available if you happened to have downloaded it and saved it to your hard drive or have downloaded the source code (which you can find the link to in the article I wrote back in August). The problem with the source code is that it's a few versions behind the last release that was available on Visual Studio Gallery and contains a few bugs and is missing support for things like C#'s class initializer syntax.

The extension was pulled because David ported most of the functionality into the Visual Studio Productivity Power Tools. However, I'm not a big fan of the particular implementation of the enhanced scrollbar in VSPPT and prefer the AllMargins scrollbar instead.

Today, I'm announcing general availability once again of the AllMargins 2012 extension on Visual Studio Gallery. I modified the available source code, bringing it up to parity with version 2.6, the last available release on Visual Studio Gallery. In addition, I modified the extension so that it will install in Visual Studio 2012. The extension is now at version 2.7.

Thanks to David Pugh at Microsoft for giving the Visual Studio community this wonderful extension and releasing the source code for it a while back!

As I have time, I hope to make a few additions to the extension. Some planned enhancements include providing the ability to change various colors used for drawing the lines in code files delineating various code blocks or for drawing various markers in the overview margin (e.g. drawing a mark for all occurrences in a document of a word under the cursor in the overview margin) right from the Visual Studio Options dialog.

A few notes about AllMargins 2012. First, because the original extension is linked to David Pugh's Windows Live ID, I had to change the identifier of the extension. (This is good, afterall, you wouldn't want Microsoft to allow people to hijack author's extensions possibly replacing them with malicious code, now would you?!) Since the ID, well, identifies the extension, it's essentially a different extension. So I renamed it AllMargins 2012 while I was at it. What this means is that if you want to use this extension in Visual Studio 2010, you must uninstall David Pugh's original AllMargins extension before installing this extension. I don't know what would happen if you have both installed (Double overview scrollbars? Crash Visual Studio?)

I hope that you will continue to find this extension as useful as I have! The Read Me for the top-level AllMargins 2012 extension is presented below.

AllMargins 2012
Introduction:
This is a compilation of the OverviewMargin and several other extensions that use the OverviewMargin. The OverviewMargin shows
a margin on the right side of the editor that logically maps to the entire file (similar the the vertical scroll bar). Unlike
the scroll bar, it maps to the entire file and can contain other margins that provide more information about the file.
Included extensions:
CaretMargin
ErrorsToMarks
MarkersToMarks
OverviewMarginImpl
StructureAdornment
StructureMargin
BlockTagger The definition of an API to get the structure of a code file.
BlockTaggerImpl An implementation of the BlockTaggerAPI for C/C# and VB files.
OverviewMargin The definition of an API for creating margins that map to the entire file.
SettingsStore The definition of an API to load and save editor options across sessions.
SettingsStoreImpl An implementation of the SettingStore API that uses IVsSettingsStore to access the system registry.
Usage:
See other extensions.
Options:
None.
Notes:

The full source for this extension is at http://code.msdn.microsoft.com/OverviewMargin/Release/ProjectReleases.aspx?ReleaseId=3957

The source code is not yet available for download.
History:
v1.0 David Pugh 2/26/2010
Initial release
V1.1 David Pugh 3/4/2010
Updated included extensions.
V1.2 David Pugh 4/19/2010
Updated included extensions.
V1.3 David Pugh 4/20/2010
Updated included extensions.
V1.4 David Pugh 4/22/2010
Updated included extensions.
V1.5 David Pugh 4/27/2010
Updated included extensions.
V1.6 David Pugh 4/28/2010
Updated included extensions to fix VB parser error.
V1.7 David Pugh 4/28/2010
Updated version number to work around install issue.
V1.8 David Pugh 4/28/2010
More VB parse fixes (Public, REM, Interface, Structure).
V1.9 David Pugh 4/28/2010
Updated CaretMargin, VB, C# and C parsers.
V2.0 David Pugh 5/03/2010
Bumped version number to fix installation problem.
V2.1 David Pugh 6/10/2010
Updated OverviewMargin, BlockTagger, StructureAdornment & StructureMargin.
Changed namespaces and DLL names to Microsoft.VisualStudio.Extensions.....
V2.2 David Pugh 6/29/2010
Updated StructureAdornment.
V2.3 David Pugh 6/30/2010
Picked up fix for VB parser, tweaks for structure adornment & margin.
V2.4 David Pugh 7/08/2010
Updated StructureAdornment.
V2.5 David Pugh 7/12/2010
Updated included BlockTaggerImpl to handle C/C# array initializers.
V2.6 David Pugh 7/31/2010
Updated included CaretMargin to fix problem with margin not updating correctly.
Updated included OverviewMarginImpl to fix scrollbar mapping problem.
V2.7 Craig E. Shea 1/16/2013
Added Visual Studio 2012 support.
Removed the attribute MaxVersion="4.0" on the SupportedFrameworkRuntimeEdition element.
Changed the author and description to indicate who is now responsible for the extension and that it is a re-release of a previously available extension.