[txmt-dev] Re: TM2 Indentation: a better approach
Allan Odgaard
mailinglist at textmate.org
Wed Aug 22 23:24:05 UTC 2012
On Aug 22, 2012, at 12:27 AM, Gerd Knops <gerti-textmate at bitart.com> 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?
More information about the textmate-dev
mailing list