#Wishlist
I would love to have a workflow like this: * extract a listing of scopes from a bundle * create a set of styles * and then have a listing with styles on the left, scopes on the right with some form of connectors between them to assogn styles OR definitely some way to see which scopes have which styles applied * (and possibly some way to easily change a *whole theme's colors*: like convert all R values to G values… ;))
A thing I have noticed during my attempts to get some more specific styling for my LaTeX stuff is that there are so many themes out now, and so many bundles it is almost impossible to create a theme that *really* applies to all languages. What would be very useful to try and play with themes would be some way to assign relationships between scope selectors for themes to substitute missing elements. This would look like some list that a user or a bundle could provide which says:
“if your theme does NOT know about meta.scope.obscure then please have it handled like meta.scope.common, as these are related or at least the style markup would indicate a similar importance.” Possibly add some way of indicating those *placeholder* assignments in the theme editor by creating blanks that could be filled in or so.
(This would in a way be similar to a situation where bundles do not use their own but a limited namespace. But would also allow for a much more sophisticated access for styling as well as for mixed language situations or for purely aesthetic reasons [like in Brilliance Black where you have different color “mini-themes” for different bundles/languages]).
Am I still making sense?
Dan
PS: I do realize this will end up very low on the “wishlist” ;)
Hey,
did you check out the [brilliant themes][1] by Thomas Aylott? They are a nice starting point for theming (as intended by Thomas).
As for
- extract a listing of scopes from a bundle
- (and possibly some way to easily change a *whole theme's colors*:
like convert all R values to G values… ;))
This could be done with some shell commands I think. You could try to make a theme editor that works independent of TextMate, also :) the themes are `XML Property List` files so parsing and generating should be no problem at all.
I bet your Wishlist is not really of high priority to Allan (and others waiting for certain features). Sorry, I don't mean to discourage you…
Soryu.
Aloha Soryu,
did you check out the [brilliant themes][1] by Thomas Aylott? They are a nice starting point for theming (as intended by Thomas).
That's what I am using for a start (Brilliance Black). I just got confused by Allan's comment on the cool highlighting for mails since BB does not really color quotes in emails. Nevertheless are Thomas's themes by far the most complete out there -- its just that it seems so difficult to create a theme that works for all; scope names etc. are very different, can always change and somehow it seems every user of Textmate has different requirements making it very difficult to start such a thing at all; Kudos to Thomas for actually making these “omnipotent” themes.
As for
- extract a listing of scopes from a bundle
- (and possibly some way to easily change a *whole theme's
colors*: like convert all R values to G values… ;))
This could be done with some shell commands I think. You could try to make a theme editor that works independent of TextMate, also :) the themes are `XML Property List` files so parsing and generating should be no problem at all.
1. Shell script: I guess so, it would probably be quite easy for someone speaking perl… ;) but: 2. it would be great to have that theme editor. I have seen that the file format for themes is very open and accessible; it should not be that difficult to hack some lines of a Cocoa app together to do this, I guess, at which point the shell script from 1. will come in handy.
I bet your Wish list is not really of high priority to Allan (and others waiting for certain features). Sorry, I don't mean to discourage you…
I know ;) But I can wish -- or give some programmer/hacker here some ideas and lust for rolling their own. I would love to do it myself, but then there is more important work to do. Talk to me again in August/September… although I do have a list of some apps now that I would love to write… mh.
Dan
That's what I am using for a start (Brilliance Black). I just got confused by Allan's comment on the cool highlighting for mails since BB does not really color quotes in emails.
I'll fix that!
Nevertheless are Thomas's themes by far the most complete out there -- its just that it seems so difficult to create a theme that works for all; scope names etc. are very different, can always change and somehow it seems every user of Textmate has different requirements making it very difficult to start such a thing at all; Kudos to Thomas for actually making these “omnipotent” themes.
Thanks much much!
The Brilliance series was not too easy. I think I spend about 12-15 hours on them so far. Probably more. (I'll send you the bill later, Allan ;)
There is a lot of divergence in scope naming among and between languages and bundles. It gets even more confusing when you have a language like HTML that can include every other language in the same file. It took quite a bit of tweaking to make sure all this stuff doesn't look like total carp together.
That's why I chose to style HTML so blandly in Brilliance. The xHTML Strict language is much more colorful.
I had been planning on slowly helping the various languages and themes correct their confusing and inconsistent cope usage. But I just don't have the time these days.
The Brilliance themes should just need you to change the colors and not worry about the scopes. That was the intention, anyway.
I'm going to come out with a blank slate theme soon. Brilliance Gray. Where everything is just a shade of gray. That would make it easier to color, maybe. What do you think?
thomas Aylott—subtleGradient—oblivious@subtleGradient.com
did you check out the [brilliant themes][1] by Thomas Aylott? They are a nice starting point for theming (as intended by Thomas).
The brilliant themes are great. But they don't seem to have much beyond the basics for PHP or SQL, has anybody have a modified Brilliance Black in this direction?
Q
did you check out the [brilliant themes][1] by Thomas Aylott? They are a nice starting point for theming (as intended by Thomas).
The brilliant themes are great. But they don't seem to have much beyond the basics for PHP or SQL, has anybody have a modified Brilliance Black in this direction?
Q
Howdy./
Thanks much!
The Brilliance themes are all still in beta. But I did recently add support for PHP. You can checkout the changelog RSS feed for my personal bundles to stay up to date with my themes and stuff. feed://trippledoubleyou.subtlegradient.com/textmate/taylott_svnlog.rss
The subversion repo for my themes and bundles is: http://textmate.svn.subtlegradient.com/
And the Brilliance Black theme itself is: http://textmate.svn.subtlegradient.com/Themes/Brilliance%20Black% 20BETA.tmTheme
You'll notice that I'm also working on Brilliance Dull, Brilliance White & Brilliance Reversed (black and white).
If you send me a simple file of anything that is styled wrong or ugly or just not well enough, I'll update the theme. The goal is that these themes support every language as well as possible.
Note: I just recently added support for advanced xHTML stuff, PHP & LaTeX.
I should have done SQL strait from the beginning. Oy!
Thanks SO much for your interest. The more people that like it the more often i'll update it. If you want me to do anything, please bug me about it or I'll thing no one cares.
Thanks!
thomas Aylott subtleGradient oblivious@subtleGradient.com
Thomas,
The subversion repo for my themes and bundles is: http://textmate.svn.subtlegradient.com/
Is there a way to check out your bundles into “/Library/ ApplicationSupport/TextMate/Themes”? (Sorry to ask, I am not *that* familiar with svn ;))
Dan
The subversion repo for my themes and bundles is: http://textmate.svn.subtlegradient.com/
Is there a way to check out your bundles into “/Library/ ApplicationSupport/TextMate/Themes”? (Sorry to ask, I am not *that* familiar with svn ;))
I would suggest just grabbing the individual files that you want. If you really want to grab all my random themes you can do a checkout to your HOME library. Like so: svn checkout http://textmate.svn.subtlegradient.com/Themes ~/Library/ Application\ Support/textmate/themes
That will create the textmate and themes folders if they doesn't exist and grab the latest of every theme I have. Most of them are too ugly for most humans ;)
Then to grab the latest version later, you can do this: svn up ~/Library/Application\ Support/textmate/themes
Assuming you have subversion installed, of course.
I would suggest NOT grabbing everything else unless you know you want it. I'll be migrating the most important stuff into the official TextMate bundles soon.
thomas Aylott—subtleGradient—oblivious@subtleGradient.com
On 6/4/2006, at 22:35, Daniel Käsmayr wrote:
- extract a listing of scopes from a bundle
I got a little carried away. Attached below is a Theme Builder bundle, it has one command which generates and switches to a random theme which will target all scopes of the current language (including languages which may be embedded in that).
[...] “if your theme does NOT know about meta.scope.obscure then please have it handled like meta.scope.common, as these are related or at least the style markup would indicate a similar importance.”
This is why the scopes are hierarchical.
So in this case, one would use meta.scope.common.obscure -- a theme can then target this specifically, or it can settle with styling meta.scope.common, and obscure will then get that setting.
An actual example of this is how URLs are scoped as markup.underline.link. So if the theme has no setting for that, it will just be underlined (assuming that there is a style for markup.underline).
Ideally a theme should only need to style the following scopes: comment, constant, entity, keyword, storage, string, support, and variable.
This is why I am actually against things like “extract all current scopes” (despite the attached bundle), because 90% of the time, the language should rather be “fixed” (in its use of scope names) rather than have the theme specifically address a given language.
It is however hard to try and find a common naming scheme when we support almost 100 languages, varying from markup, to procedural, to OO, to functional, to even things like emails.
I got a little carried away. Attached below is a Theme Builder bundle, it has one command which generates and switches to a random theme which will target all scopes of the current language (including languages which may be embedded in that).
It does not do anything on my machine?
[...] “if your theme does NOT know about meta.scope.obscure then please have it handled like meta.scope.common, as these are related or at least the style markup would indicate a similar importance.”
This is why the scopes are hierarchical.
Yes, if only the meanings would be as well. I was thinking about something like “this needs to be marked up like it was VERY important, i.e. INVALID even though it is not invalid”
Ideally a theme should only need to style the following scopes: comment, constant, entity, keyword, storage, string, support, and variable.
Yes, I see your point. But then I am looking for some more specific stuff ;) Why not use the functionality if we have it? ;)
Dan
I got a little carried away. Attached below is a Theme Builder bundle, it has one command which generates and switches to a random theme which will target all scopes of the current language (including languages which may be embedded in that).
It does not do anything on my machine?
I had to modified the script at bit to make it work: require 'rubygems'
before the other require's in the script and also install the plist gem (which wasn't installed on my machine) from the shell,
sudo gem install plist
then it worked for me
Martin
On 7/4/2006, at 11:41, Martin Ström wrote:
I got a little carried away. Attached below is a Theme Builder bundle, it has one command which generates and switches to a random theme which will target all scopes of the current language (including languages which may be embedded in that).
It does not do anything on my machine?
Try change output of command to tool tip or window, to see if there is any.
I had to modified the script at bit to make it work: require 'rubygems'
before the other require's in the script and also install the plist gem (which wasn't installed on my machine) from the shell,
The plist extension comes with TextMate. That’s why I added TM_SUPPORT_PATH/lib to the include path. I have no idea what require 'rubygems' should do for the script -- it does however need Ruby 1.8.
Daniel Käsmayr wrote:
It does not do anything on my machine?
I'm not exactly sure what the problem is, as I don't really use Ruby, but the script runs fine in RubyMate, but when run as a command, it gives an error:
tmp/temp_textmate.dRRsyM:6:in `require': No such file to load -- plist (LoadError) from /tmp/temp_textmate.dRRsyM:6
Someone know how to get loading plist working when we run as a command?
-Jacob
On 7/4/2006, at 12:03, Jacob Rus wrote:
I'm not exactly sure what the problem is, as I don't really use Ruby, but the script runs fine in RubyMate, but when run as a command, it gives an error:
tmp/temp_textmate.dRRsyM:6:in `require': No such file to load
-- plist (LoadError) from /tmp/temp_textmate.dRRsyM:6
Someone know how to get loading plist working when we run as a command?
Ah well… remove the first $: << … line and change require 'plist' to:
require "#{ENV['TM_SUPPORT_PATH']}/lib/plist"
On 7/4/2006, at 10:10, Daniel Käsmayr wrote:
[...] “if your theme does NOT know about meta.scope.obscure then please have it handled like meta.scope.common, as these are related or at least the style markup would indicate a similar importance.”
This is why the scopes are hierarchical.
Yes, if only the meanings would be as well. I was thinking about something like “this needs to be marked up like it was VERY important, i.e. INVALID even though it is not invalid”
We do have invalid.deprecated and invalid.illegal, where the former isn’t really invalid (but will look that way, unless the theme has a deprecated style).
As for “this is very important”, where does that fit into programming languages and/or markup languages? I mean, isn’t it very subjective what is the more important thing?
There are some naming conventions which show the intent of the current names in use:
http://macromates.com/textmate/manual/ language_grammars#naming_conventions
You are of course welcome to suggest changes.