Хорошо, оказалось, что это было не так сложно, когда я достаточно перевел свой мозг в режим регулярных выражений. foldingIndentBlockStart
отвечает за большинство Python свертываний, то есть все, что основано на отступе. foldingStartMarker
и foldingStopMarker
обрабатывают все остальные операции свертывания, хотя шаблоны по умолчанию для пакета связывают только строки документов с тройными кавычками. *
Я написал пару шаблонов для проверки на открытие и закрытие {}, () и [], с поддержкой комментариев в той же строке (и запятой после, если это часть более длинной последовательности). Я добавил свои новые шаблоны к существующим с помощью |, например, так:
{ foldingStartMarker = '^\s*"""(?=.)(?!.*""")|(\{|\(|\[)\s*(#.*)?$';
foldingStopMarker = '^\s*"""\s*$|^\s*(\}|\)|\]),?\s*(#.*)?$';
}
Возможно, мне не хватает некоторых угловых случаев, но пока что это похоже на работу.
* Примечание: предоставленные по умолчанию шаблоны работают только для строк документации, если вы не вставляете новую строку между открывающими тройными кавычками и началом вашей строки. В настоящее время я не вижу способа исправить это, поскольку TextMate, похоже, не нравится, когда ваш начальный и конечный шаблоны совпадают с одной и той же строкой.