On Aug 22, 2012, at 12:27 AM, Gerd Knops <[email protected]> wrote:
> […] A far better approach would be one based on scopes alone:
>
> - assign indents to certain scopes
> - count all existing scopes at the beginning if a line
> - subtract all scopes no longer existing at the end of that line
>
> The result is the indent for that line. Period. Done. Really!
This would require that everything that increase indent also add a scope, am I
right?
I don’t see how to do that e.g. for single-line if/for statements:
for(size_t i = 0; i < count; ++i)
fprintf(stderr, "%zu\n", i);
Similarly for braceless languages matching “blocks” is pretty difficult. For
whitespace-indented languages we can, to some degree, use the begin/while
construct to match the leading whitespace, but there are also languages which
uses keywords to begin/end a block, but where the keyword can also appear in
other places, e.g. in ruby we may have ‘if’ after a line, which doesn’t start a
new block, but if doesn’t need to be first on the line, to actually start a
block.
Maybe some sort of hybrid is called for?
_______________________________________________
textmate-dev mailing list
[email protected]
http://lists.macromates.com/listinfo/textmate-dev