microsoft / VS-ColorThemes

Visual Studio Extension that installs additional color themes
https://marketplace.visualstudio.com/items?itemName=JustinClareburtMSFT.ColorThemesforVisualStudio
MIT License
335 stars 89 forks source link

Rainglow support? #55

Open Tim-Machine opened 5 years ago

Tim-Machine commented 5 years ago

So I've been trying to wrap my head around away to get rainglow support in this system. If you don't know about rain glow you can check it out here https://github.com/rainglow/vs .

I could write a "transpiler" of sorts but that raises some questions around how the GUIDS are generated and keeping ThemeRegistration.pkgdef up to date. Do you even want to track 320 + themes in this repo? What are some other options?

Looking at the license redistributing the themes is possible, I just want to make sure this is the right option before I write the tools required to transpile their themes into the format that is currently being used.

justcla commented 5 years ago

Hi Tim. Sounds interesting. I like the idea of making all the themes available, but I think it would be overwhelming to have over 320 themes to choose from in the extension. Perhaps you could convert some of the most popular Rainglow themes and then we could bundle those in with the extension so they'll be available for all users who install it. For the rest of the themes, if you were able to convert them to propper VS themes and simply make the .vssettings files available (here on this repo, or on the rainglow repo), then users would be able to selectively grab the ones they want. Would that work?

Tim-Machine commented 5 years ago

That is something that could work but I personally have no way to quantify which themes are the most popular. I am wondering, is there a way to do an adhoc solution? EG: use a direct url to a template (https://github.com/rainglow/vs/blob/master/themes/Allure%20(rainglow).vssettings) and have it use that as the theme. Now of course These themes would have already been converted to the XML format and not the .vssettings config. Its not the best solution but allows more flexibility.

For my own knowledge, whats the importance of registering themes? Is reading the Theme directory in real time not an option? It seems the current implementation is not scalable compared to options that exist for say something like VS Code.

justcla commented 5 years ago

For my own knowledge, whats the importance of registering themes? Is reading the Theme directory in real time not an option? It seems the current implementation is not scalable compared to options that exist for say something like VS Code.

I don't know the history, but the way it works is that VS reads the list of known themes from its registry entries. So, if you want to be able to select a theme, it has to registered (via pkgdef).

As such, the first suggestion (link to themes via URL) doesn't work.

But even if it did work, it would still be overwhelming to select a theme from a list of 300+.

So coming back to the main issue, if there are a few popular ones, then let's include them. Otherwise, it's just noise.

We could talk about what options there are for detecting most popular theme. Where are these themes being used today, and by whom?

Tim-Machine commented 5 years ago

Most popular

So, If we look at the use case for VS Code there are currently 47K installs (not sure if unique) https://marketplace.visualstudio.com/items?itemName=daylerees.rainglow . But this installs all of the themes. So that doesn't help with detecting the most popular. For every IDE all 320+ are installed at one time so there is no way that I know of to detect the most popular. I'll reach out to the rainglow creator and see if he has any details.

Where they are being used

Rainglow themes also exist for most IDEs, all jetbrain stuff, atom, eclipse. You can see all the repos here https://github.com/rainglow . Currently vscode is sitting at 853 stars, jetbrains 997 stars, after that it falls off pertty hard.

justcla commented 5 years ago

Well, how about we make a separate Visual Studio extension that installs all the Rainglow themes? That way it won't clutter the list for users who want the current (smaller) set of additional themes. And for those users who do want Rainglow, they'll get them all (which seems like the regular way for Rainglow users to play the game).

justcla commented 5 years ago

This repo provides an example of how to create an extension with themes. (Make sure to change the Guids!) If you can write the program to convert all the themes to VS-style, then you can add them all into the extension. You can then publish the extension on the Marketplace. Let me know if you need any help.

Tim-Machine commented 5 years ago

havent had my coffee yet but these are the questions I have right now.

justcla commented 5 years ago

Good work. I haven't had my coffee yet either, but here's some answers:

Tim-Machine commented 5 years ago
  • What theme properties??

Specifically talking about defined properties in the xml. Example below.

 <Color Name="HyperlinkHover">
        <Foreground Type="CT_RAW" Source="FF007ACC" />
 </Color>