如何在TextMate中为markdown启用代码折叠?

时间:2011-02-02 22:09:19

标签: textmate text-editor

我想在textmate中为markdown启用代码折叠。

具体来说,我希望任何标题(前面有一个或多个'#'字符的文本)是在它与下一个标题和/或水平规则之间切换块的行。例如:

# Level 1 Heading - I'd like the block below to fold

The text I'd like to fold away

## Level 2 Heading

More text...

BBEdit似乎对降价很好。 TextMate支持代码折叠,适用于表示具有成对(和相同缩进)花括号的块的语言。

我知道TextMate提供了两个你可以在语言语法文件中设置的变量,但是我需要更多的正则表达式才能才能解决它。以下是目前代码折叠设置的降价语言语法:

foldingStartMarker = '(?x)
    (<(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)\b.*?>
    |<!--(?!.*-->)
    |\{\s*($|\?>\s*$|//|/\*(.*\*/\s*$|(?!.*?\*/)))
    )';
foldingStopMarker = '(?x)
    (</(?i:head|body|table|thead|tbody|tfoot|tr|div|select|fieldset|style|script|ul|ol|form|dl)>
    |^\s*-->
    |(^|\s)\}
    )';

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

TextMate flat-out无法做到这一点。

TextMate的语言解析器逐行读取文件。这意味着为了折叠代码,需要有一个开始标记和一个结束标记。与<ul></ul>一样。在这种情况下,由于节的末尾没有标记除下一节开头以外的任何内容,因此逐行解析器不能返回并说空行应标记代码折叠块的结尾。 / p>

这有意义吗?

答案 1 :(得分:1)

Macromates blog上,他们解释了如何为降价启用基本代码折叠。只要您在标题中使用“#”符号,就可以在标题级别进行折叠。

  

对于Markdown的折叠设置(范围为text.html.markdown),让我们看一些更偷偷摸摸的模式:

     

{ foldingIndentedBlockStart = '^#+\s+'; foldingIndentedBlockIgnore = '^(?!#+\s+)'; }

     

我们让一个标题成为开始标记然后我们有效地忽略了不是标题的所有内容,导致这些行被包含在可折叠块中,尽管没有缩进。这使您可以将Markdown文档的整个部分折叠为标题。