On Feb 12, 2007, at 10:44 AM, subtleGradient / Thomas Aylott wrote:
A major goal of all the scoping standardizationstuff we do in the syntaxes is to make it really easy so make a single theme that can be used for any language. Unfortunately, the reality is that languages are really complex and it takes work to make a theme look good in more than a few languages. And then more work to keep that theme looking good as the languages syntaxes are updated and improved.
I've got to disagree here, I think now that we have standardized scopes it should definitely be possible. Perhaps you can make a 'perfect' theme for a language sure, but I think this is the wrong approach. The whole concept in TextMate has been to make this generic whenever possible to allow reuse. The language grammars are a good example of this. Sure there are a few things you can't do quite right in some languages, but in the long run we're better off with a generic format than lots of special rules thought up for specific languages.
There are exceptions to this, I think some groups of languages take special handling. Markup languages can need special rules for instance, and I think regular expressions as a whole can use a lot of special cases. But I don't think any language is by itself unique enough to need it's own rules for the most part. My intent is to make Twilight much better than it is now while lessening the special rules it has, I don't think I'll have many problems doing so. (Of course we'll see when I get further along. ;)
The advantage of doing a version of an existing deep theme is that you get a new style without having to do all the coding of the random edge cases. It looks pretty without losing any theme-based functionality.
I agree here, re-using a theme is massively helpful. It's the main reason a light version of Twilight doesn't exist, I don't want to keep them in sync until I'm happy with Twilight.
Have you ever user ShapeShifter? There are all these OS themes that you can use to change the look of the chrome on all the windows and dock and whatever else on your system. There's also a new tool you can use to make a tweaked version of an existing theme. You can apply core image tweaks to all of the images in the theme and save out a tweaked version of a theme.
I think there are three kinds of theme editors…
1. Minor editors: The person who edits just the few things they don't like, or adds a rule or two. 2. Theme recyclers: The person that takes another theme and leaves the structure wholly the same, changing only the colors/weight/etc. 3. From scratch.
For the minor editors I think some way similar to the bundle editor would be nice, so they don't lose other updates to the theme as they add/change the few things.
For the theme recyclers I could foresee some help, because keeping a theme in sync once you've branched it off is near impossible. I'd be nice if there was a way to have a master 'structure' file of some sort and any changes make to it would apply to the 'child themes' below, so we could keep the versions in sync. The problem I see with this is how to really make it all work and worst of all it's ui.
Ideally I think most people don't understand enough about the way various scopes interact to make a theme structure that works well except for the languages they use. So I think good templates are going to be important. Being able to make a theme from a template and then it receive structural changes later on would be quite sweet.