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 ... 13, 14, 15 ... 64, 65, 66  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Sat Aug 31, 2013 5:22 am    Post subject: Reply with quote

Drugmix
См. плагин SpecialChar настройку "Линия отступа".
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Sat Aug 31, 2013 11:11 pm    Post subject: Reply with quote

Instructor
спасибо, но это не подходит, т.к. я включаю этот плагин по мере надобности, чтобы отображал невидимые символы табы, переносы строк, конец файла и т.п.).
Так что если его держать постоянно включённым для отображения линеек - то будет много визуального мусора. Если же отключить показ всего, кроме линии отступа - то потом это всё надо будет включать поочерёдно через меню. Ни то, ни другое - не удобно.

Плюс, на скриншоте отступ у скобок подсвечен сильнее, чем другие отступы, а в акелпаде - такого нет (или есть, но надо шаманить с темами, а темы в акелпаде сейчас не юзабельны).

Ладно, выживу и без этого.
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Mon Sep 09, 2013 9:32 pm    Post subject: Reply with quote

А как в .coder файле можно раскрасить слова из "Words:" секции так, чтобы можно было одно и то же слово использовать дважды, подкрасив его так или иначе, в зависимости от его позиции в коде?
В ahk все атрибуты у команды разделены запятой (практически csv-лист получается).

И аналогичный вопрос (вероятно по секциям "Quotes:" и "QuotesRE:"): можно ли задать правила раскраски текста, например, так?
Quote:
если с начала строки идёт слово "PixelGetColor", то всё, что идёт после первой запятой после него и до следующей запятой (или конца строки) - раскрасить синим цветом

Можно ли как-то составлять подобные правила? Желательно, с поддержкой RegExp'ов.
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Mon Sep 09, 2013 9:50 pm    Post subject: Reply with quote

И ещё вопрос по секции "Delimiters:" как менять настройки при выделении по словам/абзацам?

Например, выделение по словам можно произвести двумя способами:
а). сделав в тексте даблклик и не отпуская второй клик начать вести курсор в сторону.
б). на клавиатуре каретку двигать навигационными стрелками влево/вправо при зажатом CTRL (и + Shift, если нужно не просто переместить каретку, а переместить с выделением).

Сейчас, всякие символы знаки препинания являются разделительными, а потом правильно обрабатываются при выделении. Но в список разделителей не получается добавить связку из двух символов: например `n. Эта связка в ahk означает символ новой строки.
Я уже пробовал создавать правила и
1 0 ${DEL2} 0 `n
и
1 0 ${DEL2} 0 "`n"
Но это не помогло: в первом случае - раскрашиваться они начинают правильно (как разделители), но при выделении - только ` распознаётся как delimiter, а n выделяется вместе с примыкающим к нему словом.
Может быть это баг?
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Tue Sep 10, 2013 5:50 am    Post subject: Reply with quote

Drugmix wrote:
А как в .coder файле можно раскрасить слова из "Words:" секции так, чтобы можно было одно и то же слово использовать дважды, подкрасив его так или иначе, в зависимости от его позиции в коде?
Для этого секция "Words:" не подходит, но подходит "Quotes:" или "QuotesRE:"
Quote:
если с начала строки идёт слово "PixelGetColor", то всё, что идёт после первой запятой после него и до следующей запятой (или конца строки) - раскрасить синим цветом

Code:
QuotesRE:
;========================================================================================
;Flags  Pattern                       \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...
;========================================================================================
1   `^\s*PixelGetColor.*,(.*),?` `\1=(2,#0000ff,0)`


Drugmix wrote:
И ещё вопрос по секции "Delimiters:" как менять настройки при выделении по словам/абзацам?
Секция "Delimiters:" не предназначена для изменения механизма выделения текста.

Code:
1   0   ${DEL2}   0   "`n"
Это корректное правило, но как уже было сказано - оно будет правильно разделять слова при подсветке, но на выделение не будет влиять.

На данный момент, разделители слов для навигации по тексту, в виде последовательности символов, в принципе не реализованы.
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Tue Sep 10, 2013 11:28 am    Post subject: Reply with quote

Instructor wrote:
Code:
1   `^\s*PixelGetColor.*,(.*),?` `\1=(2,#0000ff,0)`

А почему мой шаблон не работает?
Правильный шаблон будет же
Code:
img)^\s*PixelGetColor\s*,?\s*((?U)\S*),.*$

Соответственно правило для "QuotesRE:" я использовал такое:
Code:
2   `img)^\s*PixelGetColor\s*,?\s*((?U)\S*),.*$` `\1=(2,#0000ff,0)`

Шаблон правильный, но в акелпаде нужные вхождения не подсвечивает: пруфпик


Пробовал без igm) - то же самое.

Instructor wrote:
На данный момент, разделители слов для навигации по тексту, в виде последовательности символов, в принципе не реализованы.

А есть ли в планах на будущее это исправить?

EDIT:
добавил в шаблон (?-U) на всякий случай:
Code:
^\s*PixelGetColor\s*,?\s*((?U)\S*(?-U)),.*$

всё равно не работает.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Tue Sep 10, 2013 11:51 am    Post subject: Reply with quote

Drugmix
Вами тестируется PCRE. AkelPad использует свою реализацию регулярных выражений см. AkelHelp-Rus.htm.
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Tue Sep 10, 2013 12:24 pm    Post subject: Reply with quote

