Coder plugin (3)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Re: Coder plugin (3)

Post by AZJIO »

Cuprum wrote: Sat Dec 30, 2023 12:21 pm Задумал сделать подсветку Котлина.
Можете ли дать файл подсветки для проверки?
У вас внутри кавычек подсвечена переменная. То есть получилось что кавычка не закончена. Внутри кавычек как я понимаю текст, а текст не должен быть подсвечен как будто это код. Или текст или код. Кавычка не закрыта, если так задано регулярным выражением, то будет путаница в открывающих и закрывающих кавычках. Жадность регулируется знаком "?", с ним регвыр не жадный, останавливаясь на минимальной длине совпадения.

Для Kotlin содер Java не подойдёт?

Offline
Posts: 382
Joined: Wed Sep 28, 2011 3:05 pm

Re: Coder plugin (3)

Post by Cuprum »

AZJIO wrote: Wed Feb 05, 2025 3:10 am Можете ли дать файл подсветки для проверки?
К сожалению нет, я долго ковырялся с своим кодер-файлом для Котлина, сейчас глянул, там в файле какая-то билиберда :D. Видимо, плюнул на это дело.
Кодер файл от Java не подойдет, хотя концептуально языки близки, синтаксис у Котлина другой, похитрее.

sha
Offline
Posts: 3
Joined: Thu Feb 27, 2025 3:24 am

Re: Coder plugin (3)

Post by sha »

как в "Fold end" отловить подмаску из регекспа в "Fold start"? Ни \1 или $1 не ловят.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Re: Coder plugin (3)

Post by AZJIO »

как бы это выглядело если бы \1 или $1 работал?

sha
Offline
Posts: 3
Joined: Thu Feb 27, 2025 3:24 am

Re: Coder plugin (3)

Post by sha »

ну вот вижу в каком-то coder-файле в секции Folds: конструкцию

Code: Select all

3145769	0	0	0	"^( *)ifeq"	"^\101endif"	" 	"	0	0
очевидно, что \101 - это подмаска из начального регекспа. Но это не работает. Насколько понимаю, сделать подсветку типа heredoc можно только в секции "Fold:" с флагами допускающими регекспы. "<<<(\w+)$" "^\s*\101" - не работает как и \1 и $1. Это возможно в принципе?

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Re: Coder plugin (3)

Post by AZJIO »

sha
Насколько я понимаю здесь два независимых регулярных выражения, одно для начала, второе для конца. В справке есть пример показывающий что ссылки на группы работают.

Offline
Site Admin
Posts: 6411
Joined: Thu Jul 06, 2006 7:20 am

Re: Coder plugin (3)

Post by Instructor »

AlexeyB wrote: Fri Mar 25, 2022 4:56 pm3. В комментариях к синтаксическим файлам говорится, что в шаблоне конца блока можно использовать обратную ссылку \101 для доступа к значению группы 1 начала блока, \102 - группы 2 и т.д. В секции Folds это не работает:

Code: Select all

;===========================================================================
;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
Image
sha wrote: Sun Mar 02, 2025 12:37 pmкак в "Fold end" отловить подмаску из регекспа в "Fold start"? Ни \1 или $1 не ловят.
См. Coder v21.0

Offline
Site Admin
Posts: 6411
Joined: Thu Jul 06, 2006 7:20 am

Re: Coder plugin (3)

Post by Instructor »

Добавлено: обратная ссылка для начала блока в конце блока при использовании флага 2097152. Обратная ссылка \101 соответствует \1 в начале блока, \102 соответствует \2 и т. д. (секции "Folds:" и "Skips:").
Исправлено: ошибка при выходе из программы с разделённым окном.

Added: backreference for fold start in fold end when 2097152 flag is used. Backreference \101 matches \1 in fold start, \102 matches \2 and so on ("Folds:" and "Skips:" sections).
Fixed: error when exiting program with a split window.

Coder plugin v21.0

Offline
Posts: 11
Joined: Wed Jan 22, 2025 5:23 am

Re: Coder plugin (3)

Post by Лестер Глючный »

чё вообще происходит?
"1s.coder" (offset 3561) contain unknown section name "0".
"asm.coder" (offset 3539) contain unknown section name "0".
"au3.coder" (offset 3503) contain unknown section name "0".
"bat.coder" (offset 3510) contain unknown section name "0".
"coder.coder" (offset 3505) contain unknown section name "0".
"cpp.coder" (offset 3605) contain unknown section name "0".
"cs.coder" (offset 3547) contain unknown section name "0".
"css.coder" (offset 3511) contain unknown section name "0".
"html.coder" (offset 3570) contain unknown section name "0".
"ini.coder" (offset 3586) contain unknown section name "0".
"inno.coder" (offset 3543) contain unknown section name "0".
"js.coder" (offset 3540) contain unknown section name "0".
"lua.coder" (offset 3503) contain unknown section name "0".
"nsis.coder" (offset 3586) contain unknown section name "0".
"pascal.coder" (offset 3510) contain unknown section name "0".
"perl.coder" (offset 3524) contain unknown section name "0".
"php.coder" (offset 3565) contain unknown section name "0".
"python.coder" (offset 3509) contain unknown section name "0".
"qsfndall_tofile.coder" (offset 3538) contain unknown section name "0".
"qsfndall_tolog.coder" (offset 3537) contain unknown section name "0".
"rc.coder" (offset 3502) contain unknown section name "0".
"sql.coder" (offset 3503) contain unknown section name "0".
"vbs.coder" (offset 3537) contain unknown section name "0".
"xml.coder" (offset 3999) contain unknown section name "0".
(версия AkelPad за 5 июня)

