Hi Allan,
Thanks very much for the response. I tried it and fiddled with it a lot but I couldn't get this working.
On 3/1/07, Allan Odgaard throw-away-1@macromates.com wrote:
On 1. Mar 2007, at 21:32, Peter Michaux wrote:
In JavaScript I would like every instance of the word "self" and "parent" to be orange except when they appear as "window.self" or "window.parent". How can I specify these. What I have so far is...
Instead of one rule, make two:
{ match = '\b(window)\.(this|parent)\b'; captures = { 1 = { name = 'support.class.js'; }; 2 = { name = 'variable.language.this-or-parent.js'; }; }; },
If I try the above rule alone (no other matches in the whole language file) it doesn't seem to work as a way to capture the "this" and "parent" words. I can't style them with the following in the preferences scope selector.
"variable.language.this-or-parent.js".
Did the above work for you?
{ name = 'variable.language.js'; match = '\b(super|this|parent)\b'; }
The first one explicitly matches window.this and window.parent. This and parent is still marked up as variable.language, so with no theme modifications, it will show the same.
But you can now style all but window.(this|parent) using a scope selector of:
variable.language - variable.language.this-or-parent
WOW! it is possible to subtract scopes? That is very cool!
Likewise you can style just window.(this|parent) with:
variable.language.this-or-parent
By the way, I just spent two days trying to learn VIM for a work situation. What a waste of my time. I think it would take me a year of plugin programming to get VIM to a state of productivity not quite matching Textmate. Textmate is a far better solution.
Thanks, Peter