Instructor
Читал, но там же всё как в pcre, только "настройки" не описаны. Или они не поддерживаются, но тогда вопрос: а как же их задавать и переключать?
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Tue Sep 10, 2013 12:45 pm    Post subject: Reply with quote

Drugmix wrote:
Instructor
Читал, но там же всё как в pcre, только "настройки" не описаны. Или они не поддерживаются, но тогда вопрос: а как же их задавать и переключать?

Похоже, что управлять "жадностью" в шаблонах акелпада нельзя, пришлось вместо
Code:
2   `^\s*PixelGetColor\s*,?\s*(.*),?` `\1=(2,#0000ff,0)`

использовать
Code:
2   `^\s*PixelGetColor(\s*,\s*|\s+)(.*),?` `\2=(2,#0000ff,0)`
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Tue Sep 10, 2013 1:46 pm    Post subject: Reply with quote

Instructor
а не могли бы Вы всё-таки добавить поддержку управления жадностью в шаблоны регулярных выражений в .coder?
Потому что я хочу через .coder приделать "умную" раскраску аргументов у команд AHK, а многие команды имеют по нескольку опциональных параметров и без поддержки управления жадностью - я боюсь, что я замучаюсь составлять шаблоны для таких команд:
WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]
всё, что в квадратных скобках - опционально, а раскрасить каждый из аргументов требуется по-своему.
Code:
2   `^\s*(WinGet)(\s*,\s*|\s+)(.*)(,.*)?(,.*)?(,.*)?(,.*)?(,.*)?` `\1=(2,${OP},0) \3=(2,${VAR},0) \4=(2,${OP},0) \5=(2,${VAR},0) \6=(2,${OP},0) \7=(2,${VAR},0) \8=(2,${OP},0)`

раскрашивает все параметры начиная со второго - одним цветом.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5524

PostPosted: Tue Sep 10, 2013 3:28 pm    Post subject: Reply with quote

Drugmix
Code:
QuotesRE:
;==================================================================
;Flags  Pattern \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...
;==================================================================
0   `^\s*(WinGet)(\s*,\s*|\s+)(.*)((,.*)((,.*)((,.*)((,.*)((,.*))?)?)?)?)?` `\1=(2,${OP},0) \3=(2,${VAR},0) \5=(2,${OP},0) \7=(2,${VAR},0) \9=(2,${OP},0) \11=(2,${VAR},0) \13=(2,${OP},0)`


Но стоит ли связываться с подсветкой параметров, учитывая, что, например, запятая может присутствовать как часть строки.
Back to top
View user's profile Send private message Send e-mail
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Tue Sep 10, 2013 5:15 pm    Post subject: Reply with quote

Instructor wrote:
Drugmix
Code:
QuotesRE:
;==================================================================
;Flags  Pattern \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...
;==================================================================
0   `^\s*(WinGet)(\s*,\s*|\s+)(.*)((,.*)((,.*)((,.*)((,.*)((,.*))?)?)?)?)?` `\1=(2,${OP},0) \3=(2,${VAR},0) \5=(2,${OP},0) \7=(2,${VAR},0) \9=(2,${OP},0) \11=(2,${VAR},0) \13=(2,${OP},0)`


Но стоит ли связываться с подсветкой параметров, учитывая, что, например, запятая может присутствовать как часть строки.

Спасибо, уже что-то. Запятую можно вынести за круглые скобки, чтоб она не подсвечивалась как часть аргумента:
Code:
2   `^\s*(WinGet)(?:\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)`

Но избавиться от подсветки пробелов и табов до и после запятой - не получается, т.к. \s* будет искать не жадно и найдёт 0 совпадений.
А если сделать вот такой финт, то этот код вызывает инстакрэш акелпада на старте

Code:
2   `^\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)`

А в документации опечатка:

Appendices > H - Regular Expression reference > Elements: Non-capture group (?:} - закрывающая скобка - фигурная, вместо круглой
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Tue Sep 10, 2013 5:25 pm    Post subject: Reply with quote

Instructor wrote:
Но стоит ли связываться с подсветкой параметров, учитывая, что, например, запятая может присутствовать как часть строки.

Я бы её экранировал заменив , на [^`], но backtick является частью синтаксиса .coder, как его экранировать? Его стоит добавить в мануал в раздел "Special characters".
А ещё в мануал стоит добавить про якорь конца строки $, который не просто означает символ новой строки, но ещё и, похоже, меняет направление обработки шаблона с ltr на rtl.


Last edited by Drugmix on Thu Sep 12, 2013 2:48 pm; edited 1 time in total
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 366

PostPosted: Tue Sep 10, 2013 9:28 pm    Post subject: Reply with quote

Drugmix wrote:
...непонятно написано...похоже, меняет направление...
Зачем гадать и строить гипотезы, если можно обратиться к первоисточнику AkelHelp-Rus.htm#ch7 (8. Синтаксис регулярных выражений)?
Code:
^      Соответствует позиции начала строки.
$      Соответствует позиции конца строки. 
...
[^xyz] Отрицательный набор знаков. Соответствует любому не указанному символу. Например, '[^abc]' соответствует "p" в "plain".
Back to top
View user's profile Send private message
Drugmix



Joined: 08 Apr 2013
Posts: 466

PostPosted: Tue Sep 10, 2013 11:24 pm    Post subject: Reply with quote

opk44,
Спасибо, я затупил чего-то.


Last edited by Drugmix on Thu Sep 12, 2013 2:49 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 ... 13, 14, 15 ... 64, 65, 66  Next
Page 14 of 66

 
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