2011-02-02 2 views
2

Я бы хотел включить код складной для уценки в textmate.Как включить свертывание кода для уценки в 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 flat-out не может этого сделать.

Парсер языка TextMate считывает файлы по очереди. Это означает, что для свертывания кода должен быть маркер начала и конечный маркер. Как <ul> и </ul>. В этом случае, поскольку конец раздела не помечен чем-либо другим, кроме начала следующего раздела, поэтапный парсер не может вернуться и сказать, что пустая строка должна отмечать конец сложенного кода.

Это имеет смысл?

1

На Macromates blog они объясняют, как включить базовое сгибание кода для уценки. Это позволяет вам складываться на уровне заголовка, пока вы используете символ «#» для своих заголовков.

Для настройки складных уценки (в области видимости text.html.markdown), давайте посмотрим на некоторые более хитрыми узорами:

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

Мы даем заголовок быть начало маркером, а затем мы эффективно игнорировать все, что не является заголовком, заставляя эти строки включаться в складной блок, несмотря на отсутствие отступов. Это позволяет свернуть все разделы документа Markdown вплоть до заголовков.

Смежные вопросы