With a new year just beginning, it's always nice to start things out on the right foot and open-source is no exception.
Several years ago, I developed a popular extension for Visual Studio called Glyphfriend. It's a handy tool for developers and designers alike that enjoy using the wide range of icon families out there within their applications:
With two little ones running around and growing up so fast, free time can be harder and harder to come by. But after a year of folks asking for it, a bit of lost sleep, and some bruises from banging my head against some new APIs, Glyphfriend is finally here for Visual Studio 2019!.
(You can download it here)
What is Glyphfriend?
Glyphfriend is an open-source Visual Studio extension to enhance the existing IntelliSense to display preview glyphs for many of the common glyph-based font libraries like Font Awesome, Material Design, Ionic, and more. If you read my blog enough, you know I love bullet-ed lists, so why not one for this:
- Multiple Supported Glyph Libraries - Access near 8000 glyphs from your favorites including Font Awesome, Material Design, Ionic, Foundation, and many, many more
- Library Toggling - Avoid being bogged down by the thousands of glyphs when you start typing by selecting only the libraries that you commonly use. Glyphfriend will remember your favorites every time that you open Visual Studio, and accessing another library is just a click away.
- Only When You Need It - The extension will only decide to chime in when you open a valid HTML-flavored document and start using it within a class attribute. So you don't have to worry about writing some C#, F#, or (god forbid) Visual Basic and having glyphs invade your screen.
- Open Source - The extension is completely open source and accepts contributors. The community has created really awesome things in the past (such as separate plug-in for the Resharper extension) and much more.
What's New in It?
While there's still quite a lot to do in the backlog, the primary feature for this new release is simply the support for Visual Studio 2019 and a bit of housecleaning that I'll detail below:
- Visual Studio 2019 Support - Glyphfriend now has an extension that supports Visual Studio 2019. There were a ton of major API changes between the 2017 and 2019 release that basically required writing an entire new extension, so I did.
- Performance Improvements - Obviously with an entirely rewritten extension, there were tons of changes, most of which were for the better. The newer APIs relied more heavily on asynchronous calls and more deliberate patterns surrounding threading (e.g. switching from the UI thread and vice-versa).
- Putting 2015 and 2017 Out To Pasture (Not Really) - Due to the major API changes, the project structure shifted quite a bit. All of the code that the earlier version of the extension relied upon has now been moved from the
Glyphfriend.Coreshared project to one titled
Glyphfriend.Core.Legacy, which should serve to distinguish between the major API changes.
In terms of what this extension focuses on, the migration between the older APIs and the newer ones was rife with challenges and "gotchas". I'd like to offer a huge thank you and shout-out to several members of the Visual Studio team: Mads Kristensen, Taylor Mullen, and Christian Gunderman that made this possible.
Check It Out!
Glyphfriend has a separate extension for both Visual Studio 2015, Visual Studio 2017, Visual Studio 2019, so to get started, you'll simply need to download the version(s) that apply to you from the Visual Studio Marketplace:
You can also just search for it within the Tools > Extensions and Updates or Extensions > Manage Extensions area of Visual Studio to get started and installed.
Pull Requests are openly accepted and encouraged.
The libraries that were chosen were just some of the more common ones that I had come across, but I am sure that I left quite a few out. If you find that one of your favorites is missing, you can either report it within the Issues area or just clone the repository, make a fork and add your changes (and then just make a pull request when you are all done).