Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Wio
Offline
Posts: 76
Joined: Wed Jan 05, 2011 6:07 am

Post by Wio »

Drugmix wrote:Всё то. Это уже срабатывают какие-то другие правила.
Как раз другие правила и создают иллюзию работы вашего. Закомментируйте все правила, кроме вашего, и тогда увидите, что оно спотыкается на указанных примерах. Попробуйте подставить моё регулярное выражение в ваше правило :wink:

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

Post by YuS »

Infocatcher wrote: Можно ли как-то простым способом (одним регулярным выражением) подсветить 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="/">
А "на пальцах", то бишь в картинках можно глянуть, что должно получиться и что именно не должно ломаться? А то есть вроде мысли, но не уверен в том, что же всё таки требуется...

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Wio wrote:
Drugmix wrote:Всё то. Это уже срабатывают какие-то другие правила.
Как раз другие правила и создают иллюзию работы вашего. Закомментируйте все правила, кроме вашего, и тогда увидите, что оно спотыкается на указанных примерах.
Я так понял, что на этих 2 случаях правило как раз и не должно срабатывать и я именно этого и добивался.

Image

Wio wrote:Попробуйте подставить моё регулярное выражение в ваше правило :wink:
А ваше на тех 2 случаях срабатывает, видимо вам это и требовалось.
Я не знаток синтаксисов, но вроде это не правильно.

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

Post by Infocatcher »

YuS wrote:А "на пальцах", то бишь в картинках можно глянуть, что должно получиться и что именно не должно ломаться? А то есть вроде мысли, но не уверен в том, что же всё таки требуется...
Я уже показывал пример файла.
Например, вот такое надо игнорировать и не искать закрывающий тэг:

Code: Select all

<handler event="keypress" keycode="VK_RIGHT" action="this.moveCaret(false, event);" />
А внутри такого надо подсветить JavaScript:

Code: Select all

			<handler event="keypress">
			<![CDATA[
				...
			]]>
			</handler>
Причем может быть и такое:

Code: Select all

<handler event="keypress">
	...
</handler>
Плюс там допустимы всякие разные атрибуты, в которых может быть и «/», и «>». Хотя последнее все же редкость, это скорее код будет и окажется записан в action="...".

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

Post by YuS »

Infocatcher wrote: Например, вот такое надо игнорировать и не искать закрывающий тэг:

Code: Select all

<handler event="keypress" keycode="VK_RIGHT" action="this.moveCaret(false, event);" />
А внутри такого надо подсветить JavaScript:

Code: Select all

			<handler event="keypress">
			<![CDATA[
				...
			]]>
			</handler>

Code: Select all

`<handler(?:\s[^<]+)?(?<!/)>`
На счет подсветки js не уверен (а оно так работает? из другого файла .coder), но с фолдингом вроде справляется и игнорирует то, что выше описано...
Infocatcher wrote: Причем может быть и такое:

Code: Select all

<handler event="keypress">
	...
</handler>
А в чем тут отличие?
Infocatcher wrote: Плюс там допустимы всякие разные атрибуты, в которых может быть и «/», и «>». Хотя последнее все же редкость, это скорее код будет и окажется записан в action="...".
Регэксп вроде работает, но с ">" могут быть пересечения c XBrackets

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

Post by Infocatcher »

YuS wrote:На счет подсветки js не уверен (а оно так работает? из другого файла .coder)
В новых версиях – работает. :roll:
YuS wrote:А в чем тут отличие?
Если отлавливать сам тэг, то разницы никакой. Просто один из вариантов – отлавливать уже <![CDATA[ … ]]>, только это дело не обязательное и может отсутствовать.

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

Post by Instructor »

Kley wrote:в тексте есть слово, например: THEMES;
ввожу the, жму Enter, печатает THEMES;
ввожу the, жму Shift+Enter, печатает theMES;
Неужели это нужно бывает? Почему не Shift+Enter --> themes.
См. Coder 17.8 + тестовая.
Infocatcher wrote:Хм, а еще по умолчанию там JavaScript, так что надо еще и <script>…</script> добавить (и в HTML5 атрибут type не является обязательным).
Cuprum wrote:Хотелось бы, чтобы html.coder отлавливал и подсвечивал внутренности у элементов style и script без атрибута type. Этот атрибут может отсутствовать.
См. Coder 17.8
Infocatcher wrote:Кстати... было бы очень здорово, если бы не только подсветка выставлялась в таких областях, но и автодополнение бралось из соответствующего coder-файла. :roll:
См. Coder 17.8
Wio wrote:

Code: Select all

