Thursday, November 14, 2013

Cool Blog Post Titled "What is a Full Stack Developer?"

Hey everyone. I just wanted to share a link to a really cool blog post titled What is a Full Stack Developer?. Hope you enjoy the post.

Thursday, October 24, 2013

AllMargins 2012 v2.8.x Releases

On 1 September 2013 I released version 2.8 of the AllMargins 2012 Visual Studio extension. Since that release, there have been two additional "dot" releases. Briefly, here's what v2.8.x has to offer:

  • Visual Studio 2013 RC and RTM support
  • All the registry value names for the extension's settings have been renamed to prevent naming conflicts with the Productivity Power Tools for Visual Studio 2012 and beyond (more on that below)
  • Fixed the registry value name for method separator line color
  • Fixed the StructureAdornment extension so that method separator lines are drawn using the specified color
  • Added C/C++ union support

Extension Option Registry Value Name Clashes

David Pugh (MSFT) ported a lot (but not all) of the functionality of the original AllMargins extension into the Productivity Power Tools for Visual Studio 2012. The extension option registry value names were left the same. So, when I re-released the AllMargins extension as AllMargins2012, the two extensions would step over each other in terms of their settings for the common extensions. Starting with v2.8, the registry value names have changed to prevent this. As a result, those who installed v2.7 and subsequently customized the extension options by editing the registry, upon installing v2.8, will see that the extension is using the default values for all settings—it appears as though your customizations were changed. They are not. They are still present in the registry. However, new settings are now used by the AllMargins 2012 extension. You need only copy the setting value from the v2.7 registry value to the new v2.8 registry value. I apologize for the inconvenience.

For more details about what the various registry settings are, and their old and new names, see the description tab for the extension at the Visual Studio Gallery.

What to expect in the next major release

Many have spoken, including myself, about what you would like to see in the next major release. Work is underway; here is a quick rundown of what to expect (of course, this is subject to change—nothing is set in stone unless otherwise noted):

  • The ability to set the extension's options from the Visual Studio Tools|Options dialog. This is a top priority, non-negotiable item for the next major release. I have been wanting this very feature myself since David Pugh originally wrote this extension. Now that I'm maintaining this code base, this task falls on me.
  • The ability to specify the line widths displayed in the editor for the StructureAdornment extension
  • Add an option to show/hide the StructureMargin preview tool tip

The items above are what I can reasonably expect to fit into the next major release, though only the first item is guaranteed to make it through. Whatever doesn't make it through will be in a follow-up release. One item that is a planned feature for a future release is the availability to select a color theme for the StructureMargin and StructureAdornment extensions. As many have noted, and I agree, the "default" colors don't work well with Visual Studio 2012's dark theme. In addition, I plan on changing the default color for the class structure adornment from black to some other color, because with the Visual Studio light theme the black line can cause exclamation points to appear to not be present in C# and C/C++ preprocessor statements (e.g. #define !SOME_PREPROCESSOR_VAR), as one user pointed out to me. Black was the original color used by David Pugh—but due to this potential problem, it's best if this color is changed.

If there are any other features you'd like to see, please feel free to leave a comment here on my blog or on the Q AND A tab at Visual Studio Gallery. Thanks again for all of your comments, feedback, suggestions, and ratings!

Saturday, January 19, 2013

Announcing the Release of AllMargins for Visual Studio 2012

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.