Ошибки при работе с регулярными выражениями в секциях Skips и Folds:
1. AkelPad падает, если в любом синтаксическом файле, в секции Skips использовать флаг 1048576 (регулярное выражение в начале пропуска). Даже если при этом указан очень простой шаблон или фиксированный символ.
2. В секции Folds неправильно работает сочетание \K.
;====================================================================================
;Flags Font Color Color Fold Fold Deli Parent Rule Rule
; style text bkgrnd start end miters ID ID file
;====================================================================================
2097152 0 #080 0 "<" "(?<!\\)(\\\\)*>" "" 0 0
2097152 0 #080 0 "<" "(?<!\\)(\\\\)*\K>" "" 0 0
1048576 0 #080 0 "(?<!\\)(\\\\)*\K<" ">" "" 0 0
- Если использовать первое правило (без \K), то все символы "\" будут подсвечиваться как часть границы блока.
- Если взять правило с \K в шаблоне конца блока (второе), то сколько символов соответствует части шаблона до \K (в данном случае символов "\"), столько вместо этого подсвечивается после этого лишних (в том числе при наведении каретки они подсвечиваются как граница):
- Если взять правило с \K в шаблоне начала блока (третье), то просто так лишние символы не подсвечиваются, но при наведении каретки на границу ровно столько же последующих символов включается в подсветку:
3. В комментариях к синтаксическим файлам говорится, что в шаблоне конца блока можно использовать обратную ссылку \101 для доступа к значению группы 1 начала блока, \102 - группы 2 и т.д. В секции Folds это не работает:
;===========================================================================
;Flags Font Color Color Fold Fold Deli Parent Rule Rule
; style text bkgrnd start end miters ID ID file
;===========================================================================
3145728 0 #080 0 "<(\d)" "\101>" "" 0 0
Posted: Sun Mar 27, 2022 11:53 am
by aknotta
Добрый день всем!
Напишите, пожалуйста, как реализовать вложенные сворачивающиеся/разворачивающиеся списки ?
Одноуровневые без вложенных списков сворачивающиеся блоки я успешно реализовал в секции Folds файла txt.coder.
Проблема в том, что coder не понимает заданных правил фолдинга (ну, или я не понимаю).
Спасибо за ответ.
С уважением, aknotta.
Posted: Sun Mar 27, 2022 1:57 pm
by AlexeyB
aknotta, мешает флаг 128, запрещающий захватывать конец блока.
Вложенные блоки работают по принципу стека: "первым вошел - последним вышел". То есть при нескольких вложенных блоках первым должен закрыть последний из них, имеющий наибольший уровень вложенности и т.д.
По умолчанию когда какая-то последовательность символов помечается как начало или конец блока, она становится недоступной для дальнейшей обработки правилами секции Folds, но флаг 128 отменяет это поведение. В итоге после завершения одного блока последовательность символов продолжает обрабатываться и завершает все блоки уровнями выше.
;===========================================================================
;Flags Font Color Color Fold Fold Deli Parent Rule Rule
; style text bkgrnd start end miters ID ID file
;===========================================================================
0 0 0 0 "/>" "//>" "" 0 0
Posted: Sun Mar 27, 2022 3:32 pm
by aknotta
AlexeyB wrote:aknotta, мешает флаг 128, запрещающий захватывать конец блока.
Вложенные блоки работают по принципу стека: "первым вошел - последним вышел". То есть при нескольких вложенных блоках первым должен закрыть последний из них, имеющий наибольший уровень вложенности и т.д.
По умолчанию когда какая-то последовательность символов помечается как начало или конец блока, она становится недоступной для дальнейшей обработки правилами секции Folds, но флаг 128 отменяет это поведение. В итоге после завершения одного блока последовательность символов продолжает обрабатываться и завершает все блоки уровнями выше.
;===========================================================================
;Flags Font Color Color Fold Fold Deli Parent Rule Rule
; style text bkgrnd start end miters ID ID file
;===========================================================================
0 0 0 0 "/>" "//>" "" 0 0
Большое спасибо!
Убрал флаг 128, всё заработало как часы.
Вложенные блоки работают как надо.
Posted: Fri Aug 12, 2022 11:50 am
by Dim-soft
Есть ли готовые файлы под mikrotik ?
Есть под notepad++ - сложно переписать ?
Posted: Thu Aug 18, 2022 10:38 am
by Diamen
Please add:
1 0 ${OP} 0 let
to ;--Keyword-- section in js.coder
Posted: Thu Aug 18, 2022 9:03 pm
by AlexeyB
Diamen, for own scripts AkelPad uses Windows Script Host, which implements 3rd edition of ECMAScript standard. "let" keyword only appeared in ECMAScript 6. For scripts on web pages, Node.js etc you can download my js-es6.coder file. Additional info is here (if you can translate Russian).
Posted: Wed Dec 28, 2022 10:06 pm
by texter
Тут была где-то тема касаемо AutoComplete. Возможно ли настроить порядок отображения автозавершающих слов в списке, например, сделать так чтобы вначале автокомплитились слова, которые уже есть в файле, и лишь затем выводился список нативных фукций или сниппетов из .coder темы?
Обновил json.coder, теперь можно сворачивать блоки.
Новый elisp.coder, для подсветки языка Emacs Lisp.
Posted: Sun Feb 19, 2023 6:37 pm
by Cuprum
AlexeyB wrote:
3. В комментариях к синтаксическим файлам говорится, что в шаблоне конца блока можно использовать обратную ссылку \101 для доступа к значению группы 1 начала блока, \102 - группы 2 и т.д. В секции Folds это не работает:
;===========================================================================
;Flags Font Color Color Fold Fold Deli Parent Rule Rule
; style text bkgrnd start end miters ID ID file
;===========================================================================
3145728 0 #080 0 "<(\d)" "\101>" "" 0 0
Тут одна строка, а секция Folds работает для многострочного диапазона, нажмите Enter после первого 0.
Но тогда появится (у меня так) висячий фолдинг до конца файла. Похоже на баг.
Таким образом правило из Folds является родителем для правила QuotesRE. Результат:
Что не так? Захватывающая группа (a) не раскрашивается цветом ${OP}, а остается цветом родителя ${STR}.
Вижу, что фиксы и исправления давно не выходят, пусть будет для истории.
Posted: Thu Jun 01, 2023 5:32 pm
by Instructor
Исправлено: зависание программы при использовании "(?=.*S)" в начале блока. Исправлено: зависание программы при использовании "\z" в конце блока. Исправлено: ошибка программы при использовании регулярных выражений в начале пропуска.
Fixed: program hang when using "(?=.*S)" in fold start. Fixed: program hang when using "\z" in fold end. Fixed: program error when using regular expressions in skip start.
Похоже, єто обновление внесло ошибки в разбор правил .coder файлов.
Для файла, представленного Diamen в теме плагина XBrackets, с синтаксисом JavaScript,
Coder версии 20.0 відает такую картинку (обращаем внимание на сворачиваеміе блоки и подсвеченніе скобки)
А Coder версии 20.2 - такую (меньше сворачиваеміх блоков, и скобки подсвечені неправильно)
Posted: Thu Jun 08, 2023 11:56 pm
by Instructor
Изменено: убрано упоминание об обратных ссылках из описания конца блока. Исправлено: обработка блока в версии 20.2.
Changed: removed mention of backreference from fold end description. Fixed: fold parsing downgrade in version 20.2.