Сворачиваемый блок
Сворачивание блока в коде достаточно сильно отличается в UDL 2.0.
Вместо двух наборов ключевых слов (открывающих и закрывающих), теперь у нас три набора ключевых слов (добавился средний).
Кроме того, есть два типа сворачиваемых блоков кода: первый - поиск с просмотром вперёд, второй - поиск с просмотром назад.
Это стандартный сворачиваемый блок в C++. Фигурные скобки представляют собой указатели для сворачивания и препроцессор тоже поддерживается (для этой демонстрации не все элементы были определены)
Здесь два важных момента. Как вы заметили, оба типа сворачиваемых блока созданы как задумывалось, но они работают по-разному.
Пример 1:
- Сворачиваемый блок 1 (фигурные скобки) определяется с использованием поиска с просмотром вперёд. Это означает, что эти ключевые слова могут быть прилегающими к другому ключевому слову. В этом случае открывающая фигурная скобка стоит рядом с закрывающей круглой скобкой, а в строке 12 на краях слова "Int".
- Сворачиваемый блок 2 (элемент препроцессора) работает, когда на краях ключевых слов пробельные символы, но не тогда, когда прилегают к слову "Unicode", как показано в строке 14.
Пример 2:
UDL 2.0 автоматически создаст средний указатель сворачивания, если открывающий указатель сворачивания следует за закрывающем указателем сворачивания в той же строке.
Пример 2:
Использование составных ключевых слов поддерживается в Сворачиваемом блоке 2, как вы можете видеть в данном примере.
Но это может не всегда работать (см. Пример 3)
Пример 3:
Если я задал оба варианта "else if" и "else", как ключевые слова, сворачивание прерывается.
Это происходит потому, что scintilla упорядочивает ключевые слова в алфавитном порядке и "else" обрабатывается раньше "else if".
UDL 2.0 будет тестироваться на этом ограничении.