DV
Offline
Posts: 1294
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Re: Coder plugin (3)

Post by DV »

Лестер Глючный wrote: Wed Jul 16, 2025 4:07 pm чё вообще происходит?
"1s.coder" (offset 3561) contain unknown section name "0".
Checking the mentioned offset in the given files (open the file in AkelPad, select Edit -> Go To and specify an Offset) leads to the following:

Code: Select all

${HighLight_LineBkColor}
Looks like this variable either is not present or has been removed from the current Color Theme in AkelPad.
It may happen with a custom Color theme that has been incorrectly updated.

Offline
Posts: 11
Joined: Wed Jan 22, 2025 5:23 am

Re: Coder plugin (3)

Post by Лестер Глючный »

А… offset по символам, а не по байтам, LOL… but it is "by design"! Open "Plugs\Coder.dll" in AkelPad @CP_1200 (UTF-16LE) and look at this piece of s… offset 105264 (Row=1503)…
Я вообще хочу выкинуть все "встроенные темы" из .dll`ки, чтоб не путались под рукой — ни одна меня не устраивает, too high contrast, см. topic.php?p=36835
Зачем вообще существует переменные, конфликтующие с настройкой View — Colors… (где, к тому же, так же нельзя указать системные цвета)?

Offline
Posts: 1879
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Re: Coder plugin (3)

Post by Infocatcher »

Применительно к вопросам/замечаниям по подсветке bat-файлов (https://github.com/Infocatcher/AkelPad_ ... 3152554105) возникло пожелание добавить какое-нибудь условное включение/выключение правил в coder-файле – чтобы можно было через глобальные переменные повлиять на логику работы (а не делать, например, несколько альтернативных coder-файлов, их синхронно править муторно).

Некий аналог для чего-то типа

Code: Select all

#ifdef CodeFold_Extended
; Какое-то правило
#else
; Какое-то альтернативное правило
#endif
Или дополнительным флагом:

Code: Select all

;======================================================================================
;Flags  Font    Color   Color   Fold   Fold   Deli      Parent  Rule    Rule    Rule
;       style   text    bkgrnd  start  end    miters    ID      ID      file    enabled
;======================================================================================
; Show ( … ) folds in list:
1       0       0       0       (       )     ""        0       0       ""      ${CodeFold_Extended}
; Alternative, don't show ( … ) folds in list:
;262145=1+262144
262145  0       0       0       (       )     ""        0       0       ""      ${!CodeFold_Extended}

Offline
Posts: 286
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Re: Coder plugin (3)

Post by yozhic »

Очень вероятно, что я чего-то
Но пока кажется, что так быть не должно :) В .coder правило:

Code: Select all

Folds:
;--Switch...Case...EndSwitch--
40	0	0	0	"Switch"  "EndSwitch" ""	0	31
424	0	0	0	"Case"    "Case"       ""	0	0
424	0	0	0	"Case"    "Else"       ""	0	0
424	0	0	0	"Case"    "EndSwitch"  ""	0	0
424	0	0	0	"Else"    "EndSwitch"  ""	31	0
В коде пользовательская ф-ция, начинающаяся со слова Switch:

Code: Select all

Func SwitchColors(lParam)
    ...
EndFunc

If lParam = 1 And IsPressed(0x5B) Then
   SwitchColors(1)
   Return
EndIf

Func DateDiff(DateTime1, DateTime2, Unit)
    ...
    Switch Unit
        Case "M"
            Return Floor(Diff / 60)
        Case "H"
            Return Floor(Diff / 3600)
        Else
            Return Diff
    EndSwitch
EndFunc
Switch Unit работает корректно. А SwitchColors(1) сворачивает (поглощает) всю оставшуюся часть файла. Получается, что плагин не проверяет разделитель справа от Switch? Хотя пробел в Delimiters есть. Должен же, вроде, разделитель справа проверяться, иначе бы не имел смысла флаг 16384 («не проверять разделители справа от начала блока»).

Можно, конечно, регуляркой (с флагом 1048576) начало блока уточнить. Я пока добавил пробел перед закр. кавычкой "Switch ", и подсветка заработала так, как ожидалось. Но всё же хотелось бы понять, справедливо ли я засомневался или недопонял чего?

Да, действительно недопонял. У Folds свои разделители, и Delimiters из другого раздела (Highlight), здесь не учитываются. Добавил пробел в Folds->Delimiters, и правило заработало, как ожидалось. А я почему-то подумал, что в этом месте Delimiters перечисляются только для флага 131072 (разделители запрещены) :? Но, спасибо Cuprum — помог разобраться.
Post Reply