2011-02-02 66 views
2

我想在textmate中爲markdown啓用代碼摺疊。如何在TextMate中爲折扣啓用代碼摺疊?

具體來說,我希望任何標題(文本前面有一個或多個'#'字符)作爲將在它與下一個標題和/或水平規則之間切換塊的行。例如:

# 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

TextMate扁平化不能做到這一點。

TextMate的語言解析器逐行讀取文件。這意味着爲了讓代碼被摺疊,需要有一個開始標記和一個結束標記。像<ul></ul>。在這種情況下,由於一個部分的結尾沒有被標記爲下一部分的開頭以外的任何內容,因此逐行解析器無法返回並且說空行應該標記代碼摺疊塊的結尾。

這有道理嗎?

1

Macromates blog上,他們解釋瞭如何爲降價啓用基本代碼摺疊。只要您使用「#」符號作爲標題,就可以在標題級摺疊。

對於降價的摺疊設置(作用域爲text.html.markdown),讓我們來看看一些偷偷摸摸的模式:

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

我們讓一個標題是一個開始標記,然後我們有效地忽略所有不是標題的東西,導致這些線條被包含在可摺疊塊中,儘管沒有縮進。這使您可以將Markdown文檔的整個部分摺疊爲標題。