On 17 Sep 2013, at 9:38, Jacob Carlborg wrote:
[…] If a type a function declaration (same syntax as in C), like
this:
void foo ()
{|}
When I've typed the opening brace it will look like the above (the
pipe being the position of the cursor). But
setting the language to C and doing the same will decrease the
indentation, as it should.
In the C bundle this was fixed by
https://github.com/textmate/c.tmbundle/commit/776da04eda90a8af9ae4e0d20381765caaca5655
Basically the indent patterns must deal with the user having typed
‘{}’ and decrease indent for that case, because of ‘indent as you
type’ and auto-pairing of characters.
Also, pressing enter the indention will increase, if the language is
set to C.
You mean pressing return here ‘{‸}’ will insert ‘\n\t‸\n’?
In 2.0 this is done by a snippet scoped to “between empty pairs”.
For this to work, we require the grammar to assign punctuation scopes to
braces (and other paired characters where it should work), but I’ve
been wanting to inject a rule just for empty braces, so that the 1.x
behavior works even if the grammar has not been updated.
This is basically what I wish to inject into all scopes, sans the D
suffix:
{ match = '(\{)(\})';
captures = {
1 = { name = 'punctuation.section.block.begin.d'; };
2 = { name = 'punctuation.section.block.end.d'; };
};
},
If the grammar alredy match (stand-alone) braces, it doesn’t need the
rule, instead it can assign the above begin/end scopes to these matches.
_______________________________________________
textmate-dev mailing list
textmate-dev@lists.macromates.com
http://lists.macromates.com/listinfo/textmate-dev