Drugmix wrote:правило не работало из-за того, как странно regex parser обрабатывает (call|goto) - достаточно изменить на (goto|call) и всё заработает
Не воспроизводится - работает одинаково.
Posted: Wed Feb 12, 2014 3:17 pm
by Drugmix
Instructor
перепроверил у себя - и правда работает одинаково. Прошу прощения, возможно, я во время одной из проверок забыл обновить кэш после правки правила из состояния, когда оно было нерабочим. Забираю свои слова назад.
А предположение такое сделал потому что у меня уже были некоторые правила (упоминалось в этой же теме или в теме про регулярные выражения), когда перебор ИЛИ ИЛИ вариантов работал так, что порядок вариантов влиял на результат, например:
Начало и конец строки тут лишние, комментарий тоже.
FeyFre
Drugmix
Спасибо за пояснения и предложения, правила писались в три приема между делом, никак руки не доходили очеловечить Остановился на таком варианте:
Skif_off
я в своём сообщении ошибку то подправил, и хоть и с ней всё работает нормально, но формально парсер имеет полное право сработать по заданному правилу и ошибочно:
;Colors
; Color need to be in #RRGGBB format.
; If color equal to zero, then color ignored.
;
;Font styles
; 0 ignored.
; 1 normal.
; 2 bold.
; 3 italic.
; 4 bold italic.
;
;For comfort file viewing/editing set tab size to 8 or higher.
;Flags (sum of the members)
; 1 case sensitive.
; 2 word is a composition of characters ("Words:" section only). Example: "0123456789" - highlight words that contain only digits.
; 4 quote end required ("Quotes:" section only).
; 8 quote start string is ignored and last meet delimiter used as quote start ("Quotes:" section only).
; 16 quote end string is ignored and first meet delimiter used as quote end ("Quotes:" section only).
; 32 don't highlight quote start ("Quotes:" section only).
; 64 don't highlight quote end ("Quotes:" section only).
; 128 don't catch and don't highlight quote start ("Quotes:" section only).
; 256 don't catch and don't highlight quote end ("Quotes:" section only).
; 512 quote start, delimiter or word located at line start.
; 1024 quote end, delimiter or word located at line end.
; 2048 quote start is surrounded with delimiters ("Quotes:" section only).
; 4096 quote end is surrounded with delimiters ("Quotes:" section only).
; 8192 quote doesn't contain delimiters ("Quotes:" section only).
; 16384 only quote start string is catched ("Quotes:" section only).
; 32768 quote doesn't contain any character ("Quotes:" section only).
;Flags (sum of the members)
; 1 case sensitive.
; 2 force get fold name for function list from left at the fold start ("Folds:" section only).
; 4 force get fold name for function list from right at the fold start, including fold start ("Folds:" section only).
; 8 fold start located at line start ("Folds:" section only).
; 16 fold start located at line end ("Folds:" section only).
; 32 fold end located at line start ("Folds:" section only).
; 64 fold end located at line end ("Folds:" section only).
; 128 don't catch fold end ("Folds:" section) or skip end ("Skips:" section).
; 256 additional to 128 flag - more priority is given to sibling level instead of parent level ("Folds:" section only).
; 512 comment fold - fold ignore any other folds and skips inside ("Folds:" section only).
; 1024 reserved.
; 2048 deny fold - founded fold will be ignored ("Folds:" section only).
; 4096 xml fold - "<tag" and "</tag>", "<single" and "/>", "<single" and ">" ("Folds:" section only).
; 8192 don't check delimiters from left of fold start ("Folds:" section only).
; 16384 don't check delimiters from right of fold start ("Folds:" section only).
; 32768 don't check delimiters from left of fold end ("Folds:" section only).
; 65536 don't check delimiters from right of fold end ("Folds:" section only).
; 131072 deny delimiters ("Folds:" section only).
; 262144 don't show fold in list ("Folds:" section only).
Blocks:
;======================================================================
;Abbreviations and blocks
;
; $~abbr normal abbreviation.
; $=abbr exact abbreviation. May contain delimiters.
; $[] set caret to this position. Can be multiple (hot spots).
; $[text] select text. Can be multiple (hot spots).
; $$ symbol $.
; $\] escape symbol ]. Can be used in $[text] block: $[One [1$\] ].
; ${VAR} variable assigned from Coder::Settings.
; $; comment line.
;======================================================================
$~echo
echo "$[]"
$~for
for $[] in ($[]) do ($[])
Posted: Wed Feb 12, 2014 7:41 pm
by Drugmix
Skif_off wrote:Так вообще не работает.
Я просто забыл ?: в начале скобок поставить, поэтому ничего и не окрасилось, но правило сработало на самом деле.
Posted: Wed Feb 12, 2014 7:48 pm
by Skif_off
koros
Не знаю, в чем может быть дело, скопировал все себе - нормально, ничего не слетает, все подсвечивается. Или дело в том, что у меня тестовая версия? Открыто несколько файлов + несохраненные, проверить с 4.8.7 пока не могу)
Skif_off wrote:koros
Не знаю, в чем может быть дело, скопировал все себе - нормально, ничего не слетает, все подсвечивается. Или дело в том, что у меня тестовая версия? Открыто несколько файлов + несохраненные, проверить с 4.8.7 пока не могу)
Еще по поводу call: calld:\work\test.bat "%var%"
Это не дело, наверное, все-таки разнесу.
Ещё раз собрал перезагрузил AkelPad - вроде всё заработало как надо. Спасибо.
Вот что я подумал:
call test.bat onespace
call d:\work\test.bat "%var%"
test.bat и d:\work\test.bat - вообще не надо подсвечивать, как метки типа :label. Как это сделать?
А по поводу files= - я вообще эту строку уберу, т.к. папка files встречается гораздо чаще, чем команда files.
И ещё вопрос для знатоков: возможно ли в coder.coder задать подсветку так, чтобы при просмотре любого *.coder переменные типа ${COMM} подсвечивались тем цветом, который задан для этой переменной в текущей цветовой теме?
Posted: Wed Feb 12, 2014 8:31 pm
by Skif_off
Drugmix
Спасибо, исправил.
koros wrote:test.bat и d:\work\test.bat - вообще не надо подсвечивать, как метки типа :label. Как это сделать?
Я, вероятно, разделю правила для call и goto.
koros wrote:И ещё вопрос для знатоков: возможно ли в coder.coder задать подсветку так, чтобы при просмотре любого *.coder переменные типа ${COMM} подсвечивались тем цветом, который задан для этой переменной в текущей цветовой теме?
Не знаток, но делал как-то: закомментировать в Quotes
; внешние команды
0 "\b(\w+[\-\w]*\w*)\.(bat|cmd|com|exe)" "\1=(0,${NUM},0) \2=(0,${NUM},0)"
Posted: Wed Feb 12, 2014 10:04 pm
by FeyFre
Наверное не так поняли. В тесте "goto :wrongsyntax_no_colorisation_label" - ошибка синтаксиса, соответственно раскраска не должна распространяться. Меток начинающихся на : не существует(кроме псевдометки :EOF)