Page 53 of 99

Posted: Mon Jul 21, 2014 6:13 pm
by Cuprum
YuS
Любопытный пример. Посмотрел в других редакторах, они почему-то не спотыкаются. Он ведь тоже, наверное, регулярки используют для раскраски...

Upd.
Так, походу сам ошибся используя для этого примера не тот регэксп. Вот с таким

Code: Select all

0   "(\.(?!\d|--|-\d)(\w|-)+)"   "\1=(0,${VAR},0)"
работает.

Posted: Mon Jul 21, 2014 9:01 pm
by YuS
Cuprum wrote: Он ведь тоже, наверное, регулярки используют для раскраски...
не факт
Cuprum wrote:

Code: Select all

0   "(\.(?!\d|--|-\d)(\w|-)+)"   "\1=(0,${VAR},0)"
работает.
работает-то оно работает, но это частный случай. Например, есть такие записи:

Code: Select all

	background: url(../images/mm_avatar_bg.png) expand;
такой шаблон их тоже будет подсвечивать местами (.png). К тому же, это ведь только классы ...
Хотя, как вариант, можно выделить только классы и ID. В основном ведь записи у них уникальные, но группировать их можно именно из-за "." и "#" (и если не брать в расчет варианты со скобками), а редкие случаи, как вышеописанный, можно и не учитывать:

Code: Select all

0	"(\.)((?!\d|--|-\d)(\w|-)+)"	"\1=(0,${DEL2},0) \2=(0,${VAR},0)"
0	"(\#)((?!\d|--|-\d)(\w|-)+)"	"\1=(0,${DEL2},0) \2=(0,${IF},0)"
- с ID будут проблемы с пересекающейся регуляркой:

Code: Select all

0	"(#)([A-F\d]{3,6}\b)"  "\1=(0,0,\2)"
но с этим придется мириться

Вот и ещё добавили расцветку общими усилиями. :)

Posted: Tue Jul 22, 2014 7:14 am
by YuS
Для тестов css.coder

Posted: Tue Jul 22, 2014 7:30 am
by Cuprum
YuS
Ваш вариант кодера чуть позднее посмотрю, но вот чтобы не подсвечивалось расширение файла внутри скобок, когда подсвечиваются классы, можно было бы использовать такой вариант:

Code: Select all

0   "(\.(?!\d|--|-\d)(?:[\w\-]+))[\"\']?\s*(?!\))" "\1=(0,${VAR},0)"
только что-то он у меня выдает ошибку, хотя вроде с т.з. синтаксиса написано правильно...

Posted: Tue Jul 22, 2014 9:19 am
by YuS
Cuprum wrote:YuS
чтобы не подсвечивалось расширение файла внутри скобок, когда подсвечиваются классы, можно было бы использовать такой вариант:

Code: Select all

0   "(\.(?!\d|--|-\d)(?:[\w\-]+))["\']?\s*(?!\))" "\1=(0,${VAR},0)"
Не, так не пойдет, необязательно ведь URL должен заканчиваться расширением файла, в ссылках могут присутствовать символы не попадающие в \w, например так:

Code: Select all

url(../search?fr=cb-max&serveUrl=s.maxthon.com&ei=utf-8&p=%us)
Cuprum wrote: только что-то он у меня выдает ошибку, хотя вроде с т.з. синтаксиса написано правильно...
Одной скобки не хватает...
Кстати, вот этот вариант:

Code: Select all

(?!\d|--|-\d)
не работает таки (хоть ошибку и не дает), надо так:

Code: Select all

(?!\d)(?!--)(?!-\d)

