AkelPad


Coder → Folds

Описание

Сворачиваемый текст в документе. Любой программный код имеет многострочные конструкции где определяются начало и конец блока.

Секция Folds:

Имеется строка разделённая табуляцией на блоки, определяющая одно правило свёртки. Строк-правил может быть сколько угодно.

Элемент
строки
Описание
FlagsОпределяет правила синтаксиса
Font style0-игнор, 1-обычный, 2-жирный, 3-курсив, 4-жирный курсив
Color textЦвет текста захваченного блока, явно #8080FF или переменная ${IF}
Color bkgrndЦвет фона захваченного блока
Fold startИскомая лексема начала свёртки
Fold endИскомая лексема конца свёртки
DelimitersРазделитель
Parent IDИдентификатор родителя
Rule IDИдентификатор правила
Rule file*.coder-файл правила
Теперь подробно о каждом

Flags

Флаг может быть суммой флагов, для определения поведения поиска лексем.
ФлагОписание
1Учитывать регистр, то есть то что задано в "Fold start" и "Fold end" будет найдено в том же регистре.
2форсировать получение имени для списка слева от начала блока (только для секции "Folds:").
4форсировать получение имени для списка справа от начала блока, включая начало блока (только для секции "Folds:").
8начало блока (секция "Folds:") или начало пропуска (секция "Skips:") находится в начале строки.
16начало блока (секция "Folds:") или начало пропуска (секция "Skips:") находится в конце строки.
32конец блока (секция "Folds:") или конец пропуска (секция "Skips:") находится в начале строки.
64конец блока (секция "Folds:") или конец пропуска (секция "Skips:") находится в конце строки.
128не захватывать конец блока (секция "Folds:") или конец пропуска (секция "Skips:").
256добавочный для 128 флаг - больший приоритет отдается блокам находящимся на одном уровне вместо родительского (только для секции "Folds:").
512блок с комментариями - все вложенные блоки игнорируются (только для секции "Folds:").
1024зарезервирован
2048блок запрещен - найденный блок будет проигнорирован (только для секции "Folds:").
4096xml блок - "", "", "" (только для секции "Folds:").
8192не проверять разделители слева от начала блока (только для секции "Folds:").
16384не проверять разделители справа от начала блока (только для секции "Folds:").
32768не проверять разделители слева от конца блока (только для секции "Folds:").
65536не проверять разделители справа от конца блока (только для секции "Folds:").
131072разделители запрещены (только для секции "Folds:").
262144не отображать блок в списке (только для секции "Folds:").
1048576регулярное выражение в начале блока (секция "Folds:") или начале пропуска (секция "Skips:").
То что определено в "Fold start" является регулярным выражением.
2097152регулярное выражение в конце блока (секция "Folds:") или конце пропуска (секция "Skips:").
То что определено в "Fold end" является регулярным выражением.

Чтобы было понятней, разберём описание параметра "16 - начало блока (секция "Folds:") или начало пропуска (секция "Skips:") находится в конце строки". Здесь "начало блока" подразумевается то что находится в поле "Fold start" (соответственно "конец блока" - то что в "Fold end"), так как секция "Skips:" не нужна игнорируем это иное предназначение, далее "находится в конце строки", то есть место расположение лексемы в строке не в начале как обычно, а в конце строки. "Форсировать" - означает принудительно.
1 - Учитывать регистр, полезно добавлять при поиске лексем, символы которых не имеют понятия регистра "/*({[]})", но это делает поиск быстрее.
2 - Случай когда имя функции находится перед лексемой "Fold start", то есть будет найден сворачиваемый блок, а имя на панель списка свёрток будет взят даже с предыдущей строки, если слева окажутся пробелы, например для begin в pascal.coder, когда begin-end определяют начало и конец блока, как {} в C++ или js, но не определяют имя функции.
128+256 - используется для "title" в grub4dos.coder, когда нет явного определения конца блока, но начало следующего определяет конец предыдущего. Аналогично и в coder.coder

;425=1+8+32+128+256
425 0 0 0 "title" "title" "" 0 0

512 - используется для комментариев, внутри блока свёртки не ищутся, весь блок подсвечен цветом комментариев ${COMM}

;513=1+512
513 3 ${COMM} 0 "/*" "*/" ""

