Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

YuS
Любопытный пример. Посмотрел в других редакторах, они почему-то не спотыкаются. Он ведь тоже, наверное, регулярки используют для раскраски...

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

Code: Select all

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

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

Post 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)"
но с этим придется мириться

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

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

Post by YuS »

Для тестов css.coder

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

Post by Cuprum »

YuS
Ваш вариант кодера чуть позднее посмотрю, но вот чтобы не подсвечивалось расширение файла внутри скобок, когда подсвечиваются классы, можно было бы использовать такой вариант:

Code: Select all

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

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

Post 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)

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

Post 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)"

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

Post 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 скроет и этот момент.

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

Post 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? )

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

Post by Lenchik »

Настройки - Редактор 2. Гиперссылки.

Wio
Offline
Posts: 76
Joined: Wed Jan 05, 2011 6:07 am

Post by Wio »

Instructor wrote:Для многострочности "закавыченного" добавляем в синтаксический файл (Coder::CodeFold должен быть включен):
Текст между строками (Smth) не должен подсвечиваться:

Code: Select all

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

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Wio
После добавления правила в "Folds:", правило в "Quotes:" необходимо удалить.

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

Post 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);
Почему решетка во втором цвете не подсвечивается, ума не приложу. И можно ли с этим что-то поделать?

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

Post by YuS »

Cuprum wrote: Почему решетка во втором цвете не подсвечивается, ума не приложу. И можно ли с этим что-то поделать?
Вижу, что предложенный выше вариант ccs.coder не проверялся до сих пор. :)

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

Post by Cuprum »

YuS
Каюсь ;)
Теперь чуть понятнее. Видимо, порядок строк тоже имеет значение.
Немного напрягает, что если id напечатать как цвет, решетка в нем

Image


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

Image



Image

Wio
Offline
Posts: 76
Joined: Wed Jan 05, 2011 6:07 am

Post by Wio »

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

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