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 ... 30, 31, 32 ... 51, 52, 53  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
Skif_off



Joined: 20 Oct 2013
Posts: 249

PostPosted: Wed Jan 15, 2014 9:14 pm    Post subject: Reply with quote

Serge Yolkin
В CMD.CODER у вас тоже ошибка с переменными: правило
Code:
0   `(\![^!]+)(\:.+)?(\!)`   `\1=(0,${VAR},0) \3=(0,${VAR},0)`

захватит путь с !, хотя это неправильно, !xxx! - это почти %xxx%.
Т.е. строка должна выглядеть не так
if exist %SoftDrive%\autoinstall\!Config\first_run.cmd (hidcon %SoftDrive%\autoinstall\!Config\first_run.cmd),
а вот так
if exist %SoftDrive%\autoinstall\!Config\first_run.cmd (hidcon %SoftDrive%\autoinstall\!Config\first_run.cmd).

В оригинальном bat.coder как временное (однако прижилось Smile) решение в Quote exclude в Quote добавил "\":
Code:
;5=1+4
5   0   ${VAR}   0   "!"   "!"   ""   ""   "\"
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 245

PostPosted: Wed Jan 15, 2014 9:55 pm    Post subject: Reply with quote

С одной стороны Вы безусловно правы, а с другой я как-то поимел много проблем с пакетником из-за восклицательных знаков в именах папок/файлов. И не все эти проблемы можно обойти. Поэтому мудрить не стал. Путь C:\Пап!ка\Ф!айл при EnableDelayedExpansion и в пакетнике-то не найдётся, не говоря о подсветке. Лучше такие символы (особенно & - он тоже не запрещён) вообще в именах избегать, а уж мудрить с их подсветкой - пусть тот, кто их использует, - и мудрит...
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 249

PostPosted: Thu Jan 16, 2014 6:51 am    Post subject: Reply with quote

Serge Yolkin wrote:
Лучше такие символы (особенно & - он тоже не запрещён) вообще в именах избегать

Согласен, сам даже пробелов и кириллицы стараюсь избегать. Батник попался случайно и лежит давно (потому что там есть цикл для определения буквы CDROM), иначе бы и внимания не обратил.
Мудрить или не мудрить - вопрос несколько дискуссионный Smile Мне не понравилось - исправил, с минимальными затратами сил.


Подскажите, пожалуйста, по COM-объектам:
KiXtart и AutoIt умеют с ними работать, примеры кода
Code:
;KiXtart
$oXL = CreateObject("EXCEL.application")
$Rc = $oXL.Workbooks.Add

;AutoIt
$oShell = ObjCreate("shell.application")
$oShell.MinimizeAll

как правильно подсветить? Не погу найти списка COM-объектов, чтобы определиться с их именами, гуглил, копался в HKEY_CLASSES_ROOT, в списке защищенных COM-объектов Comodo Firewall, случайно заметил, что Notepad++ и SciTE подсвечивают и исходя из всего этого родилось правило:
Code:
0   "(\$[w]+)(\.[a-z]{1}[\w]+)+"   "\1=(0,${VAR},0) \2=(4,${IF},0)"

Правильно или какие-то имена упускаю?
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 245

PostPosted: Thu Jan 16, 2014 8:27 am    Post subject: Reply with quote

Skif_off
Ну, список COM объектов - это всё равно, что список всех возможных драйверов к винде... Их же тоже устанавливать можно. А посветка должна работать. Я этих языков не знаю, может быть не айс, если в одной инструкции элементов \2 слишком много: длинная одноцветная строка получится. Если синтаксис такого не предполагает, то всё нормально, только {1} уберите - и без него "ровно один раз". Хотя, это не ошибка, поскольку интерпретируется правильно.
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 249

PostPosted: Thu Jan 16, 2014 11:18 am    Post subject: Reply with quote

Serge Yolkin wrote:
Ну, список COM объектов - это всё равно, что список всех возможных драйверов к винде... Их же тоже устанавливать можно.

Это да, но проблема в том, что не удалось нагуглить правила назначения имени. С переменными понятно, в доках простым языком пишут - буквы, цыфры и "_".
Serge Yolkin wrote:
А посветка должна работать. Я этих языков не знаю, может быть не айс, если в одной инструкции элементов \2 слишком много: длинная одноцветная строка получится.

Упрется в какой-нибудь разделитель, то, что видел - 2-3 таких элемента. Придется добавить еще правило для обычных переменных
Code:
0   "\$[\w]+"   "\0=(0,${VAR},0)"

но не тестил много, может кто-нибудь подскажет какие грабли могут вылезти.
Serge Yolkin wrote:
только {1} уберите - и без него "ровно один раз". Хотя, это не ошибка, поскольку интерпретируется правильно.

Это для наглядности (себе) оставил временно, пока подбирал выражение, ибо не силен Smile
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 245

PostPosted: Thu Jan 16, 2014 11:46 am    Post subject: Reply with quote

