Page 86 of 99

Posted: Mon Sep 28, 2015 5:51 pm
by Cuprum
Instructor
Хотелось бы, чтобы html.coder отлавливал и подсвечивал внутренности у элементов style и script без атрибута type. Этот атрибут может отсутствовать.

Posted: Mon Sep 28, 2015 8:37 pm
by Infocatcher
Instructor
Можно ли как-то простым способом (одним регулярным выражением) подсветить JavaScript внутри <handler>…</handler>, но при этом не сломать ничего при наличии <handler foo="bar" />?

Пока что сделал вот так:

Code: Select all

;1052676=4+4096+1048576
1052676	0	0	0	`<handler(?:\s[^<>/]*?)?>`	"</handler>"	""	0	2	"js.coder"
Но это хак, который сломается на

Code: Select all

<handler foo="/">
Кстати... было бы очень здорово, если бы не только подсветка выставлялась в таких областях, но и автодополнение бралось из соответствующего coder-файла. :roll:

Cuprum
Угу.

Posted: Tue Sep 29, 2015 5:47 am
by Wio
Instructor
Разобрался, помогло. Спасибо за подсказку!

Infocatcher
1. Возможна ли ситуация, когда значения атрибутов задаются без кавычек (<handler path=abc/def />)?
2. Возможна ли ситуация, когда между косой чертой и скобкой расположены пробелы (<handler foo="bar" /_____>)?

Posted: Tue Sep 29, 2015 6:28 am
by Infocatcher
Wio wrote:1. Возможна ли ситуация, когда значения атрибутов задаются без кавычек (<handler path=abc/def />)?
2. Возможна ли ситуация, когда между косой чертой и скобкой расположены пробелы (<handler foo="bar" /_____>)?
Без кавычек – точно нельзя, там XML. Но могут быть одинарные кавычки. Пробелы, по идее, тоже должны отсутствовать.
Я пытался в таком духе:

Code: Select all

<tag(\s+[^<>]*?[^<>/])?>
Но не работает.

Posted: Tue Sep 29, 2015 11:22 am
by Wio
Infocatcher

Попробуйте такое выражение:

Code: Select all

<tag(?=[\s>])(?:[^>]*[^/])?>
Только оно не увидит <tag foo="bar>1">...</tag>

Posted: Tue Sep 29, 2015 11:39 am
by Infocatcher
Wio
Хм, а вот не работает...
Вот файл для тестов: https://github.com/Infocatcher/Handy_Cl ... editor.xml

Posted: Tue Sep 29, 2015 12:34 pm
by Infocatcher
Пока вот так сделал:

Code: Select all

<handler(?:\s[^<>]*?)?(?<!/)>
Другое дело, что в атрибутах могут быть attr=">", но это уже ладно.
Там в данном случае если код поехал вовнутрь, то в атрибутах уже никакой экзотики быть не должно.

Posted: Tue Sep 29, 2015 12:43 pm
by Wio
Infocatcher
Я думал, что используется движок JS, который не поддерживает negative lookbehind. Значит, есть косяки в реализации регулярных выражений у Instructor.

Posted: Tue Sep 29, 2015 12:45 pm
by Drugmix
Instructor,
А почему правила Folds:
1052676 0 0 0 `<handler(\s.*?)?(?<!/)>` "</handler>" "" 0 2 "js.coder"
1052676 0 0 0 `<handler(\s[^>]*?)?(?<!/)>` "</handler>" "" 0 2 "js.coder"
срабатывают по-разному на таком примере?
<handler />
<handler>
var
</handler>
Правило 1:
Image
Правило 2:
Image
В первом правиле почему-то игнорируется конструкция (?<!/)>

Posted: Tue Sep 29, 2015 2:29 pm
by Wio
Infocatcher wrote:в атрибутах могут быть attr=">"
Переделал регулярное выражение для таких случаев. Но оно работает только при обработке JS-движком. Встроенный обработчик на нём спотыкается. Может быть, есть какая-нибудь опция переключения движка в файлах *.coder?

Drugmix
Вот так уже не будет работать: <handler attr=">" foo="bar">...</handler>

Posted: Tue Sep 29, 2015 3:16 pm
by Cuprum
Instructor
Продолжу по подсветке CSS-Less.
В версиях до 4.9.5 директивы с "собачкой" (@import, @charset и т.д.) целиком подсвечивались одним цветом. Сейчас сам символ @ одним цветом, а слово после него

Image
.
Хочется вернуть, как было раньше.
Не очень понятно, почему для @font-face, @media и @page в css.coder установлен Parent ID равный 2. Вроде бы все эти директивы используются только на верхнем уровне, без вложенностей в кавычки или скобки.
+ еще желательно добавить @keyframes. Это часть анимаций.

Posted: Tue Sep 29, 2015 5:17 pm
by Drugmix
Wio

Code: Select all

1052676   0   0   0   `<handler(?:\s+\w+?=(['"])[^\1]*?\1)*?(?<!/)>`   "</handler>"   ""   0   2   "js.coder"

Posted: Tue Sep 29, 2015 7:10 pm
by Drugmix
Кстати, если с последним правилом поиграться добавив красный цвет тексту, то почему-то очень странно окрашивается:
Image
Это баг или фича?

p.s.: раньше цвета можно было задавать в 4 символа (#f00), а теперь работает только в 7 символов (#ff0000).

Posted: Tue Sep 29, 2015 8:55 pm
by Wio
Drugmix
Всё равно не то, пропускает <handler disabled> и <handler_____> (пробелы)

Адаптировал своё выражение под внутренний обработчик:

Code: Select all

<handler(?=[\s>])(?:[^>"']*(["'])[^\1]*\1)*[^>]*(?<!/)>

Posted: Tue Sep 29, 2015 10:05 pm
by Drugmix
Wio wrote:Drugmix
Всё равно не то, пропускает <handler disabled> и <handler_____> (пробелы)
Всё то. Это уже срабатывают какие-то другие правила.

Если закомментировать

Code: Select all

;4101=1+4+4096
4101	0	0	0	"<!"           ">"           ""         0	1
;4101=1+4+4096
4101	0	0	0	"<"            "</"          ""         0	1
;4101=1+4+4096
4101	0	0	0	"<"            "/>"          ""         0	1
то с моим правилом всё начинает работать корректно и на этих примерах.