Coder plugin (2)
- Author
- Message
- 
				
								Offline
- Posts: 1879
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Instructor 
Можно ли как-то простым способом (одним регулярным выражением) подсветить JavaScript внутри <handler>…</handler>, но при этом не сломать ничего при наличии <handler foo="bar" />?
Пока что сделал вот так:
Но это хак, который сломается на
Кстати... было бы очень здорово, если бы не только подсветка выставлялась в таких областях, но и автодополнение бралось из соответствующего coder-файла. 
Cuprum
Угу.
			
			
									
																
						Можно ли как-то простым способом (одним регулярным выражением) подсветить 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="/">
Cuprum
Угу.
- 
				
								Offline
- Posts: 76
- Joined: Wed Jan 05, 2011 6:07 am
- 
				
								Offline
- Posts: 1879
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Без кавычек – точно нельзя, там XML. Но могут быть одинарные кавычки. Пробелы, по идее, тоже должны отсутствовать.Wio wrote:1. Возможна ли ситуация, когда значения атрибутов задаются без кавычек (<handler path=abc/def />)?
2. Возможна ли ситуация, когда между косой чертой и скобкой расположены пробелы (<handler foo="bar" /_____>)?
Я пытался в таком духе:
Code: Select all
<tag(\s+[^<>]*?[^<>/])?>- 
				
								Offline
- Posts: 76
- Joined: Wed Jan 05, 2011 6:07 am
Infocatcher
Попробуйте такое выражение:
Только оно не увидит <tag foo="bar>1">...</tag>
			
			
									
																
						Попробуйте такое выражение:
Code: Select all
<tag(?=[\s>])(?:[^>]*[^/])?>- 
				
								Offline
- Posts: 1879
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Wio
Хм, а вот не работает...
Вот файл для тестов: https://github.com/Infocatcher/Handy_Cl ... editor.xml
			
			
									
																
						Хм, а вот не работает...
Вот файл для тестов: https://github.com/Infocatcher/Handy_Cl ... editor.xml
- 
				
								Offline
- Posts: 1879
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Пока вот так сделал:
Другое дело, что в атрибутах могут быть attr=">", но это уже ладно.
Там в данном случае если код поехал вовнутрь, то в атрибутах уже никакой экзотики быть не должно.
			
			
									
																
						Code: Select all
<handler(?:\s[^<>]*?)?(?<!/)>Там в данном случае если код поехал вовнутрь, то в атрибутах уже никакой экзотики быть не должно.
- 
				
								Offline
- Posts: 76
- Joined: Wed Jan 05, 2011 6:07 am
Переделал регулярное выражение для таких случаев. Но оно работает только при обработке JS-движком. Встроенный обработчик на нём спотыкается. Может быть, есть какая-нибудь опция переключения движка в файлах *.coder?Infocatcher wrote:в атрибутах могут быть attr=">"
Drugmix
Вот так уже не будет работать: <handler attr=">" foo="bar">...</handler>
- 
				
								Offline
- Posts: 382
- Joined: Wed Sep 28, 2011 3:05 pm
Instructor
Продолжу по подсветке CSS-Less.
В версиях до 4.9.5 директивы с "собачкой" (@import, @charset и т.д.) целиком подсвечивались одним цветом. Сейчас сам символ @ одним цветом, а слово после него .
Хочется вернуть, как было раньше.
Не очень понятно, почему для @font-face, @media и @page в css.coder установлен Parent ID равный 2. Вроде бы все эти директивы используются только на верхнем уровне, без вложенностей в кавычки или скобки.
+ еще желательно добавить @keyframes. Это часть анимаций.
			
			
									
																
						Продолжу по подсветке CSS-Less.
В версиях до 4.9.5 директивы с "собачкой" (@import, @charset и т.д.) целиком подсвечивались одним цветом. Сейчас сам символ @ одним цветом, а слово после него .
Хочется вернуть, как было раньше.
Не очень понятно, почему для @font-face, @media и @page в css.coder установлен Parent ID равный 2. Вроде бы все эти директивы используются только на верхнем уровне, без вложенностей в кавычки или скобки.
+ еще желательно добавить @keyframes. Это часть анимаций.
- 
				
								Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Wio
			
			
									
																
						Code: Select all
1052676   0   0   0   `<handler(?:\s+\w+?=(['"])[^\1]*?\1)*?(?<!/)>`   "</handler>"   ""   0   2   "js.coder"- 
				
								Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
- 
				
								Offline
- Posts: 76
- Joined: Wed Jan 05, 2011 6:07 am
Drugmix
Всё равно не то, пропускает <handler disabled> и <handler_____> (пробелы)
Адаптировал своё выражение под внутренний обработчик:
			
			
									
																
						Всё равно не то, пропускает <handler disabled> и <handler_____> (пробелы)
Адаптировал своё выражение под внутренний обработчик:
Code: Select all
<handler(?=[\s>])(?:[^>"']*(["'])[^\1]*\1)*[^>]*(?<!/)>- 
				
								Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Всё то. Это уже срабатывают какие-то другие правила.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