Skif_off
Если правил всё равно 2, то чем хуже
Code:
0   "\$[\w]+"   "\0=(0,${VAR},0)"
0   "(?<=\.)([a-z][\w]+)(?=(.|\s|$)"   "\1=(4,${IF},0)"
в этом случае точки не захватываются, значит их цвет можно задать отдельно в разделителях (всё не сплошная строка одним цветом).
Не хочу ввязываться в полемику, но, на мой взгляд, распознавать и захватывать надо не строки во всём их многообразии, а "кирпичики" - элементы синтаксиса (для js, например, это методы, свойства, структуры, операторы и т.д.). Обычно, таких элементов в языке вовсе не сотни. Ну, и то, что очень хочется, или нестандартное - дополнительно Smile
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 381

PostPosted: Thu Jan 16, 2014 12:25 pm    Post subject: Reply with quote

Skif_off
Serge Yolkin
господа, почему вы используете [\w]+? внутри квадратных же скобок это будет матчить ненулевую последовательность \ и w.
Если нужно матчить ненулевую последовательность буквенно-циферных символов - следует же использовать \w+.
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 245

PostPosted: Thu Jan 16, 2014 12:34 pm    Post subject: Reply with quote

Drugmix
Да, формально Вы правы, но матчится то, что нужно (и в js тоже). А запись [\w], вероятно, остаток от [\w\-] после редактирования.
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 249

PostPosted: Thu Jan 16, 2014 2:53 pm    Post subject: Reply with quote

Serge Yolkin
В регулярных выражениях разбираюсь слабо и Instructor писал:
Лучше воздержаться от использования конструкций (?<!) и (?<=) в "QuotesRE:" (пояснение).
Поэтому делаю попроще и по порядку Smile

Serge Yolkin wrote:
на мой взгляд, распознавать и захватывать надо не строки во всём их многообразии, а "кирпичики" - элементы синтаксиса

Именно это и планируется - только захват переменных
$var1
$sPath
$oShell.GoBack
$oShell.GoForward
С точкой да, по хорошему отделить, но только первую, как мне кажется, имя, например, псевдо COM-интерфейса LocalSecurityAuthority.Restore выглядит самодостаточным, чтобы разрывать цвет точкой. В общем, пока не думал.

Drugmix wrote:
господа, почему вы используете [\w]+? внутри квадратных же скобок это будет матчить ненулевую последовательность \ и w.

Разве в квадратных скобках не нужно экранировать? И да, [\w]+ осталось после правок.
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 381

PostPosted: Thu Jan 16, 2014 3:01 pm    Post subject: Reply with quote

В квадратных скобках не экранируются символы. Но не знаю, может [\w]+ и правда срабатывает не только на \ и w, но это бы должно быть ошибкой.
В любом случае, то, что нужно было вам двоим - это \w+ без всяких скобок.
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 245

PostPosted: Thu Jan 16, 2014 9:50 pm    Post subject: Reply with quote

Skif_off
Так там про "от начала строки", а .ххх. - это не в начале. Лучше проверьте мою пару правил.

Drugmix
Если работает, при чём не только в Акеле, - не ошибка. Кому не нравится, можно не использовать. И уважаемый YuS, помогая Вам, писал:
Quote:
0 "^\s*(?:(Try)?(Else)?(?:\s*?,\s*?|\s+?)|(.{1,38}(?=::))(?:::))?\s*(#IfWinActive\b)(?:\s*?,\s*?|\s*?)??([^,`\s]*(?!`,)|(?:[^`,\s]*(?:`,)?)*)?(?:\s*?,\s*?)?([^,`\s]*(?!`,)|(?:[^`,\s]*(?:`,)?)*)?(\s+;.*)?[\s]*$" `\1=(4,${OP},0) \2=(4,${IF},0) \3=(2,${STR},0) \4=(2,${OP},0) \5=(2,${ATTR},#ff0000) \6=(2,${ATTR},#00ff00) \7=(3,${COMM},0)`
обратите внимание на конец регулярки...
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 249

PostPosted: Thu Jan 16, 2014 10:01 pm    Post subject: Reply with quote

Serge Yolkin
Не совсем уверен в выделенном
(?<=\.)([a-z][\w]+)(?=(.|\s|$)
(хотя теперь понял как работает Smile), пока записал и отложил вопрос, но все равно спасибо за пояснения.
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 245

PostPosted: Fri Jan 17, 2014 2:17 am    Post subject: Reply with quote

Skif_off
Опа! Лажанул. Там в выделенном \. должна быть. И ещё, если такая строка может быть в скобках, т.е. заканчиваться на закрывающую скобку, надо туда же добавить \) через "или" (|).
Back to top
View user's profile Send private message
Smitis



Joined: 24 Oct 2013
Posts: 3

PostPosted: Fri Jan 17, 2014 12:23 pm    Post subject: Reply with quote

Подскажите, можно ли сделать для folds подсветку следующим образом:
Допустим, есть конструкция if-elseif-else-end (в данном случае это lua, но это не важно). Если курсор стоит на if, подсвечивается if-elseif. Если курсор стоит на elseif посвечивается elseif-else, если на else - else-end. А вот можно ли сделать так, что бы если курсор на одном из этих слов, подсвечивался весь fold (т.е. все if-elseif-else-end сразу)?
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 245

PostPosted: Sat Jan 18, 2014 11:09 am    Post subject: Reply with quote

Smitis
Полагаю, там есть правило для if - end, вот его и оставить, а остальные убрать (на время экспериментов лучше закомментировать)
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 ... 30, 31, 32 ... 51, 52, 53  Next
Page 31 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