Instructor
Угу, у меня тоже Total Commander для синхронизации, но по дате и размеру на порядок быстрее сравнивает.
Posted: Thu Oct 01, 2015 7:10 pm
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" у Вас не функционирует... или наоборот, функционирует согласно иерархии (т.к. у Вас тестовая версия), надо её Вам проверить по всем правилам в первую очередь.
Posted: Thu Oct 01, 2015 8:17 pm
by Cuprum
YuS
Я сначала смотрел на 4.9.6, вышло как на скриншоте, потом обновил сам Акелпад до тестовой, думал может там по-другому, оказалось, все точно так же.
По поводу 0 спасибо за разъяснения.
На самом деле, там иерархия описана, правда только для "-1" и "-2"
Да, но формулировка, по-моему, как-то уж слишком краткая.
Если родитель (Parent ID) равен -1, то правило отбирает только те совпадения, которые находятся в корне файла (без вложенности). Соотвественно, у правила нет родителя(-ей).
Если родитель (Parent ID) равен -2, то правило отбирает только те совпадения, которые являются вложенными. Границы вложенности определяются всеми другими правилами.
Может и длиннее, но ,наверное, понятней.
Posted: Fri Oct 02, 2015 2:09 am
by YuS
Cuprum wrote:
Да, но формулировка, по-моему, как-то уж слишком краткая.
...
Может и длиннее, но ,наверное, понятней.
Вопрос спорный, у каждого может быть свое представление о краткости и понятности... я бы, например, написал так:
иерархия Rule ID <-> Parent ID : Parent ID: -2 - правило работает только в некорневых элементах (любой родитель) -1 - правило работает только в корневых элементах (родителя нет) 0 - правило работает во всех элементах N (N>0) - правило работает только в тех элементах, у которых соответствующий Rule ID
- приоритетность задается значением Parent ID. При равных значениях, больший приоритет имеет правило стоящее выше по списку в .coder файле.
Как-то так, но мы ведь не авторы, поэтому можем только предложить варианты, не более того...
Posted: Fri Oct 02, 2015 4:15 pm
by Kley
Instructor
Извините пожалуйста за задержку с ответом.
Instructor wrote:См. Coder 17.8 + тестовая.
тестовая действительно не работала. Но предложенная тестовая, там же, отрабатывает как надо.
Большое спасибо!
Posted: Mon Oct 05, 2015 9:18 am
by yozhic
Подскажите, пожалуйста, почему эти правила (конкретно сочетание QuotesRE и Words):
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
срабатывают в первом случае и не срабатывают во втором:
Posted: Mon Oct 05, 2015 10:12 am
by Infocatcher
Instructor
А не лучше ли вместо прямого указания *.coder файла для вложенных правил прямо как в настройках сделать, где «псевдоним для неизвестного файла»? Потому как если файл не оригинальный, а модифицированный, его удобнее переименовывать. А тут казус: прямо в середине будет указан «my_js.coder» какой-нибудь (и, возможно, не один раз!), туда напрашивается просто «.js».
Posted: Mon Oct 05, 2015 10:26 am
by YuS
yozhic wrote:Подскажите, пожалуйста, почему эти правила (конкретно сочетание QuotesRE и Words):
...
срабатывают в первом случае и не срабатывают во втором
Потому, что срабатывает вовсе не одно из этих правил, а какое-то другое, более приоритетное, чем QuotesRE... в данном случае, Words не перекроет захваченное регэкспом.
Закомментируйте все остальные, кроме описанных правил и увидите результат...
Posted: Mon Oct 05, 2015 10:34 am
by Infocatcher
Instructor
И еще одно пожелание.
Есть некий xml.coder, в нем
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>.
Все работает, но есть неудобство:
Атрибуты в обычных тэгах подсвечены и при редактировании, а тут закрашивает сразу все.
Тут бы тоже сделать нечто вроде... есть же флаг
; 4096 xml fold - "<tag" and "</tag>", "<single" and "/>", "<single" and ">" ("Folds:" section only).
Posted: Mon Oct 05, 2015 10:36 am
by YuS
Infocatcher wrote:А тут казус: прямо в середине будет указан «my_js.coder» какой-нибудь (и, возможно, не один раз!), туда напрашивается просто «.js».
Если я правильно понял о чем речь, то ведь это разные подмножества:
В настройках указан один синтаксис для множества разных (неопределенных) файлов, а тут используется множество синтаксисов в одном .coder файле, пусть и для различных элементов... имхо.
Posted: Mon Oct 05, 2015 10:44 am
by Infocatcher
YuS
Не, ну что для настроек применяется *.coder, в котором указана маска, под которую попадает псевдоним, то есть идет однозначная связь .ext => ext.coder. Что тут нужно применить конкретный *.coder для вложенной секции. И вот его тоже хотелось бы называть не по имени файла подсветки, а по тому, какое он расширение подсвечивает.
Все же *.js у всех подсвечиваются как JavaScript (хотя понятно, что бывают и спорные расширения), а вот js.coder можно и переименовать. А вот пользователю об этом знать не нужно: пусть скачает сторонний файл подсветки и просто его положит в папку.
(Не, я понимаю, что мое добро просто так не положить, но одно дело замену цветов сделать, а другое – еще и пути к файлам править.)
Posted: Mon Oct 05, 2015 10:55 am
by YuS
Infocatcher wrote:И вот его тоже хотелось бы называть не по имени файла подсветки, а по тому, какое он расширение подсвечивает.
Ну, хорошо, c js.coder понятно, а если надо будет подсвечивать из cpp.coder - там ведь масса расширений...
А если будет указано расширение .xml, а сам coder переименован скажем в name.coder (и таких переименованных может быть масса) - как тут соответствие искать? Имхо, это только запутает ещё больше. Лучше уж как есть, конкретный .coder файл указывать - и просто, и понятно любому, кому понадобится Rule file глянуть.
Posted: Mon Oct 05, 2015 11:06 am
by YuS
Infocatcher wrote:
Атрибуты в обычных тэгах подсвечены и при редактировании, а тут закрашивает сразу все.
Тут бы тоже сделать нечто вроде... есть же флаг
; 4096 xml fold - "<tag" and "</tag>", "<single" and "/>", "<single" and ">" ("Folds:" section only).
Так ведь тут, как раз, закрашенный полностью тег указывает на то, что это цельный, открывающий тег и у него должен быть ещё и закрывающий, а на первом скрине, как раз "<single" and ">".
Имхо, так даже удобнее определять, какое из правил фолдинга сработало и есть ли ещё и закрывющий тег...
Posted: Mon Oct 05, 2015 11:17 am
by yozhic
YuS
Понятно, что более приоритетные правила из Quotes перекрывают следующие за ними (я их потому и указал в сообщении). Связка QuotesRE и Words срабатывает при отключенных Quotes. Но, как я рассуждаю, если бы дело было только в Quotes, то не срабатывало бы ничего. А тут в строке 7 на картинке срабатывает, а в строке 8 – нет. Разница всего в пробеле, наличие которого в указанных правилах нигде не оговаривается. Т.е., с точки зрения правил, между этими двумя случаями (строками) разницы нет. При этом один (на строке 7) работает, а второй (на строке 8 ) – нет
Posted: Mon Oct 05, 2015 12:32 pm
by YuS
yozhic wrote:А тут в строке 7 на картинке срабатывает, а в строке 8 – нет.