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

Reply via email to