Page 56 of 99

Posted: Tue Jul 29, 2014 7:32 am
by CleriC
Разобрался. Закомментировал 3 строчки (начинающиеся на 173) в секции Folds:

Code: Select all

Folds:
;=====================================
;Flags  Font    Color   Color   Fold      Fold      Delimiters
;       style   text    bkgrnd  start     end
;=====================================

173	0	0	0	[       [       ""
173	0	0	0	"***"       "***"       ""
173	0	0	0	"---"       "---"       ""
И вот эту строчку:

Code: Select all

;--Latin alphabet--
2	0	${VAR}	0	"ABCDEFGHIJKLMNOPQRSTUVWXYZŻĆĘółąśńźäöüßëéèàòùôçêûïâáõíãúİŞğıÆØČŽŮĚŘýňšťåľďЇіњџЈҐŵįŋĐŏÌĪăŔñőűўЄЅћљќЂ€āēģūļņķ"
Сейчас при загрузке ошибок нет. Странно, правда, что ему не понравилось.

Posted: Tue Jul 29, 2014 11:11 am
by Cuprum
Добавил еще свойств.

css.coder 1.09

Вот только что-то не нравится мне подсветка цифр. Рябит уж слишком. ) Может быть, цифры оставить без подсветки, а подсвечивать единицы измерения - px, rem, in, em, rad и т.д.? Их достаточно много, можно даже все единицы измерения вынести в отдельный блок. Но будет ли так работать?

Posted: Tue Jul 29, 2014 12:30 pm
by YuS
Cuprum wrote: Может быть, цифры оставить без подсветки, а подсвечивать единицы измерения - px, rem, in, em, rad и т.д.? Их достаточно много, можно даже все единицы измерения вынести в отдельный блок. Но будет ли так работать?
Конечно, будет. Надо здесь:

Code: Select all

"(-)?(\d{1,8})\s*(px|em|s|rem|deg)?"	"\1=(0,${DEL2},0) \2=(0,${NUM},0) \3=(0,${DEL1},0)"
${NUM} - заменить либо на 0, либо подсветить чем-то более нейтральным...
Кстати, \d{1,8} - не мало для захвата цифр? Число символов брал практически "с потолка"

Posted: Tue Jul 29, 2014 1:11 pm
by Skif_off
CleriC
Между названием секции и ее содержимым (равно как и в содержимом) не должно быть пустых строк.
Если она нужна, ставится коммент - ";" в начале строки.

Posted: Tue Jul 29, 2014 8:13 pm
by Skif_off
Внезапно перестало работать правило

Code: Select all

1	"(\()(c(a|d)+r)"	"\1=(0,${DEL1},0) \2=(0,${OP},0)"
и подобные. В чем может быть дело? Не помню, когда добавлял, раньше работало.

Добавлено:
Перестало работать начиная с AkelPad 4.8.9 и Coder 13.5 (идет в дистрибутиве).

Posted: Wed Jul 30, 2014 2:34 am
by YuS
Skif_off wrote:Внезапно перестало работать правило

Code: Select all

1	"(\()(c(a|d)+r)"	"\1=(0,${DEL1},0) \2=(0,${OP},0)"
и подобные. В чем может быть дело?
Образец бы тестового массива глянуть, ну там где не работает...

Posted: Wed Jul 30, 2014 3:12 am
by CleriC
Skif_off wrote:CleriC
Между названием секции и ее содержимым (равно как и в содержимом) не должно быть пустых строк.
Если она нужна, ставится коммент - ";" в начале строки.
Спасибо. Удалил пустые строки и всё стало нормально.

Posted: Wed Jul 30, 2014 3:49 am
by Skif_off
YuS wrote:Образец бы тестового массива глянуть, ну там где не работает...
Подумал - очевидно :)
(car и (cdr захватываются, а, например, (caar, (cadr, (caadr уже нет.
В принципе, исправить легко

Code: Select all

1	"(\()(c[ad]+r)"	"\1=(0,${DEL1},0) \2=(0,${OP},0)"
Но хотелось бы понять в чем дело? Баг? Или результат исправления старого бага? Или приведение поддержки к некоей канонiчности типа POSIX или PCRE? Я не большой знаток регулярных выражений и раньше работало.

Кстати по цифрам, latex.coder кто-нибудь пользует? Не так давно вносил правки и что-то как-то раздражает подсветка цифр.

Posted: Wed Jul 30, 2014 8:25 am
by Lenchik
Skif_off wrote:latex.coder кто-нибудь пользует? Не так давно вносил правки и что-то как-то раздражает подсветка цифр.
В цветовой теме, которую я использую, не так уж сильно цифры выделяются, на мой взгляд.

Posted: Wed Jul 30, 2014 9:23 am
by YuS
Skif_off wrote: Но хотелось бы понять в чем дело? Баг? Или результат исправления старого бага? Или приведение поддержки к некоей канонiчности типа POSIX или PCRE?
Очень похоже, что баг, не работают квантификаторы в группе с вариантами "или".
Видимо, это случилось когда правились lookbehind-ы. Но по всем канонам должны работать такие группы, ибо всё что внутри группы, просто обязано считаться единым целым и работать с квантификаторами.

Posted: Wed Jul 30, 2014 11:00 am
by DV
Дело не только в "ИЛИ", а ещё и в наличии символа после "+".
Например, такой вариант работает корректно: (\()(c(a|d)+)
А как только добавляем "r" после "+", то перестаёт срабатывать на комбинации (caar, (cadr, (cdar и т.д.: (\()(c(a|d)+r)

Posted: Wed Jul 30, 2014 11:01 am
by Infocatcher
DV wrote:Дело не только в "ИЛИ", а ещё и в наличии символа после "+".
Например, такой вариант работает корректно: (\()(c(a|d)+)
А как только добавляем "r" после "+", то перестаёт срабатывать на комбинации (caar, (cadr, (cdar и т.д.: (\()(c(a|d)+r)
Помнится, там чрезмерная жадность реализована, так что есть смысл попробовать (\()(c(a|d)+?r)

Posted: Wed Jul 30, 2014 11:27 am
by YuS
DV wrote:Дело не только в "ИЛИ", а ещё и в наличии символа после "+".
Очень даже может быть, это более точное описание возможного бага.

PS Кстати, на счет lookbehind-ов...
В теме много раз уже попадалось их обсуждение и обсуждение сопутствующего ограничения для них (фиксированное число символов).
Может быть, в данной ситуации помогла бы реализация метасимвола \K ?
Этот метасимвол отрезает всё, что было до него, естественно с проверкой шаблона, и в итоговой подстроке оказывается только то, что идет после него.
Например ищем в таком тексте:
xyzg fhjabc def
шаблон:
.*[^abc]\K(abc)(?= def)
В итоговой строке получим:
abc
- причем в этом случае, всё остальное окажется не захваченным. Это в регулярках coder-a было бы очень хорошим подспорьем, имхо.

Posted: Wed Jul 30, 2014 11:32 am
by YuS
Infocatcher wrote:Помнится, там чрезмерная жадность реализована, так что есть смысл попробовать (\()(c(a|d)+?r)
Так чрезмерная жадность, это уже "++" должно быть, но в любом случае (a|d)+r при любой жадности, не должно спотыкаться на символах идущих после "+", ведь они не попадают в шаблон жадной группы.

Posted: Wed Jul 30, 2014 12:49 pm
by Infocatcher
YuS
Ну так то особенности реализации.
++ не реализовано, а жадность работает как-то неклассически. :)

Более того, я сейчас полез проверять, так на вот таком тексте

Code: Select all

test
test test test
работает только «t[a-z]+?t», а «t[a-z]+t» не находит вообще ничего (я так понимаю, оно «поедает» всю последовательность, а назад, если не найдено, не возвращается). И явно больше похоже не «t[a-z]++t».