Glyphfriend 2.1 Released! Now with Library Filtering

It hasn't been too long since the latest 2.0 release of Glyphfriend, but with the release of Visual Studio 2017 coming around the corner, there were a few things that could use some improvement and polishing off before then.

What's New?

  • Support for Library Filtering
    • You can now easily select the libraries that you wish to use with Glyphfriend by simply right-clicking within an HTML file and choosing them. The Bootstrap Glyphicons are enabled by default, but any other libraries can easily be added with a single click. These preferences will persist even after closing Visual Studio and starting a new session.
  • Updated Font Awesome Library to 4.7.0
    • Updated Font Awesome to the latest version and added all of the glyphs that were included within the 4.7.0 release.
  • Updated Octicons Library to 5.0.1
    • Updated Octicons to the latest version and added all of the glyphs that were included within the 5.0.1 release.
  • Resolved Visual Studio Race Condition
  • This release resolves the NullReferenceException that would occur occasionally when using Glyphfriend. This was the result of a race condition within Visual Studio that could cause the glyphs to be requested prior to them being loaded.
  • Resolved Suggested Extensions Bug
  • Since Glyphfriend is one of Visual Studio's recommend extensions, it may often suggest it to users that it feels might find it useful. During many of the large changes to the project, this process became out of sync and could result in issues where users would be perpetually recommended the extension, this release resolves that problem.
  • Added Logging Support
  • This feature is primarily for my sanity so that I can pick up if certain events aren't being executed and better troubleshoot issues as they arise.
  • Consolidated Project Structure
  • Further improvements were made to consolidate all of the core logic of Glyphfriend into the Glyphfriend.Core project, so that any changes can be made within a central location targeting both versions of the extension (VS2015 and VS2017). This functions as a Shared Project, allowing 100% of the code to be shared between the extensions.
  • General Cleanup
    • Several changes were made to make the Glyphfriend installer and package itself more efficient, namely with regards to size, by removing unnecessary references that were being included within it. This ultimately resulted in reducing the size of the extension by nearly 60%!

Introducing Library Filtering

One of the issues that very quickly arose after the previous release of Glyphfriend was the noise, which was quickly pointed out in a response on reddit:

So any HTML file will have its auto completion filled to the brim with thousands of glyph classes regardless of whether any let alone all of them are actually available?

That doesn't really sound like an improvement to me.

Message received, loud and clear.

All of the changes that were made to make the extension more flexible actually resulted in it being more noisy. Glyphfriend would just serve everything it knew about. This has generally been regarded as a bad move, and thus library filtering is how I went about fixing this.

Library filtering allows you to easily toggle which libraries you want to use, and it will persist across Visual Studio sessions. This updated version of the extension will now allow you to right-click on any supported file (i.e. HTML, CSHTML, etc.) and you'll see a Glyphfriend context menu containing all of the supported libraries:

Glyphfriend Context Menu

By default, only Bootstrap Glyphicons are enabled, but you can simply select one of the other items, and all of the available icons for that library will now be accessible through Visual Studio's autocompletion events as demonstrated below:

Glyphfriend Toggling Support

Glyphfriend will remember these settings and persist them even after you close Visual Studio.

The hope is that this feature tones down some of the noise that the extension was making; making it more specific to your needs and much easier to use.