Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

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

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

Post by Cuprum »

Добавил еще свойств.

css.coder 1.09

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

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

Post 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} - не мало для захвата цифр? Число символов брал практически "с потолка"

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

CleriC
Между названием секции и ее содержимым (равно как и в содержимом) не должно быть пустых строк.
Если она нужна, ставится коммент - ";" в начале строки.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post 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 (идет в дистрибутиве).

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

Post by YuS »

Skif_off wrote:Внезапно перестало работать правило

Code: Select all

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

Offline
Posts: 41
Joined: Tue Mar 27, 2012 4:25 pm

Post by CleriC »

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

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post 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 кто-нибудь пользует? Не так давно вносил правки и что-то как-то раздражает подсветка цифр.

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

Skif_off wrote:latex.coder кто-нибудь пользует? Не так давно вносил правки и что-то как-то раздражает подсветка цифр.
В цветовой теме, которую я использую, не так уж сильно цифры выделяются, на мой взгляд.

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

Post by YuS »

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

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

Post by DV »

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

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

Post by Infocatcher »

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

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

Post by YuS »

DV wrote:Дело не только в "ИЛИ", а ещё и в наличии символа после "+".
Очень даже может быть, это более точное описание возможного бага.

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

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

Post by YuS »

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

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

Post by Infocatcher »

YuS
Ну так то особенности реализации.
++ не реализовано, а жадность работает как-то неклассически. :)

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

Code: Select all

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