Как я могу использовать файлы синтаксиса Vim для объединения однострочных комментариев в одном регионе? - PullRequest
3 голосов
/ 10 февраля 2010

Я собираю синтаксис для редактирования файлов Java Manifest ( на github , если кому-то интересно). Я пытаюсь свернуть несколько однострочных комментариев (которые я сейчас сопоставляю с syntax match manifestComment "#.*"). Однако, если я попытаюсь использовать область синтаксиса, тогда будет помечен весь файл и все это рухнет.

То, чего я пытаюсь достичь, это:

# A comment
# Another comment
# A third comment
Manifest-Version: 1

и заставить его рухнуть на:

+--  3 lines: # A comment ----
Manifest-Version: 1 

Проблема заключается в том, что нет четкого символа «конец», и синтаксис сгиба не помогает; поэтому я не могу сделать syntax region commentBlock start="^#" end="^[^#]". Грубо говоря, область синтаксиса должна начинаться с первого символа хеша, а затем продолжаться вниз по строкам, пока не будет найдена строка, которая не начинается с хеша.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2010
:set foldmethod=expr
:set foldexpr=getline(v:lnum)[0]==\"#\"

Для информации :h fold-expr.

1 голос
/ 10 февраля 2010

Как насчет syntax region commentBlock start="^#" end="^#\@!"?

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \@! в Perl похоже (?!pattern), то есть оно соответствует нулевой ширине, если предыдущий атом - # в этом случае - не совпадает в текущей позиции.

...