Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 58
Joined: Sat Apr 12, 2008 11:43 am

Post by koros »

Можно ли в bat.coder подсветить слово, которое написано сразу после кавычек (например, "usebackq)?

Я убрал из Quotes:

Code: Select all

5	3	${STR}	0	`"`	`"`	""	""	""
и добавил в Words:

Code: Select all

0	2	${IF}	0	usebackq
но
"usebackq - не подсвечивается
" usebackq (между кавычкой и usebackq - пробел) - подсвечивается

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

koros
Добавьте в Delimiters:

Code: Select all

1	0	0	0	`"`

Offline
Posts: 58
Joined: Sat Apr 12, 2008 11:43 am

Post by koros »

Skif_off wrote:koros
Добавьте в Delimiters:

Code: Select all

1	0	0	0	`"`
Спасибо - так заработало.
И еще вопросик: как сделать, чтобы подсвечивалось :Function не только в строке

Code: Select all

goto :Function
но и в строке

call :Function Params

То есть, когда после :Function есть еще слова. Я так понимаю, что надо заменить 1297 в строке

Code: Select all

1297	2	${AREA}	0	":"	""	""	""	""
Но вот на что?

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

koros
Это правило подсвечивает метки только в начале строк.

Если нужно подсветить так: call :Function Params
то у себя в QuotesRE добавил

Code: Select all

;метки
0	"(?<=goto)\s?:{0,1}\w+"	"\0=(2,0,0)"
0	"(?<=call)\s?:{0,1}\w+"	"\0=(2,0,0)"

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

Post by Drugmix »

Skif_off
эквивалент для

Code: Select all

:{0,1}
[/b] -

Code: Select all

:?
[/b]

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Товарищи, только не забывайте что там должно быть

Code: Select all

(call)|(goto)((\s*(?=:):)|(\s+))\w+

Offline
Posts: 58
Joined: Sat Apr 12, 2008 11:43 am

Post by koros »

Спасибо - все получилось

Code: Select all

0   "(?<=goto)\s?:?\w+"   "\0=(2,${AREA},0)"
0   "(?<=call)\s?:?\w+"   "\0=(2,${AREA},0)"

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

koros, пробел обязателен если нету двоеточия. И пробелов может быть больше одного(я правило написал выше которое это всё учитывает).

И оператор goto имеет синтаксис "goto метка" и не имеет синтаксиса "goto :метка", и метка не может содержать двоеточие в начале, за исключением псевдометки ":EOF". Конечно если правила не собираетесь показывать народу, и 100% уверены что никогда не будете пользоваться тем что Ваше правило не покрывает, то можете не доделывать ;)

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

Post by Drugmix »

На мой взгляд, должно быть как-то так:

Code: Select all

0   "^\s*(?:(call|goto)\s+)?:?(\w+)\s*([^;])*((?<=\s);.*$)?$"   "\1=(0,${OP},0) \2=(0,${TAG},0) \3=(0,${ATTR},0) \4=(3,${COMM},0)"
Last edited by Drugmix on Wed Feb 12, 2014 1:15 pm, edited 3 times in total.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Drugmix, не претендую на законченность правила, мое дело пнуть в правильном направлении(в предыдущем сообщении я уточнил какую ошибку я имел в виду правилом, и с учетом моего сообщения ваше новое правило тоже не совсем то. Нет необходимости лепить goto и call в одно правило - уж слишком оно станет громоздким, если не невозможным)

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

Post by Drugmix »

FeyFre
2 простых правила, вроде как, будут работать медленней 1 более комплексного. И да, я ошибся по поводу того, что оно ничего не подсветит - если считать что это поправка к предыдущему - то там же указывается цвет для \0=, а значит подсвечиваться всё будет.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Проверьте на контрольных примерах(с табуляциями в качестве разделителя опустил)

Code: Select all

call test.bat onespace
call  test.bat twospaces
call:lable nospaces
call :label onespace
call  :label twospaces
call            :label dozenspaces
goto label1sp
goto  label2sp
goto           label12sp
goto :EOF
goto:EOF
goto :wrongsyntax_no_colorisation_label

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

Post by Drugmix »

FeyFre
Я же не знаю что это за язык и какой у него синтаксис:
1. раз перед : возможно любое кол-во пробелов, то следует

Code: Select all

^\s*(?:(call|goto)\s+)?:?
заменить на более простую конструкцию

Code: Select all

^\s*(call|goto)(?:\s*:|\s+)
2. раз в названии ярлыка могут быть и точки, то следует (\w+) заменить как минимум на

Code: Select all

([\w\.]+)
а как максимум - ещё и уточнить всякие вопросы о том сколько их может быть и где: например, если подразумевается простой стандарт test.file.name.bat, то можно изменить группу на

Code: Select all

(\w+(?:\.\w+)*)
3. возможны ли в этом языке комментарии в конце строки и как они задаются? я предположил, что могут и задаются точкой с запятой после пробельного символа.
4. не ясно по какому принципу следует определять, что последнюю строку из вашего примера не стоит окрашивать.

Итого, предварительный вариант получается такой:

Code: Select all

0	"^\s*(call|goto)(?:\s*:|\s+)(\w+(?:\.\w+)*)([^;])*((?<=\s);.*$)?$" "\1=(0,${OP},0) \2=(0,${TAG},0) \3=(0,${ATTR},0) \4=(3,${COMM},0)"
Last edited by Drugmix on Wed Feb 12, 2014 4:46 pm, edited 1 time in total.

Offline
Posts: 58
Joined: Sat Apr 12, 2008 11:43 am

Post by koros »

FeyFre
Drugmix
Спасибо за пояснения, но я не совсем понимаю как работает секция QuotesRE. Вариант Drugmix у меня не работает. Может кто-нибудь написать окончательный вариант, чтобы подсвечивались и "goto метка", и "goto :метка" и "call :метка" (пробелов - любое количество), причем :метка (метка) подсвечивалась бы цветом ${AREA}?
Заранее спасибо.

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

Post by Drugmix »

koros
попробуйте вот это правило:

Code: Select all

0   "^\s*(goto|call)(?:\s+|\s*:)(\w+(?:\.\w+)*)([^;])*((?<=\s);.*$)?$" "\1=(0,${OP},0) \2=(0,${AREA},0) \3=(0,${ATTR},0) \4=(3,${COMM},0)"
:
Image
Last edited by Drugmix on Wed Feb 12, 2014 4:46 pm, edited 2 times in total.
Locked