2048 - у этого блока не будет значка свёртки, например если блок на одной строке. Наверно это необходимо, чтобы блок попал на панель списка свёрток.
8192 - если справа от лексемы пробел, то есть лексема не в плотную к началу строки, то с этим флагом захватит.
8192+32768+65536 - используется в html.coder

Font style

Определяет отображаемый стиль найденных лексем: 0-игнор, 1-обычный, 2-жирный, 3-курсив, 4-жирный курсив.

Color text, Color bkgrnd

Рекомендуется 0, то есть игнорировать, а уже в секции Words: задать ключевые слова конструкции для подсветки, потому что заданный цвет в секции "Folds:" применяет цвет ко содержимому всей свёртки.

Fold start

Текст или регулярное выражение при использовании флага 1048576, определяющее поиск начала свёртки например "IF", "For", "Function", "{". Регулярное выражение является самостоятельным, то есть не формируется совместно с содержимым поля "Fold end", сначала ищется лексема "Fold start", потом "Fold end", а всё что между ними является сворачиваемым блоком.

Fold end

Текст или регулярное выражение при использовании флага 2097152, определяющее поиск конца свёртки например "EndIf", "Next", "EndFunction", "}".

Delimiters

Может быть не указан (пусто ""). Определяет символ отделяющий лексему от другой части конструкции, например ключевые слова if, then, else всегда отделены пробелом. Также для примера смотреть секцию "Folds:" в html.coder

Parent ID, Rule ID

Эти поля подробно описаны в справке Coder-Rus.txt. "Parent ID" работает в связке с "Rule ID". То есть если нужно свёртке выполнить свой способ подсветки, иной от другой части документа, то создаём правило 1 в поле "Rule ID", а в поле "Parent ID" другой строки тоже 1. Из этого следует: то что определено в "Parent ID" будет подсвечиваться внутри лексемы определяемой "Rule ID". Для примера блок "Quotes:" из css.coder (но принцип одинаков для всех секций)

389 0 0             0 "[" "]" "" "" "" 0 2 (здесь "Rule ID" = 2)
385 0 ${STR}   0 "=" "" "" "" "" 2 0 (здесь "Parent ID" = 2)
257 0 ${ATTR} 0 "" "=" "" "" "" 2 0 (здесь "Parent ID" = 2)

В примере для конструкции input[type=checkbox], то что находится внутри квадратных скобок будет подсвечено от "=" до конца (см. 2-я строка кода) и от начала до "=" (3-я строка кода).

Rule file

См. пример в html.coder, когда нужно внутри html-кода подсветить js-вставки кода скриптов. То есть нужно определить блок лексемами "Fold start" и "Fold end", то что внутри будет подсвечено, указав в поле "Rule file" псевдоним "alias:.js", причём .js это не имя кодера, а это расширение указанное в секции "Files:". Также можно указать имя файла *.coder.

Секция FoldPanel:

Определяют цвета для вертикального поля слева от документа, в котором показаны узлы для сворачивания блоков текста найденных правилами определяемыми секцией "Folds:". Здесь ничего не надо трогать, здесь указаны переменные, которые определены в Настройках кодера "Общие" с префиксом CodeFold_Panel...

Секция FoldList:

Определяют цвета для панели списка функций, который используется для быстрого перемещения по коду кликая по функции в списке. Здесь ничего не надо трогать, здесь указаны 2 переменные, которые определены в Настройках кодера "Общие" с префиксом CodeFold_List...

Секция TagMark:

Определяют цвета лексем свёртки, когда курсор находится на лексеме, то есть подсвечивает начало и конец, чтобы визуально показать границы блока. Здесь ничего не надо трогать, здесь указаны 4 переменные, которые определены в Настройках кодера "Общие" с префиксом CodeFold_TagMark...

Секция Skips:

Секция пропуска, на сколько мне понятно из правил в этой секции, она определяет части текста, которые нужно пропустить во время поиска свёрток, например комментарии. Если свертка находится внутри комментария, то она игнорируется. Но в большинстве случаев свёртка начинается лексемой от начала строки, поэтому даже не указав лексемы символа комментария в качестве пропуска, свёртки всё равно будет работать правильно. Это скорее всего для свёрток, лексема которых находится не в начале строки.