Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

Помогите, пожалуйста, улучшить правило так, чтобы не подсвечивались отступы после запятой до первого \S символа:

Code: Select all

2   `^\s*(WinGet)(?:\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)`

Image

как видно из скриншота - у опциональных аргументов (1-ый - не опциональный, а все последующие - опциональные).
Пробовал использовать позитивные и негативные просмотры назад
(lookbehind'ы), заменяя (.*) группы на ((?<!\S).*) или на ((?<=\s).*) но не помогло.
Кстати, ещё про документацию: regexp-овая документация в AkelHelp-Eng.htm более полная чем та, что в AkelPad4-Eng.chm файле.
А ещё в Plugins-Eng.chm нет документации по Coder плагину.
А в Coder-Eng.txt много рассказывается про внешние вызовы к этому плагину, а вот как правильно создавать правила для различных секций в .coder файлах - не рассказывается.
А в существующих .coder файлах документация плоха тем, что разрозненна и не описан синтаксис правил к различным секциям.

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

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

Post by FeyFre »

Drugmix
1. Нуждается или нет, тут дело абсолютно десятое. Но такой какой сейчас есть он тоже вполне заслуживает жить.
2. Если почитать внимательно, то автором архива справки является ни автор Instructor, ни автор любого другого плагина, а такой же рядовой пользователь как и Вы Surveyor, корый это делает по мере свои возможностей и свободного времени(не так уж много оного у него нашлось за 1.5года когда его просили прошлый раз). Так что могу посоветовать Вам только самостоятельно попытаться разобраться в вопросах(с нашими подсказками) а не ожидать внезапное появление полной документации.

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

Post by Drugmix »

FeyFre wrote:1. Нуждается или нет, тут дело абсолютно десятое. Но такой какой сейчас есть он тоже вполне заслуживает жить.
Вы так говорите, как-будто я предлагаю его уничтожить. Наоборот, я прошу его по возможности допилить до полной юзабельности.
FeyFre wrote:2. Если почитать внимательно, то автором архива справки является ни автор Instructor, ни автор любого другого плагина, а такой же рядовой пользователь как и Вы Surveyor, корый это делает по мере свои возможностей и свободного времени(не так уж много оного у него нашлось за 1.5года когда его просили прошлый раз). Так что могу посоветовать Вам только самостоятельно попытаться разобраться в вопросах(с нашими подсказками) а не ожидать внезапное появление полной документации.
Я без претензий и считаю, что делаю полезное дело, сообщая о замеченных мной упущениях в той же самой документации. С RegEx'ами-то я почти разобрался (только из-за невозможности никак контролировать жадность - у меня не получаются некоторые вещи, не знаю как исхитриться), а вот где найти описание синтаксиса для правил для каждого из раздела в .coder-файлах - я не нашёл: конкретно меня интересуют FoldPanel, FoldList, Font, Colors, BkImage, AutoMark, TagMark, Skips - не очень понятно за что они отвечают.
И насчёт флагов вопрос: правильно ли я понимаю, что для Quotes и QuotesRE флаги описаны в

;Flags (sum of the members)
; 1 case sensitive.
; 2 word is a composition of characters ("Words:" section only). Example: "0123456789" - highlight words that contain only digits.
; 4 quote end required ("Quotes:" section only).
; 8 quote start string is ignored and last meet delimiter used as quote start ("Quotes:" section only).
; 16 quote end string is ignored and first meet delimiter used as quote end ("Quotes:" section only).
; 32 don't highlight quote start ("Quotes:" section only).
; 64 don't highlight quote end ("Quotes:" section only).
; 128 don't catch and don't highlight quote start ("Quotes:" section only).
; 256 don't catch and don't highlight quote end ("Quotes:" section only).
; 512 quote start, delimiter or word located at line start.
; 1024 quote end, delimiter or word located at line end.
; 2048 quote start is surrounded with delimiters ("Quotes:" section only).
; 4096 quote end is surrounded with delimiters ("Quotes:" section only).
; 8192 quote doesn't contain delimiters ("Quotes:" section only).
; 16384 only quote start string is catched ("Quotes:" section only).
, а для Skips и Folds в

;Flags (sum of the members)
; 1 case sensitive.
; 2 force get fold name for function list from left at the fold start ("Folds:" section only).
; 4 force get fold name for function list from right at the fold start, including fold start ("Folds:" section only).
; 8 fold start located at line start ("Folds:" section only).
; 16 fold start located at line end ("Folds:" section only).
; 32 fold end located at line start ("Folds:" section only).
; 64 fold end located at line end ("Folds:" section only).
; 128 don't catch fold end ("Folds:" section) or skip end ("Skips:" section).
; 256 additional to 128 flag - more priority is given to sibling level instead of parent level ("Folds:" section only).
; 512 comment fold - fold ignore any other folds and skips inside ("Folds:" section only).
; 1024 reserved.
; 2048 deny fold - founded fold will be ignored ("Folds:" section only).
; 4096 xml fold - "<tag" and "</tag>", "<single" and "/>", "<single" and ">" ("Folds:" section only).
; 8192 don't check delimiters from left of fold start ("Folds:" section only).
; 16384 don't check delimiters from right of fold start ("Folds:" section only).
; 32768 don't check delimiters from left of fold end ("Folds:" section only).
; 65536 don't check delimiters from right of fold end ("Folds:" section only).
; 131072 deny delimiters ("Folds:" section only).
; 262144 don't show fold in list ("Folds:" section only).
?

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Drugmix
1. По мануалам - "просить" и сообщать об ошибках следовало бы на английском (их автор канадец) в соответствующей ветке.
2. FoldPanel, FoldList, Font, Colors, BkImage никаких флагов не содержат. У трех последних в качестве флага используется едва ли не одна только регистрозависимость. Так о каком же "описании синтаксиса" там разговоры разговаривать?
3. О назначении указанных "разделов" проще всего самому догадаться, для чего взять да и поиграться с изменением цветовой темы при включенных CodeFold/HighLight и открытых подсвечиваемых файлах (для тэгов хорошо держать открытым файл-xml, и т.д.).
4. "насчёт флагов" - предположение верно.

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

Post by Drugmix »

opk44
1. Я не сразу сообразил, что русскоязычных .chm доков для акелпада нет не только у меня, а вообще. По поводу того, куда сообщать про .chm файлы - мне теперь понятно, спасибо. В русском мануале Coder-Rus.txt те же недостатки, что и в английской версии.
2. Я про эти секции интересовался не про флаги, а про то, что они вообще делают. Из их названий, лично мне, не понятно за что они отвечают, а описаний работы этих секций нет ни в .coder файлах, ни в мануалах Coder-Eng.txt/Coder-Rus.txt.
3. Да можно, конечно, но лучше бы в документацию добавить нормальное описание (не всё можно заметить глазами, что-то можно пропустить).
4. Ок, понял, спасибо. Хотя на мой взгляд - и это не очень очевидно расписано, стоило бы, прежде всего, это продублировать в Coder-Eng.txt/Coder-Rus.txt, а также внутри .coder-файлов заменить их шапки

Code: Select all

;----------------------------------------------;
;                   CodeFold                   ;
;----------------------------------------------;
на что-то типа "Flag keys for FoldPanel, FoldList, TagMark, Skips, Folds and Blocks sections".

5. С документацией проблемы выяснены, помогите подправить regex шаблон.

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

Post by Drugmix »

Drugmix wrote:А ещё в мануале в разделе "Elements" непонятно написано про circumflex (^):
Note that this symbol (^) has alternate meaning when used outside the square brackets.
И не даётся пояснение того, какое он имеет тогда значение.
Начал править мануал и понял, что туплю: [^\d] == \D, а ^\d == цифра в начале строки, а вовсе не \D

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Drugmix wrote:заменить их шапки ... на что-то типа ...
1. AkelPad всегда отличался лаконичностью (граничащей со скупостью). С этим не бороться нужно, а просто постараться принять.
2. Если вы поинтересуетесь историей развития плагина Coder, то увидите, что он образовался слиянием трех отдельных плагинов (CodeFold+HighLight+AutoComplete) имевших отдельные файлы-настройки. Поэтому и coder-файлы стали состоять как бы из трех кусков. Код на вашей иллюстрации - одно из мест их "склейки".
3. Предложение "менять шапки" сродни требованию заставить писать, например, вместо «Приключения Робинзона Крузо»
«Жизнь, необыкновенные и удивительные приключения Робинзона Крузо, моряка из Йорка, прожившего 28 лет в полном одиночестве на необитаемом острове у берегов Америки близ устьев реки Ориноко, куда он был выброшен кораблекрушением, во время которого весь экипаж корабля кроме него погиб, с изложением его неожиданного освобождения пиратами; написанные им самим»
на том основании, что оно "более правильное".
Область действия флагов следует воспринимать как "отсюда и далее, пока не будет указано иное (только с учетом оговорок!)". Это проще чем всякого рода перечисления.
Об оговорках: использование вами флага "2" для секции "QuotesRE:" напрасно. Этот флаг работает только в секции "Words:".

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Drugmix wrote:Помогите, пожалуйста, улучшить правило так, чтобы не подсвечивались отступы после запятой до первого \S символа:...
Код для тестовой версии.

Code: Select all

QuotesRE:
;==================================================================
;Flags  Pattern \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...
;==================================================================
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)`

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

Post by Drugmix »

Instructor
спасибо, правило работает хорошо, но только все правила секции QuotesRE - регистрозависимы, а из-за того, что RegEx-парсер в акелпаде не поддерживает i), то приведённое Вами правило не срабатывает на строке начинающейся с Winget или winget, а срабатывает только с WinGet.

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

Post by FeyFre »

Drugmix, кто ищет, то всегда найдет.

Code: Select all

[Ww][Ii][Nn][Gg][Ee][Tt]

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

Post by Drugmix »

FeyFre
хитро́, я до такого не додумался :)

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Drugmix wrote:Instructor
спасибо, правило работает хорошо, но только все правила секции QuotesRE - регистрозависимы, а из-за того, что RegEx-парсер в акелпаде не поддерживает i), то приведённое Вами правило не срабатывает на строке начинающейся с Winget или winget, а срабатывает только с WinGet.
С чего вы взяли, что "все правила секции QuotesRE - регистрозависимы"? Это чепуха.
Регистрозависимостью управляет флаг "1" (следовательно, и любая нечетная сумма). В примере этого флага нет ("0"). Значит, если использовать правило в точности так, как это указано, то получится следующее:
Image

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

Post by Drugmix »

opk44
извините, но мой случай, видимо, клинический: я не понимал, что там за флаг слева и думал, что это для нумерации QuotesRE правил.
Порой я жёстко туплю.

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Drugmix wrote:opk44
извините, но мой случай, видимо, клинический: я не понимал, что там за флаг слева и думал, что это для нумерации QuotesRE правил.
Порой я жёстко туплю.
А судя по той фотографии, что вы уже успели убрать (подсвеченные лидирующие пробелы), так вы и вовсе до сих пор используете свое правило, а совсем не то, которое дал вам Instructor.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Исправлено: отложенное обновление фолдинга (Coder::CodeFold).

Fixed: deferred folding refresh (Coder::CodeFold).


Coder plugin v11.8
Locked