<tag(?=[\s>])(?:[^>]*[^/])?>
Только оно не увидит <tag foo="bar>1">...</tag>
Тестовая
Cuprum wrote:Сейчас сам символ @ одним цветом, а слово после него

Image
Не воспроизводится.
Не очень понятно, почему для @font-face, @media и @page в css.coder установлен Parent ID равный 2...
+ еще желательно добавить @keyframes.
Изменено.
Last edited by Instructor on Wed Sep 30, 2015 7:35 pm, edited 1 time in total.

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

Post by YuS »

Infocatcher wrote: Например, вот такое надо игнорировать и не искать закрывающий тэг:

Code: Select all

<handler event="keypress" keycode="VK_RIGHT" action="this.moveCaret(false, event);" />
А внутри такого надо подсветить JavaScript:

Code: Select all

			<handler event="keypress">
			<![CDATA[
				...
			]]>
			</handler>
...
Плюс там допустимы всякие разные атрибуты, в которых может быть и «/», и «>». Хотя последнее все же редкость, это скорее код будет и окажется записан в action="...".
В общем, показалось, что подсветка "<![CDATA[ ...]]>" внутри "<handler>...</handler>" из другого файла будет излишней...
Для наглядности сделал коротенький тестовый
Image

Тут xml.coder
Только флаги надо перепроверить для конкретного применения, их вообще не трогал и не изменял, взял готовые из Вашего примера строки секции Fold:...

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

Post by Instructor »

Добавлено: поддержка вложенных .coder'ов (Coder::AutoComplete).
Добавлено: опция для наследования регистра введённых символов (Coder::AutoComplete). Требуется AkelPad 4.9.7 или выше.

Added: support for nested .coder's (Coder::AutoComplete).
Added: option to inherit typed case (Coder::AutoComplete). Required Akelpad 4.9.7 or higher.


Coder plugin v17.8
Last edited by Instructor on Wed Sep 30, 2015 8:06 pm, edited 1 time in total.

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

Post by Cuprum »

Instructor
В версии 17.8 у меня почему-то вложенные @директивы подсвечиваются целиком, а на верхнем уровне только

Image
Тестировал на less-файле.

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

Post by YuS »

Instructor,
Можно ли использовать в .coder файлах несколько идентичных правил (отличие только в цветах подсветки), но с разными ParentID или это категорически противопоказано?
Вопрос возник из наблюдения, что при наличии таких правил, они перекрывают друг друга вплоть до неработоспособности.
Например:

Code: Select all

;1052676=4+4096+1048576
1052676	3	${DEL2}	0	`<handler(?:\s[^<]+)?(?<!/)>`	"</handler>"	""	0	3
;517=1+4+512	
517	0	${VAR}	${OP}	"<![CDATA["  "]]>"      ""      3	0
;517=1+4+512
517	0	0	0	"<![CDATA["  "]]>"      ""      0	0
;4101=1+4+4096
4101	0	0	0	"<!"         ">"        ""      0	1
Дают такой результат:
Image
т.е. второе из двух правил ' "<![CDATA[" "]]>" ' уже не работает, фолдинг по этим строкам (кроме непосредственно вложенных в родителя с RuleID = 3) срабатывает по другим правилам...

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Instructor
ВКЛ.-Дополнять также из документа без синтаксической темы
ВКЛ.-Сохранять регистр введённых символов
ВКЛ.-Наследовать регистр введённых символов
А что-то ничего не изменилось.:( Или я не правильно понял настройки?

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

Post by YuS »

Infocatcher wrote: А внутри такого надо подсветить JavaScript:

Code: Select all

			<handler event="keypress">
			<![CDATA[
				...
			]]>
			</handler>
Что-то тут меня "осенило" :), наверное, нужна не просто подсветка, а подсветка синтаксиса? Тогда, можно добиться максимум

Image

т.е., подсветка атрибутов слева от "=", всё же ломается, т.к. при использовании внешнего .coder, перестают работать RuleID-ParentID... ну и ">" тоже победить не удалось, увы.
js.coder+xml.coder

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

Post by Wio »

Instructor wrote:Тестовая
Заработало.

Позвольте спросить, какой стиль был взят за основу для внутреннего движка? Во всех реализациях, которые я видел, "." обозначает любой символ за исключением \r\n.

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

Post by YuS »

Wio wrote:Во всех реализациях, которые я видел, "." обозначает любой символ за исключением \r\n.
AkelHelp-Rus.htm wrote: (?s) точка '.' соответствует любому одиночному символу (по умолчанию).
(?-s) точка '.' соответствует любому одиночному символу, кроме символа новой строки.
Locked