Я улучшаю синтаксис Verilog, добавляя поддержку автоматического складывания. Изначально я делал следующее:Улучшение производительности регулярного выражения соответствия синтаксису
syn region verilogFold start="\<task\>" end="\<endtask\>" transparent keepend fold
Но поскольку task
также используется в качестве syntax keyword
, не обнаружены складки. Таким образом, чтобы избежать согласований task
ключевого слова я сейчас с помощью:
syn region verilogFold start="\(^\s*task\)\@<=\s\+\w\+" end="\<endtask\>" transparent keepend fold
К сожалению, это приводит к огромному увеличению на время Vim требуется для обработки каждого файла.
Есть ли у кого-нибудь идеи о том, как это выражение можно улучшить, чтобы обеспечить лучшую производительность?
Посмотрите на использование '\ zs',': h/\ zs'. В документах упоминается использование '\ zs' для скорости в документации на положительный внешний вид,': h/\ @<= '. –
Это была хорошая идея и на самом деле быстрее. Но, по-видимому, это не обходит тот факт, что 'task' является частью группы« синтаксическое ключевое слово », так как не обнаружено фолд. – Vitor