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 

Регулярные выражения
Goto page Previous  1, 2, 3, 4, 5 ... 21, 22, 23  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
Drugmix



Joined: 08 Apr 2013
Posts: 461

PostPosted: Sun Oct 20, 2013 6:29 pm    Post subject: Reply with quote

Instructor
это правило ломается на каждом атрибуте состоящим из нескольких слов:
Code:
winget 1 2 , 3 ; единица - окрашена, а всё за ней - нет.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5513

PostPosted: Wed Oct 30, 2013 6:48 am    Post subject: Reply with quote

Drugmix
Можно еще так попробовать
Code:
0   `^\s*(WinGet)(?:\s*,\s*|\s+)([^;]*?)(\s*,\s*([^;]*?))?(\s*(;|$))?(\s*,\s*([^;]*?))?(\s*(;|$))?(\s*,\s*([^;]*?))?(\s*(;|$))?(\s*,\s*([^;]*?))?(\s*(;|$))?(\s*,\s*([^;]*?))?(\s*(;|$))?` `\1=(2,${OP},0) \2=(2,${VAR},#00ff00) \4=(2,${OP},#ff0000) \8=(2,${VAR},#0000ff) \12=(2,${OP},#ff0000) \16=(2,${VAR},#00ff00) \20=(2,${OP},#ff0000)`
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 461

PostPosted: Thu Oct 31, 2013 9:55 am    Post subject: Reply with quote

Instructor
спасибо, это лучшее из правил, что я видел.
В нём только один недостаток остался:
Code:
/*
winget это всё раскрашено, а не должно бы
*/

но лично я очень редко пользуюсь многострочными комментариями, так что для меня такое правило приемлемо.
Спасибо за него большое.

До релиза тестовой версии ~ сколько ещё времени осталось?


Last edited by Drugmix on Fri Nov 01, 2013 2:31 pm; edited 1 time in total
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 461

PostPosted: Thu Oct 31, 2013 12:15 pm    Post subject: Reply with quote

