Как включить свертывание кода для уценки в TextMate? - PullRequest
2 голосов
/ 03 февраля 2011

Я хотел бы включить свертывание кода для уценки в 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 ]

2 голосов
/ 23 апреля 2011

TextMate категорически не может этого сделать.

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

Имеет ли это смысл?

1 голос
/ 04 декабря 2014

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

Для настроек свертывания Markdown (в области text.html.markdown) давайте рассмотрим еще несколько подлых шаблонов:

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

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

...