On 30/12/2011, at 19.58, Adam Strzelecki wrote: > […] C grammar […] uses `include = '$base'` […] This works perfectly well for > standalone C or C++ file
I think there might be a few edge-cases. For example using #if 0 / #else / #endif inside @implementation … @end and such. Although this specific example is perhaps a slightly different issue than the self/base one (as what we want there is to include “current context’s rules”). > […] when trying to embed C source into other language we get a problem […] > > I can see two solutions here: > (1) caller should be able to block/change $base […] > (2) callee should be able to specify language grammars that are allowed to be > base for it. > > Or maybe there's already some undocumented solution? I have not thought it through but I think we need to rewrite the current (Objective-)C(++) grammars to be injection based. So we have 4 “dummy” grammars which basically just assigns a root scope to the document (e.g. source.c++) and the C, C++, and Objective-C support is then injected into the scopes for where they should be active. This would fix embedding as well. _______________________________________________ textmate-dev mailing list textmate-dev@lists.macromates.com http://lists.macromates.com/listinfo/textmate-dev