Instructor
совсем забыл про довольно важную вещь: а как сделать так, чтобы работало и экранирование запятой?
т.е. чтобы в примере
Code:
winget, первый `, параметр, второй `, параметр, третий `, параметр

справа от winget идут только 3 параметра, а не 6.
Можно ли как-то добавить проверку на наличие backtick'а перед запятой?

edit:
ну и напоролся на то, о чём меня предупреждали ещё заранее: если запятая находится внутри кавычек, то она не должна бы распознаваться как разделитель атрибутов, а распознаётся.
если бы это можно было как-то исправить - то coder стал бы полноценным раскрашивателем синтаксиса.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5513

PostPosted: Thu Oct 31, 2013 12:44 pm    Post subject: Reply with quote

Drugmix wrote:
Code:
\*
winget это всё раскрашено, а не должно бы
*\

Code:
Folds:
;=========================================================
;Flags  Font    Color   Color   Fold    Fold    Delimiters
;       style   text    bkgrnd  start   end
;=========================================================
;513=1+512
513   3   ${COMM}   0   "\*"       "*\"      ""


Last edited by Instructor on Thu Oct 31, 2013 12:50 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 461

PostPosted: Thu Oct 31, 2013 12:50 pm    Post subject: Reply with quote

Instructor
не помогает.
там раньше был флаг 5 (1+4), поэтому помимо 513 попробовал и 517 - ничто не помогает.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5513

PostPosted: Thu Oct 31, 2013 12:51 pm    Post subject: Reply with quote

Drugmix
Поправил сообщение выше там стояло "/*", "*/" вместо "\*", "*\".
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 461

PostPosted: Thu Oct 31, 2013 12:53 pm    Post subject: Reply with quote

Instructor
у меня уже было правило с флагом 5, там были правильно использованы слэши вместо бэкслэшей. Всё равно не помогает.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5513

PostPosted: Thu Oct 31, 2013 1:05 pm    Post subject: Reply with quote

Добавлять нужно не в "Quotes:", а как было указанно - в "Folds:".
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 461

PostPosted: Thu Oct 31, 2013 1:30 pm    Post subject: Reply with quote

Instructor
и так тоже не помогло.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5513

PostPosted: Fri Nov 01, 2013 5:34 am    Post subject: Reply with quote

Drugmix
Будьте внимательны и делайте попытки самостоятельно разобраться, тем более, когда вам даются конкретные ответы.

Пояснение

Для указанного текста:
Code:
\*
winget это всё раскрашено, а не должно бы
*\

требуется следующее правило:
Code:
Folds:
;=========================================================
;Flags  Font    Color   Color   Fold    Fold    Delimiters
;       style   text    bkgrnd  start   end
;=========================================================
;513=1+512
513   3   ${COMM}   0   "\*"       "*\"      ""


Видимо вами была допущена ошибка в примере:
Code:
/*
winget это всё раскрашено, а не должно бы
*/

для данного текста требуется следующее правило:
Code:
Folds:
;=========================================================
;Flags  Font    Color   Color   Fold    Fold    Delimiters
;       style   text    bkgrnd  start   end
;=========================================================
;513=1+512
513   3   ${COMM}   0   "/*"       "*/"      ""
Back to top
View user's profile Send private message Send e-mail
Serge Yolkin



Joined: 27 Jul 2010
Posts: 280

PostPosted: Fri Nov 01, 2013 8:31 am    Post subject: Reply with quote

И поднять правило наверх, если оно не одно. Возможно, те же слэши (или звёздочки) используются в других правилах...
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 461

PostPosted: Fri Nov 01, 2013 2:44 pm    Post subject: Reply with quote

Instructor
я только сейчас понял, что это я своим изначальным примером про \* *\ Вас запутал, конечно же я имел в виду /* */, и когда я пытался добавлять правило в Folds и в Quotes, то я уже не делал ошибки и использовал /* */.
Но дело в том, как я уже написал выше - добавление
в Folds:
Quote:
513 3 ${COMM} 0 "/*" "*/" ""

не влияет на раскраску winget правила, оно по-прежнему раскрашивается в таком примере как этот:
Code:
/*
winget, test
*/

Я к тому, что может быть у Вас это работает, но у меня на тестовой версии - это не работает.

Serge Yolkin
поднять правило в секции Folds?
Несмотря на то, что там нет других правил для /* */ (или даже для / и * по отдельности) - я всё же попробовал его поднять и это никак не повлияло на результат.
или Вы имели в виду поднять всю секцию Folds повыше остальных секций? так /* во всём .coder-файле встречается только в предложенном Instructor'ом правиле для Folds и в таком правиле из секции Quotes:
Code:
5   3   ${COMM}   0   "/*"   "*/"   ""   ""   ""

но я пробовал убирать это правило из Quotes - на результат это никак не влияет.


Last edited by Drugmix on Fri Nov 01, 2013 9:51 pm; edited 1 time in total
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 280

PostPosted: Fri Nov 01, 2013 8:01 pm    Post subject: Reply with quote

Drugmix
Что-то у Вас там загадочное... Нет, секцию Folds никуда двигать не надо, попробуйте так:
1. Сделайте резервную копию файла (рабочий будем ломать)
2. Закомментируйте все строки, где встречается / и * во всех секциях
3. Удалите или закомментируйте все строки из секций FoldPanel, FoldList, Skips и Folds
4. В секцию Folds добавьте единственное правило, продложенное Instructor.
5. Проверьте результат (по части многострочных комментариев)
Это должно работать. Если так и есть - искать, что ломает правило, добавляя строки из резервной копии в чищенный рабочий файл; если и это не работает, даже и не знаю, может, начать с пустого .coder файла (только имена секций без правил)?
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 461

PostPosted: Fri Nov 01, 2013 8:18 pm    Post subject: Reply with quote

Не работает даже с таким содержимым .coder файла

Code:
Files:
*.ahk

Font:


Colors:


BkImage:


AutoMark:


Quotes:


QuotesRE:
;=========================================================================================
; Flags  Pattern                        \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...
;=========================================================================================
; PixelGetColor, 1st arg
; Colorize text strings in quotes.
; Colorz:
;   ${NUM} - numbers.
;   ${OP} - commands.
;   ${VAR} - target variables (writable).
;   ${VAR2} - read only variables.
; 0   `(")((?:[^"]*?(?:"")?)*?)("(?!"))` `\1=(2,#ff0000,0) \2=(3,#00ff00,0) \3=(3,#ff0000,0)`
0   `(")((?:[^"]*(?:"")?)*)("(?!"))` `\1=(2,#ff0000,0) \2=(3,#00ff00,0) \3=(3,#ff0000,0)`
0   `^\s*(WinGet)(?:\s*,\s*|\s+)([^;]*?)(\s*,\s*([^;]*?))?(\s*(;|$))?(\s*,\s*([^;]*?))?(\s*(;|$))?(\s*,\s*([^;]*?))?(\s*(;|$))?(\s*,\s*([^;]*?))?(\s*(;|$))?(\s*,\s*([^;]*?))?(\s*(;|$))?` `\1=(2,${OP},0) \2=(2,${VAR},#00ff00) \4=(2,${OP},#ff0000) \8=(2,${VAR},#0000ff) \12=(2,${OP},#ff0000) \16=(2,${VAR},#00ff00) \20=(2,${OP},#ff0000)`
;0   `^\s*(WinGet)(?:\s*,\s*|\s+)([^\s;]*)(\s*,\s*([^\s;]*)(\s*,\s*([^\s;]*)(\s*,\s*([^\s;]*)(\s*,\s*([^\s;]*)(\s*,\s*([^\s;]*))?)?)?)?)?` `\1=(2,${OP},0) \2=(2,${VAR},#00ff00) \4=(2,${OP},#ff0000) \6=(2,${VAR},#0000ff) \8=(2,${OP},#ff0000) \10=(2,${VAR},#00ff00) \12=(2,${OP},#0000ff)`
; 0   `^\s*(WinGet)(?:\s*,\s*|\s+)(.*)(\s*,\s*(.*)(\s*,\s*(.*)(\s*,\s*(.*)(\s*,\s*(.*)(\s*,\s*(.*))?)?)?)?)?` `\1=(2,${OP},0) \2=(2,${VAR},#00ff00) \4=(2,${OP},#ff0000) \6=(2,${VAR},#0000ff) \8=(2,${OP},#ff0000) \10=(2,${VAR},#00ff00) \12=(2,${OP},#0000ff)`


Delimiters:


Words:


FoldPanel:


FoldList:


TagMark:


Skips:


Folds:
; пробовал и 513 и 5. Текста этого комментария, который вы сейчас читаете - в файле нет.
5   3   ${COMM}   0   "/*"   "*/"   ""


Blocks:


(в настройках coder::settings стоит применять .coder от *.ahk по умолчанию для всех неизвестных типов файлов и судя по тому, что строка с winget раскрашивается - эта настройка работает).
А у Вас разве правила из секции QuotesRE не перебивают остальные (в т.ч. Folds)? У меня перебивает и всегда перебивало.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page Previous  1, 2, 3, 4, 5 ... 21, 22, 23  Next
Page 4 of 23

 
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