Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor
Угу, у меня тоже Total Commander для синхронизации, но по дате и размеру на порядок быстрее сравнивает.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Cuprum wrote: Если честно, я запутался в цифрах и приоритетах в кодер-файлах. Например, если у правила указан Parent ID 0, он ищет другие правила с Rule ID 0 или сам по-себе? Может, уточнить в coder-rus.txt какие конкретно значения принимает идентификатор?
На самом деле, там иерархия описана, правда только для "-1" и "-2", но остальное должно быть очевидно:
Parent ID
"-2" - любой родитель и не в корне
"-1" - только в корне
"0" - везде, но приоритет ниже, чем ">0"
">0" - только в конкретном Rule ID

На данный момент, видимо, что-то сломалось в процессе починки иерархии в целом, т.к. сейчас попытался проверить её для "Folds:" и оказалось, что Parent ID "-1" и "-2" не работают... остальное - вполне работоспособно. Но у меня не тестовая, а 4.9.6
Может быть, поэтому упомянутая выше строка из QuotesRE: с Parent ID "-1" у Вас не функционирует... или наоборот, функционирует согласно иерархии (т.к. у Вас тестовая версия), надо её Вам проверить по всем правилам в первую очередь.

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

Post by Cuprum »

YuS
Я сначала смотрел на 4.9.6, вышло как на скриншоте, потом обновил сам Акелпад до тестовой, думал может там по-другому, оказалось, все точно так же.
По поводу 0 спасибо за разъяснения.
На самом деле, там иерархия описана, правда только для "-1" и "-2"
Да, но формулировка, по-моему, как-то уж слишком краткая.

Если родитель (Parent ID) равен -1, то правило отбирает только те совпадения, которые находятся в корне файла (без вложенности). Соотвественно, у правила нет родителя(-ей).

Если родитель (Parent ID) равен -2, то правило отбирает только те совпадения, которые являются вложенными. Границы вложенности определяются всеми другими правилами.

Может и длиннее, но ,наверное, понятней.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Cuprum wrote: Да, но формулировка, по-моему, как-то уж слишком краткая.
...
Может и длиннее, но ,наверное, понятней.
Вопрос спорный, у каждого может быть свое представление о краткости и понятности... я бы, например, написал так:
иерархия Rule ID <-> Parent ID :
Parent ID:
-2 - правило работает только в некорневых элементах (любой родитель)
-1 - правило работает только в корневых элементах (родителя нет)
0 - правило работает во всех элементах
N (N>0) - правило работает только в тех элементах, у которых соответствующий Rule ID
- приоритетность задается значением Parent ID. При равных значениях, больший приоритет имеет правило стоящее выше по списку в .coder файле.

Как-то так, но мы ведь не авторы, поэтому можем только предложить варианты, не более того...

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Instructor
Извините пожалуйста за задержку с ответом.
Instructor wrote:См. Coder 17.8 + тестовая.
тестовая действительно не работала. Но предложенная тестовая, там же, отрабатывает как надо.
Большое спасибо!

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

Post by yozhic »

Подскажите, пожалуйста, почему эти правила (конкретно сочетание QuotesRE и Words):

Code: Select all

Quotes:
;===================================================================================
;Flags  Font    Color   Color   Quote   Quote   Escape  Quote   Quote   Parent  Rule
;       style   text    bkgrnd  start   end     char    include exclude ID      ID
;===================================================================================
16389   0       0       0       "[c "   "[c "   "\"     ""      ""      0       0
16389   2       #475263 #BADCDC "[c "   "[/c]"  "\"     ""      ""      0       0

QuotesRE:
;========================================================================================================
;Flags  Pattern                      \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...  ParentID RuleID
;========================================================================================================
1       '(?<=\[c )[a-z]*?(?=\])'    '\0=(0,0,0)'                                          0        61

