AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Coder plugin (2)
Goto page Previous  1, 2, 3 ... 34, 35, 36 ... 51, 52, 53  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
koros



Joined: 12 Apr 2008
Posts: 54

PostPosted: Tue Feb 11, 2014 1:12 pm    Post subject: Reply with quote

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

Я убрал из Quotes:
Code:
5   3   ${STR}   0   `"`   `"`   ""   ""   ""

и добавил в Words:
Code:
0   2   ${IF}   0   usebackq


но
"usebackq - не подсвечивается
" usebackq (между кавычкой и usebackq - пробел) - подсвечивается
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 249

PostPosted: Tue Feb 11, 2014 4:56 pm    Post subject: Reply with quote

koros
Добавьте в Delimiters:
Code:
1   0   0   0   `"`
Back to top
View user's profile Send private message
koros



Joined: 12 Apr 2008
Posts: 54

PostPosted: Wed Feb 12, 2014 5:04 am    Post subject: Reply with quote

Skif_off wrote:
koros
Добавьте в Delimiters:
Code:
1   0   0   0   `"`


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

Code:
goto :Function


но и в строке

call :Function Params

То есть, когда после :Function есть еще слова. Я так понимаю, что надо заменить 1297 в строке
Code:
1297   2   ${AREA}   0   ":"   ""   ""   ""   ""

Но вот на что?
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 249

PostPosted: Wed Feb 12, 2014 10:23 am    Post subject: Reply with quote

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

Если нужно подсветить так: call :Function Params
то у себя в QuotesRE добавил
Code:
;метки
0   "(?<=goto)\s?:{0,1}\w+"   "\0=(2,0,0)"
0   "(?<=call)\s?:{0,1}\w+"   "\0=(2,0,0)"
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 381

PostPosted: Wed Feb 12, 2014 10:36 am    Post subject: Reply with quote

Skif_off
эквивалент для
Code:
:{0,1}
-
Code:
:?
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2031
Location: Vinnitsa, Ukraine

PostPosted: Wed Feb 12, 2014 11:21 am    Post subject: Reply with quote

Товарищи, только не забывайте что там должно быть
Code:
(call)|(goto)((\s*(?=:):)|(\s+))\w+
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
koros



Joined: 12 Apr 2008
Posts: 54

PostPosted: Wed Feb 12, 2014 11:48 am    Post subject: Reply with quote

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

Code:
0   "(?<=goto)\s?:?\w+"   "\0=(2,${AREA},0)"
0   "(?<=call)\s?:?\w+"   "\0=(2,${AREA},0)"
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2031
Location: Vinnitsa, Ukraine

PostPosted: Wed Feb 12, 2014 12:19 pm    Post subject: Reply with quote

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

И оператор goto имеет синтаксис "goto метка" и не имеет синтаксиса "goto :метка", и метка не может содержать двоеточие в начале, за исключением псевдометки ":EOF". Конечно если правила не собираетесь показывать народу, и 100% уверены что никогда не будете пользоваться тем что Ваше правило не покрывает, то можете не доделывать Wink
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Drugmix



Joined: 08 Apr 2013
Posts: 381

PostPosted: Wed Feb 12, 2014 12:20 pm    Post subject: Reply with quote

На мой взгляд, должно быть как-то так:
Code:
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
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2031
Location: Vinnitsa, Ukraine

PostPosted: Wed Feb 12, 2014 12:26 pm    Post subject: Reply with quote

Drugmix, не претендую на законченность правила, мое дело пнуть в правильном направлении(в предыдущем сообщении я уточнил какую ошибку я имел в виду правилом, и с учетом моего сообщения ваше новое правило тоже не совсем то. Нет необходимости лепить goto и call в одно правило - уж слишком оно станет громоздким, если не невозможным)
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Drugmix



Joined: 08 Apr 2013
Posts: 381

PostPosted: Wed Feb 12, 2014 12:28 pm    Post subject: Reply with quote

FeyFre
2 простых правила, вроде как, будут работать медленней 1 более комплексного. И да, я ошибся по поводу того, что оно ничего не подсветит - если считать что это поправка к предыдущему - то там же указывается цвет для \0=, а значит подсвечиваться всё будет.
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2031
Location: Vinnitsa, Ukraine

PostPosted: Wed Feb 12, 2014 12:51 pm    Post subject: Reply with quote

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

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
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Drugmix



Joined: 08 Apr 2013
Posts: 381

PostPosted: Wed Feb 12, 2014 1:13 pm    Post subject: Reply with quote

FeyFre
Я же не знаю что это за язык и какой у него синтаксис:
1. раз перед : возможно любое кол-во пробелов, то следует
Code:
^\s*(?:(call|goto)\s+)?:?

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

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

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

Итого, предварительный вариант получается такой:
Code:
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
Back to top
View user's profile Send private message
koros



Joined: 12 Apr 2008
Posts: 54

PostPosted: Wed Feb 12, 2014 1:22 pm    Post subject: Reply with quote

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



Joined: 08 Apr 2013
Posts: 381

PostPosted: Wed Feb 12, 2014 1:59 pm    Post subject: Reply with quote

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

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

скриншот
:


Last edited by Drugmix on Wed Feb 12, 2014 4:46 pm; edited 2 times in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3 ... 34, 35, 36 ... 51, 52, 53  Next
Page 35 of 53

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group