Fixing Console (and Other) Colors in Aptana Studio 3
One thing that’s both cool and quite annoying at the same time about Aptana Studio 3 is the themes system.
Clearly, Aptana have been looking at editors like Textmate and fallen in love with the brightly colored and bold texts on a black background, and have tried to implement that in Aptana Studio 3.
While I do like Textmate’s dark style theme, I just don’t like the idea when it’s attempted to be implemented in Aptana (Eclipse). So I’ve switched to the “Aptana Studio 2.x” theme which is text-on-white and has more styling of non-ruby code, too. The problem then becomes that your terminal windows (for firing off console commands, gitting, raking and such) become text-on-white, too. And not just that, the text colors aren’t changed to accommodate the white backgrounds, either – so you get 100% on white, which is pretty much impossible to read. And adding insult to injury, there aren’t any apparent way to change the terminal and console colors using the theme editor.
Except, there is. You just have to add the tokens yourself. For fixing the terminal colors, so that you can have text-on-black terminals in a text-on-white theme, you just need to add some tokens to the list. You add a new token by clicking the small [+] button beneath the list of styling elements when in Preferences > Aptana > Themes:
As you can see, I’ve already added the tokens, they’re the ones starting with “ansi.”:
ansi.black ansi.white ansi.gray ansi.magenta ansi.cyan ansi.yellow ansi.blue ansi.green ansi.red
The full list of available tokens that can be added when missing – if you want to also add missing styles for other (markup) languages – can be found here, on the Current Theme Scopes page on the Appcelerator wiki. One thing that’s not mentioned on that page is that there’s a sort of hierarchy defined for the languages, where broadly defined tokens, such as constant.other.symbol (which isn’t even mentioned, btw.) is used where language-specific variants, such as constant.other.symbol.ruby, are missing. This makes it easier to create more generic cross-language directives using fewer keywords