Words:
;===========================================
;Flags  Font    Color   Color   Word  Parent
;       style   text    bkgrnd        ID
;===========================================
1       4       #00FFFF 0       cyan  61
срабатывают в первом случае и не срабатывают во втором:
Image :(

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

Post by Infocatcher »

Instructor
А не лучше ли вместо прямого указания *.coder файла для вложенных правил прямо как в настройках сделать, где «псевдоним для неизвестного файла»? Потому как если файл не оригинальный, а модифицированный, его удобнее переименовывать. А тут казус: прямо в середине будет указан «my_js.coder» какой-нибудь (и, возможно, не один раз!), туда напрашивается просто «.js».

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

yozhic wrote:Подскажите, пожалуйста, почему эти правила (конкретно сочетание QuotesRE и Words):
...
срабатывают в первом случае и не срабатывают во втором
Потому, что срабатывает вовсе не одно из этих правил, а какое-то другое, более приоритетное, чем QuotesRE... в данном случае, Words не перекроет захваченное регэкспом.
Закомментируйте все остальные, кроме описанных правил и увидите результат...

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

Post by Infocatcher »

Instructor
И еще одно пожелание.
Есть некий xml.coder, в нем
:

Code: Select all

Folds:
;=============================================================================================================================================================
;Flags  Font    Color   Color   Fold                                                                       Fold           Deli    Parent  Rule    Rule
;       style   text    bkgrnd  start                                                                      end            miters  ID      ID      file
;=============================================================================================================================================================
;1052676=4+4096+1048576
1052676 0       0       0       `<bindings[^<>]*?\sxmlns=("|')http://www.mozilla.org/xbl\1[^<>]*?(?<!/)>`  "</bindings>"  ""      0       2       "_xbl.coder"

Задает особую подсветку для содержимого <bindings xmlns="http://www.mozilla.org/xbl">…</bindings>.
Все работает, но есть неудобство:
Image
Image
Атрибуты в обычных тэгах подсвечены и при редактировании, а тут закрашивает сразу все.
Тут бы тоже сделать нечто вроде... есть же флаг

Code: Select all

;    4096  xml fold - "<tag" and "</tag>", "<single" and "/>", "<single" and ">" ("Folds:" section only).

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Infocatcher wrote:А тут казус: прямо в середине будет указан «my_js.coder» какой-нибудь (и, возможно, не один раз!), туда напрашивается просто «.js».
Если я правильно понял о чем речь, то ведь это разные подмножества:
В настройках указан один синтаксис для множества разных (неопределенных) файлов, а тут используется множество синтаксисов в одном .coder файле, пусть и для различных элементов... имхо.

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

Post by Infocatcher »

YuS
Не, ну что для настроек применяется *.coder, в котором указана маска, под которую попадает псевдоним, то есть идет однозначная связь .ext => ext.coder. Что тут нужно применить конкретный *.coder для вложенной секции. И вот его тоже хотелось бы называть не по имени файла подсветки, а по тому, какое он расширение подсвечивает.
Все же *.js у всех подсвечиваются как JavaScript (хотя понятно, что бывают и спорные расширения), а вот js.coder можно и переименовать. А вот пользователю об этом знать не нужно: пусть скачает сторонний файл подсветки и просто его положит в папку.
(Не, я понимаю, что мое добро просто так не положить, но одно дело замену цветов сделать, а другое – еще и пути к файлам править.)

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Infocatcher wrote:И вот его тоже хотелось бы называть не по имени файла подсветки, а по тому, какое он расширение подсвечивает.
Ну, хорошо, c js.coder понятно, а если надо будет подсвечивать из cpp.coder - там ведь масса расширений...
А если будет указано расширение .xml, а сам coder переименован скажем в name.coder (и таких переименованных может быть масса) - как тут соответствие искать? Имхо, это только запутает ещё больше. Лучше уж как есть, конкретный .coder файл указывать - и просто, и понятно любому, кому понадобится Rule file глянуть.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

Infocatcher wrote: Атрибуты в обычных тэгах подсвечены и при редактировании, а тут закрашивает сразу все.
Тут бы тоже сделать нечто вроде... есть же флаг

Code: Select all

;    4096  xml fold - "<tag" and "</tag>", "<single" and "/>", "<single" and ">" ("Folds:" section only).
Так ведь тут, как раз, закрашенный полностью тег указывает на то, что это цельный, открывающий тег и у него должен быть ещё и закрывающий, а на первом скрине, как раз "<single" and ">".
Имхо, так даже удобнее определять, какое из правил фолдинга сработало и есть ли ещё и закрывющий тег...

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

Post by yozhic »

YuS
Понятно, что более приоритетные правила из Quotes перекрывают следующие за ними (я их потому и указал в сообщении). Связка QuotesRE и Words срабатывает при отключенных Quotes. Но, как я рассуждаю, если бы дело было только в Quotes, то не срабатывало бы ничего. А тут в строке 7 на картинке срабатывает, а в строке 8 – нет. Разница всего в пробеле, наличие которого в указанных правилах нигде не оговаривается. Т.е., с точки зрения правил, между этими двумя случаями (строками) разницы нет. При этом один (на строке 7) работает, а второй (на строке 8 ) – нет :(

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

yozhic wrote:А тут в строке 7 на картинке срабатывает, а в строке 8 – нет.
Вот комплект для проверки
Locked