Coder plugin (3)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 17
Joined: Wed Feb 16, 2022 2:25 pm

Post by AlexeyB »

Ошибки при работе с регулярными выражениями в секциях Skips и Folds:

1. AkelPad падает, если в любом синтаксическом файле, в секции Skips использовать флаг 1048576 (регулярное выражение в начале пропуска). Даже если при этом указан очень простой шаблон или фиксированный символ.

2. В секции Folds неправильно работает сочетание \K.

Вот для примера 3 правила:

Code: Select all

;====================================================================================
;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 в шаблоне начала блока (третье), то просто так лишние символы не подсвечиваются, но при наведении каретки на границу ровно столько же последующих символов включается в подсветку:

Image

3. В комментариях к синтаксическим файлам говорится, что в шаблоне конца блока можно использовать обратную ссылку \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

Offline
Posts: 2
Joined: Sun Mar 27, 2022 11:33 am

Post by aknotta »

Добрый день всем!
Напишите, пожалуйста, как реализовать вложенные сворачивающиеся/разворачивающиеся списки ?

Одноуровневые без вложенных списков сворачивающиеся блоки я успешно реализовал в секции Folds файла txt.coder.

Проблема в том, что coder не понимает заданных правил фолдинга (ну, или я не понимаю).

Image

Image

Image

Спасибо за ответ.
С уважением, aknotta.

Offline
Posts: 17
Joined: Wed Feb 16, 2022 2:25 pm

Post by AlexeyB »

aknotta, мешает флаг 128, запрещающий захватывать конец блока.

Вложенные блоки работают по принципу стека: "первым вошел - последним вышел". То есть при нескольких вложенных блоках первым должен закрыть последний из них, имеющий наибольший уровень вложенности и т.д.

По умолчанию когда какая-то последовательность символов помечается как начало или конец блока, она становится недоступной для дальнейшей обработки правилами секции Folds, но флаг 128 отменяет это поведение. В итоге после завершения одного блока последовательность символов продолжает обрабатываться и завершает все блоки уровнями выше.

Code: Select all

;===========================================================================
;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

Offline
Posts: 2
Joined: Sun Mar 27, 2022 11:33 am

Post by aknotta »

AlexeyB wrote:aknotta, мешает флаг 128, запрещающий захватывать конец блока.

Вложенные блоки работают по принципу стека: "первым вошел - последним вышел". То есть при нескольких вложенных блоках первым должен закрыть последний из них, имеющий наибольший уровень вложенности и т.д.

По умолчанию когда какая-то последовательность символов помечается как начало или конец блока, она становится недоступной для дальнейшей обработки правилами секции Folds, но флаг 128 отменяет это поведение. В итоге после завершения одного блока последовательность символов продолжает обрабатываться и завершает все блоки уровнями выше.

Code: Select all

;===========================================================================
;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, всё заработало как часы.
Вложенные блоки работают как надо.

Offline
Posts: 1
Joined: Fri Aug 12, 2022 6:31 am

Post by Dim-soft »

Есть ли готовые файлы под mikrotik ?
Есть под notepad++ - сложно переписать ?

Offline
Posts: 165
Joined: Fri Aug 15, 2008 8:58 am

Post by Diamen »

Please add:
1 0 ${OP} 0 let
to ;--Keyword-- section in js.coder

Offline
Posts: 17
Joined: Wed Feb 16, 2022 2:25 pm

Post 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).

Offline
Posts: 39
Joined: Thu Aug 20, 2020 11:19 am

Post by texter »

Тут была где-то тема касаемо AutoComplete. Возможно ли настроить порядок отображения автозавершающих слов в списке, например, сделать так чтобы вначале автокомплитились слова, которые уже есть в файле, и лишь затем выводился список нативных фукций или сниппетов из .coder темы?

Например:

Code: Select all

var something = [].som| 
чтобы в начале выводился something+ и лишь затем метод some* который указан в .coder

Offline
Posts: 1
Joined: Sat Dec 17, 2016 6:26 am

Post by Rinat »

Слизал тему с атома One Dark Pro
Правки

Code: Select all

