Stay Frosty - Constructor and Method Block Highlighter, Text Clarity and Customization for Visual Studio

Stay Frosty - Making Visual Studio a little more gooey!
Stay Frosty is an extension for Visual Studio to make navigating and identifying important parts of your code easier. It also provides a series of enhancements and enables additional customization of the Visual Studio text editor.
Stay Frosty supports C# 6.0 in Visual Studio 2015 and does code parsing using Roslyn or NRefactory (Visual Studio 2013).
Code Borders
  • Configurable Borders around:
    • Methods
    • Static Methods
    • Constructors
  • Method Signature Display up the left hand side of bordered methods who's signature has scrolled off screen. This feature can be enabled to display always.
    • Signatures can be shrunk to a desired size and opacity can be set on each.
  • Support for ReSharper color schemes (disabled by default, see options)
  • Extremely accurate - Code is parsed with either NRefactory (for Visual Studio 2013) or Roslyn (Visual Studio 2015). This ensures that any valid C# method is recognized, including new C# 6.0 lambda methods.
  • Performant - Code parsing is expensive so it's done only when necessary and while typing it gets out of your way.
Text Clarity
  • Configure Font Rendering Style for the Text Editor (ClearType, Greyscale, Aliased, None)
  • Add a Chiseled Effect to Code Text
    • You can tweak every element of the effect to adjust to your liking
    • Only works if Hardware Acceleration is enabled (A very lightweight PixelShader 2.0 shader effect is used which is capable of being rendered in software only, however, Visual Studio does not render it properly if hardware acceleration is disabled)
  • Tweak the various things you can change in WPF that aren't exposed in the Visual Studio editor (like Text Sharp)
Customization
  • Change the Text Editor Background
  • All colors for method backgrounds, borders and the like can have alpha set on them to blend them perfectly with your editor style
  • Add an image to the background of the Text Editor
    • Can be anchored to any corner
    • Opacity can be adjusted to keep it from interfering with code
  • Combined with the editor background override, a very simple image without transparency can be used with a matched background color.
Limitations / Other Considerations
  • The Chisel/Bevel effect does not render properly if Hardware Acceleration is not enabled. Go to Tools|Options General to enable Hardware Acceleration on supported hardware.
  • If ReSharper Color Identifiers is enabled but ReSharper is not installed, code highlighting of the Method Signature displayed on the left hand side of the border will default to "Identifiers" for most values. Disable this feature to have Stay Frosty use "User *" values
  • Where available, Stay Frosty will use "User Classes", "User Interfaces", "User Enums" and other "User *" values for syntax highlighting. Normally this is used only in the class, interface, enum and other declarations, not in their usages. This causes the method signature on the left to look slightly different from the displayed item at the top. If you don't like the display, you can change the color for these values (if present), to the Identifier color and it will match what is displayed. The clarity provided by the additional coloring was worth the trade off.
  • In order to provide the highest performance, parsing of code is done after a brief delay in typing. Methods that have serious problems with validation will not be properly displayed (usually only occurs if you have brace matching issues). For extremely large files, it may take a second to parse in the Visual Studio 2013 version so your method border may be wrong while that's happening.
Limitations of the 2013 version
  • The 2013 version uses more CPU and takes longer to parse code due to its usage of the NRefactory library instead of Roslyn. NRefactory is effectively a dead project so I don't see this improving much.
  • Attributes attached to methods are not included in the method border on the 2013 version due to NRefactory not treating attributes as part of an unresolved method definition. I'm not sure which I prefer more in that regard.
  • NRefactory provides no native way to cancel a parse in progress, which also runs synchronously. I am using thread aborts to stop the parsing when text changes during a parse operation. I haven't seen any ill effects of this method yet, however, I expect some resources aren't released perfectly all the time.
  • The 2013 version will be feature frozen. No additional development beyond bug fixes will occur for this version
Coming Soon
  • Return statement highlighting to make code using the Boncer Pattern easier to follow.
  • Property borders for properties that use the older get/set (will be disabled by default).
  • Tweaks to the region display to make them less annoying (#IHateRegions until then)
  • XML Documentation beautifying/decluttering - when XML Docs are not being edited, they'll be displayed in a minimal amount of space, highlighted without XML tags.
Support and License

See License.txt for license information. Most of the application is licensed under the Apache 2.0 license. NRefactory, used in the Visual Studio 2013 version, is licensed under the MIT license. Source code for StayFrosty will be available on GitHub in the near future.

If you're so inclined, I always accept donations for the project. You can donate via PayPal here.

There is no support provided for this extension. As mentioned in the license, the extension is provided AS IS with no warranty expressed or implied. See license for details.

Suggestions for Improvements

If you have suggestions for improvements, please add them to the appropriate page for this extension on Microsoft's Extension Gallery, comment on http://matthewdippel.blogspot.com/2015/08/stay-frosty-making-visual-studio-little.html or send an e-mail to matthew dot dippel at that famous mail service provided by Google. I'd love to hear from you!

What's up With that Title?
It came from a line written in a blog post by Scott Hanselman. For some reason, that phrase just stuck out in my head and I've been following his blog for so long I thought it would be a nice way to say "thanks" for years of useful information that I've enjoyed reading. So, if you're reading this, Thanks, Mr. Hanselman! Download the Visual Studio 2015 Edition
Download the Visual Studio 2013 Edition

No comments: