[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