void AddInternalVarThemes(STACKVARTHEME *hStack)
{
  const wchar_t *lpThemes[][2]={{L"Default", TXT_DEFAULT_VARTHEME},
                                {L"OneDarkPro", TXT_ONEDARKPRO_VARTHEME},


Code: Select all

//ONEDARKPRO variable theme
#define TXT_ONEDARKPRO_VARTHEME_BASIC \
L"STR #98C379\r\
COMM #5C6370\r\
VAR #C678DD\r\
DEL1 #E6C07B\r\
DEL2 #56B6C2\r\
TYPE #61AEEE\r\
OP #C678DD\r\
TAG #E06C75\r\
ATTR #D19A66\r\
IF #C678DD\r\
AREA #BE5046\r\
NUM #E6C07B\r"

#define TXT_ONEDARKPRO_VARTHEME_HIGHLIGHT \
L"HighLight_FontStyle 0\r\
HighLight_FontSize 0\r\
HighLight_FaceName \"\"\r\
HighLight_BasicTextColor #ABB2BF\r\
HighLight_BasicBkColor #282C34\r\
HighLight_SelTextColor #ABB2BF\r\
HighLight_SelBkColor #4B595C\r\
HighLight_LineTextColor #ABB2BF\r\
HighLight_LineBkColor #30333D\r\
HighLight_LineBorderColor #404754\r\
HighLight_AltTextColor #ABB2BF\r\
HighLight_AltBkColor #2C313C\r\
HighLight_AltBorderColor #323842\r\
HighLight_ColumnColor #7F878B\r\
HighLight_MarkerColor #467984\r\
HighLight_CaretColor #FFD155\r\
HighLight_UrlColor #66C6FF\r\
HighLight_ActiveUrlColor #A8DEFF\r\
HighLight_VisitUrlColor #A8DEFF\r\
HighLight_BkImageFile \"\"\r\
HighLight_BkImageAlpha 128\r\
HighLight_AutoMarkFlags 1\r\
HighLight_AutoMarkFontStyle 0\r\
HighLight_AutoMarkTextColor #ABB2BF\r\
HighLight_AutoMarkBkColor #963A46\r"

#define TXT_ONEDARKPRO_VARTHEME_CODEFOLD \
L"CodeFold_PanelFirstBkColor #2E373A\r\
CodeFold_PanelSecondBkColor #2E373A\r\
CodeFold_PanelNormalFoldColor #106678\r\
CodeFold_PanelActiveFoldColor #A1C2C9\r\
CodeFold_PanelNormalNodeOpenBkColor #2E373A\r\
CodeFold_PanelNormalNodeCloseBkColor #106678\r\
CodeFold_PanelActiveNodeOpenBkColor #2E373A\r\
CodeFold_PanelActiveNodeCloseBkColor #A1C2C9\r\
CodeFold_PanelNormalNodeOpenSignColor #106678\r\
CodeFold_PanelNormalNodeCloseSignColor #76A7B1\r\
CodeFold_PanelActiveNodeOpenSignColor #A1C2C9\r\
CodeFold_PanelActiveNodeCloseSignColor #2E373A\r\
CodeFold_ListTextColor #ABB2BF\r\
CodeFold_ListBkColor #282C34\r\
CodeFold_TagMarkFlags 0\r\
CodeFold_TagMarkFontStyle 1\r\
CodeFold_TagMarkTextColor #ABB2BF\r\
CodeFold_TagMarkBkColor #4A505E\r"

#define TXT_ONEDARKPRO_VARTHEME_AUTOCOMPLETE \
L"AutoComplete_ListFontStyle 0\r\
AutoComplete_ListFontSize 0\r\
AutoComplete_ListFaceName \"\"\r\
AutoComplete_ListLineGap 0\r\
AutoComplete_ListBlockIcon \"\"\r\
AutoComplete_ListBlockIconMargins 0;1\r\
AutoComplete_ListHlBaseIcon \"\"\r\
AutoComplete_ListHlBaseIconMargins 0;1\r\
AutoComplete_ListDocWordIcon \"\"\r\
AutoComplete_ListDocWordIconMargins 0;1\r\
AutoComplete_ListBasicTextColor #ABB2BF\r\
AutoComplete_ListBasicBkColor #282C34\r\
AutoComplete_ListSelTextColor #ABB2BF\r\
AutoComplete_ListSelBkColor #4B595C\r\
AutoComplete_Indent \"  \"\r"

#define TXT_ONEDARKPRO_VARTHEME_LINEBOARD \
L"LineBoard_TextColor #ABB2BF\r\
LineBoard_BkColor #4B595C\r\
LineBoard_BorderColor #4B595C\r\
LineBoard_BookmarkTextColor #ABB2BF\r\
LineBoard_BookmarkBkColor #30333D\r\
LineBoard_BookmarkBorderColor #404754\r\
LineBoard_LineUnsavedColor #FFB13E\r\
LineBoard_LineSavedColor #AEDB5B\r\
LineBoard_RulerScaleColor #ABB2BF\r\
LineBoard_RulerCaretColor #FF3515\r"

#define TXT_ONEDARKPRO_VARTHEME_SPECIALCHAR \
L"SpecialChar_BasicFontStyle 0\r\
SpecialChar_BasicTextColor #4E595E\r\
SpecialChar_BasicBkColor 0\r\
SpecialChar_SelFontStyle 0\r\
SpecialChar_SelTextColor #737C80\r\
SpecialChar_SelBkColor 0\r"

#define TXT_ONEDARKPRO_VARTHEME_SESSIONS \
L"Sessions_ListTextColor #ABB2BF\r\
Sessions_ListBkColor #282C34\r"

#define TXT_ONEDARKPRO_VARTHEME (TXT_ONEDARKPRO_VARTHEME_BASIC TXT_ONEDARKPRO_VARTHEME_HIGHLIGHT TXT_ONEDARKPRO_VARTHEME_CODEFOLD TXT_ONEDARKPRO_VARTHEME_AUTOCOMPLETE TXT_ONEDARKPRO_VARTHEME_LINEBOARD TXT_ONEDARKPRO_VARTHEME_SPECIALCHAR TXT_ONEDARKPRO_VARTHEME_SESSIONS)

может кому придется по душе :D

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

Post by Cuprum »

Обновил json.coder, теперь можно сворачивать блоки.

Новый elisp.coder, для подсветки языка Emacs Lisp.

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

Post by Cuprum »

AlexeyB wrote:
3. В комментариях к синтаксическим файлам говорится, что в шаблоне конца блока можно использовать обратную ссылку \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
Тут одна строка, а секция Folds работает для многострочного диапазона, нажмите Enter после первого 0.
Но тогда появится (у меня так) висячий фолдинг до конца файла. Похоже на баг.

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

Post by Cuprum »

Есть такой код

QuotesRE:

Code: Select all

0	"(a)bc"  "\1=(0,${OP},0)"             3
Folds:

Code: Select all

1      0       ${STR}       0       "["     "]"     ""      0       3
Таким образом правило из Folds является родителем для правила QuotesRE. Результат:

Image

Что не так? Захватывающая группа (a) не раскрашивается цветом ${OP}, а остается цветом родителя ${STR}.

Вижу, что фиксы и исправления давно не выходят, пусть будет для истории.

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

Post 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 plugin v20.2

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

Post by DV »

Instructor wrote:Coder plugin v20.2
Похоже, єто обновление внесло ошибки в разбор правил .coder файлов.
Для файла, представленного Diamen в теме плагина XBrackets, с синтаксисом JavaScript,

Coder версии 20.0 відает такую картинку (обращаем внимание на сворачиваеміе блоки и подсвеченніе скобки)

Image


А Coder версии 20.2 - такую (меньше сворачиваеміх блоков, и скобки подсвечені неправильно)

Image

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

Post by Instructor »

Изменено: убрано упоминание об обратных ссылках из описания конца блока.
Исправлено: обработка блока в версии 20.2.

Changed: removed mention of backreference from fold end description.
Fixed: fold parsing downgrade in version 20.2.


Coder plugin v20.3
Post Reply