[TxMt] Use comments to mark sections (and indented folding vs marker-based folding)

JiHO jo.lists at gmail.com
Thu Jan 21 11:37:10 UTC 2016


Hi everyone,

I want to fold the following 'code'

# Section 1 ----

for (i in  1:30) {
    y = i+1
}

# Section 2 ----

# a comment
x = y + 1
y = y^2

    if (foo) {
        a = b
        for (j in 1:3) {
            b = b + 1
        }
    }

# Section 3 ----

b = c

to fold in the following way:
- "sections" in the code are defined by #something----, everything
between two section titles should fold when the folding marker of the
title line is clicked
- blocks are defined with { (and a few other markers) and should fold
as expected.

With the following rules I can almost make it work

{
    foldingStartMarker = '\{';
    foldingStopMarker = '\}';
    foldingIndentedBlockStart = '^#(.*?)\-{4,}';
    foldingIndentedBlockIgnore = '^(?!#(.*?)\-{4,})';
}

the blocks fold, respecting nesting, the sections fold up to the next
section, *except* for section 1; there, the `for` block is not
indented and is at the same level as the section, therefore folding at
section 1 only folds until the start of the for block, not all the way
down to section 2.
It looks like I am searching for a way to the `foldingIndentedBlock`
rule to take precedence over the `foldingStartMarker` rule. Is it
possible?

To make it easy to take a stab at it, I created a new bundle and a
test file (the language is "testing") which you can get there:
https://dl.dropboxusercontent.com/u/1047321/Test.zip

PS: having comments which define sections in the code seems like a
general use case. The syntax is in that particular example is defined
in the R language by the RStudio IDE. This IDE is becoming common
enough that I am receiving code formatted this way a lot.

Thanks in advance for your help!


More information about the textmate mailing list