Posted: Tue Jul 22, 2014 4:23 pm
by Cuprum
YuS
Одной скобки не хватает...
Не, там дело не в скобках было; походу спотыкалось о кавычки. Если заключить правило в такие кавычки `

Code: Select all

0   `(\.(?!\d|--|-\d)(?:[\w\-]+))[\"\']?\s*(?!\))` `\1=(0,${VAR},0)`
то работает.
Кстати, вот этот вариант:

Code: Select all

(?!\d|--|-\d)	
не работает
Проверил оба, оба работают. Это если для отрицательной ретроспективной, то надо именно так:

Code: Select all

(?<!ab)(?<!cd)
Не, так не пойдет, необязательно ведь URL должен заканчиваться расширением файла, в ссылках могут присутствовать символы не попадающие в \w, например так:

Code: Select all

url(../search?fr=cb-max&serveUrl=s.maxthon.com&ei=utf-8&p=%us)
Можно тогда просто не подсвечивать в скобках:

Code: Select all

0	"(\.(?!\d|--|-\d)[\w\-]+)\b" "\1=(0,${VAR},0)"
0	"\(.*(\.[\w\-]+).*\)" "\1=(0,0,0)"

Posted: Tue Jul 22, 2014 5:27 pm
by YuS
Cuprum wrote: Не, там дело не в скобках было; походу спотыкалось о кавычки.
Действительно, обсчитался со скобками, там ведь экранирована была одна...
Cuprum wrote:
Кстати, вот этот вариант:

Code: Select all

(?!\d|--|-\d)	
не работает
Проверил оба, оба работают.
Не, на моей версии (релиз 4.8.9 x64) работает некорректно (возможно баг). Вот такая строка:

Code: Select all

0	"(\.)(?!\d|--|-\d)(\w|-)+"	"\1=(0,${DEL2},0) \2=(0,${VAR},0)
подсвечивает точку с цифрой:

Code: Select all

background: rgba(209, 210, 211, .8);
и дело не в скобках, подсвечивается именно одна точка с одной цифрой в любом месте (если цифр больше, то не подсвечивается), хотя по условию не должна бы. А вот такой вариант:

Code: Select all

0	"(\.)(?!\d)(?!--)(?!-\d)(\w|-)+"	"\1=(0,${DEL2},0) \2=(0,${VAR},0)"
работает корректно.
Cuprum wrote: Можно тогда просто не подсвечивать в скобках:

Code: Select all

0	"(\.(?!\d|--|-\d)[\w\-]+)\b" "\1=(0,${VAR},0)"
0	"\(.*(\.[\w\-]+).*\)" "\1=(0,0,0)"
Это плохой выход, подсветка в скобках тоже нужна. В принципе, этот момент не часто встречается, можно не учитывать, а если ссылка будет полной, то подсветка URL скроет и этот момент.

Posted: Tue Jul 22, 2014 5:58 pm
by Cuprum
YuS
Да, подтверждаю. Просто такой вариант

Code: Select all

background: rgba(209, 210, 211, .8);
я не тестировал.
Посмотрел на regex101.com - оба варианта

Code: Select all

(\.(?!\d)(?!--)(?!-\d)[\w\-]+)
(\.(?!\d|--|-\d)[\w\-]+)
дают одинаковый результат - не захватывают точку с цифрой. Значит, баг. Тогда просьба к Instructor-у поправить.
а если ссылка будет полной, то подсветка URL скроет и этот момент.
Разве есть подсветка URL? )

Posted: Tue Jul 22, 2014 7:16 pm
by Lenchik
Настройки - Редактор 2. Гиперссылки.

Posted: Wed Jul 23, 2014 10:07 am
by Wio
Instructor wrote:Для многострочности "закавыченного" добавляем в синтаксический файл (Coder::CodeFold должен быть включен):
Текст между строками (Smth) не должен подсвечиваться:

Code: Select all

var Bar = "It is too \ 
	fine a day to " + Smth + "."; 
А без Coder::CodeFold нельзя что-нибудь придумать?

Posted: Wed Jul 23, 2014 11:25 am
by Instructor
Wio
После добавления правила в "Folds:", правило в "Quotes:" необходимо удалить.

Posted: Wed Jul 23, 2014 1:23 pm
by Cuprum
Lenchik
Только там могут быть не только гиперссылки но и просто пути.

По поводу ID. Вот такая связка неплохо себя показывает

Code: Select all

0   "(#(?!\d)(?!--)(?!-\d)(\w|-)+)"  "\1=(0,${VAR},0)"
0   ":.*(#)([A-F\d]{6}|[A-F\d]{3})"  "\1=(0,0,\2)"
Но только до тех пор, пока нет нескольких значений цвета, типа

Code: Select all

background: linear-gradient(to right, #ff0, #ff0000);
Почему решетка во втором цвете не подсвечивается, ума не приложу. И можно ли с этим что-то поделать?

Posted: Wed Jul 23, 2014 2:48 pm
by YuS
Cuprum wrote: Почему решетка во втором цвете не подсвечивается, ума не приложу. И можно ли с этим что-то поделать?
Вижу, что предложенный выше вариант ccs.coder не проверялся до сих пор. :)

Posted: Wed Jul 23, 2014 4:57 pm
by Cuprum
YuS
Каюсь ;)
Теперь чуть понятнее. Видимо, порядок строк тоже имеет значение.
Немного напрягает, что если id напечатать как цвет, решетка в нем

Image


+ при ручной печати цвета, во время набора первых 2 симолов они

Image



Image

Posted: Wed Jul 23, 2014 5:01 pm
by Wio
Instructor wrote:После добавления правила в "Folds:", правило в "Quotes:" необходимо удалить.
Оно как бы работает, но совершенно не учитывает наличие обратной косой черты в конце строки, т.е. если удалить \, то блок все равно подсвечивается. К тому же, если удалить одну кавычку, то не все идущие впереди кавычки учитываются, и подсветка начинает глючить.

По правде говоря, плагин Coder::CodeFold совершенно неудобен в ежедневной работе. Пожалуй, я пока обойдусь без подсветки многострочного варианта. Надеюсь на доработку Coder::HighLight в будущем, чтобы не было необходимости прибегать к помощи Coder::CodeFold.