Coder plugin (2)
- Author
- Message
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Instructor
спасибо, но это не подходит, т.к. я включаю этот плагин по мере надобности, чтобы отображал невидимые символы табы, переносы строк, конец файла и т.п.).
Так что если его держать постоянно включённым для отображения линеек - то будет много визуального мусора. Если же отключить показ всего, кроме линии отступа - то потом это всё надо будет включать поочерёдно через меню. Ни то, ни другое - не удобно.
Плюс, на скриншоте отступ у скобок подсвечен сильнее, чем другие отступы, а в акелпаде - такого нет (или есть, но надо шаманить с темами, а темы в акелпаде сейчас не юзабельны).
Ладно, выживу и без этого.
спасибо, но это не подходит, т.к. я включаю этот плагин по мере надобности, чтобы отображал невидимые символы табы, переносы строк, конец файла и т.п.).
Так что если его держать постоянно включённым для отображения линеек - то будет много визуального мусора. Если же отключить показ всего, кроме линии отступа - то потом это всё надо будет включать поочерёдно через меню. Ни то, ни другое - не удобно.
Плюс, на скриншоте отступ у скобок подсвечен сильнее, чем другие отступы, а в акелпаде - такого нет (или есть, но надо шаманить с темами, а темы в акелпаде сейчас не юзабельны).
Ладно, выживу и без этого.
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
А как в .coder файле можно раскрасить слова из "Words:" секции так, чтобы можно было одно и то же слово использовать дважды, подкрасив его так или иначе, в зависимости от его позиции в коде?
В ahk все атрибуты у команды разделены запятой (практически csv-лист получается).
И аналогичный вопрос (вероятно по секциям "Quotes:" и "QuotesRE:"): можно ли задать правила раскраски текста, например, так?
В ahk все атрибуты у команды разделены запятой (практически csv-лист получается).
И аналогичный вопрос (вероятно по секциям "Quotes:" и "QuotesRE:"): можно ли задать правила раскраски текста, например, так?
Можно ли как-то составлять подобные правила? Желательно, с поддержкой RegExp'ов.если с начала строки идёт слово "PixelGetColor", то всё, что идёт после первой запятой после него и до следующей запятой (или конца строки) - раскрасить синим цветом
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
И ещё вопрос по секции "Delimiters:" как менять настройки при выделении по словам/абзацам?
Например, выделение по словам можно произвести двумя способами:
а). сделав в тексте даблклик и не отпуская второй клик начать вести курсор в сторону.
б). на клавиатуре каретку двигать навигационными стрелками влево/вправо при зажатом CTRL (и + Shift, если нужно не просто переместить каретку, а переместить с выделением).
Сейчас, всякие символы знаки препинания являются разделительными, а потом правильно обрабатываются при выделении. Но в список разделителей не получается добавить связку из двух символов: например `n. Эта связка в ahk означает символ новой строки.
Я уже пробовал создавать правила и
1 0 ${DEL2} 0 `n
и
1 0 ${DEL2} 0 "`n"
Но это не помогло: в первом случае - раскрашиваться они начинают правильно (как разделители), но при выделении - только ` распознаётся как delimiter, а n выделяется вместе с примыкающим к нему словом.
Может быть это баг?
Например, выделение по словам можно произвести двумя способами:
а). сделав в тексте даблклик и не отпуская второй клик начать вести курсор в сторону.
б). на клавиатуре каретку двигать навигационными стрелками влево/вправо при зажатом CTRL (и + Shift, если нужно не просто переместить каретку, а переместить с выделением).
Сейчас, всякие символы знаки препинания являются разделительными, а потом правильно обрабатываются при выделении. Но в список разделителей не получается добавить связку из двух символов: например `n. Эта связка в ahk означает символ новой строки.
Я уже пробовал создавать правила и
1 0 ${DEL2} 0 `n
и
1 0 ${DEL2} 0 "`n"
Но это не помогло: в первом случае - раскрашиваться они начинают правильно (как разделители), но при выделении - только ` распознаётся как delimiter, а n выделяется вместе с примыкающим к нему словом.
Может быть это баг?
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Для этого секция "Words:" не подходит, но подходит "Quotes:" или "QuotesRE:"Drugmix wrote:А как в .coder файле можно раскрасить слова из "Words:" секции так, чтобы можно было одно и то же слово использовать дважды, подкрасив его так или иначе, в зависимости от его позиции в коде?
если с начала строки идёт слово "PixelGetColor", то всё, что идёт после первой запятой после него и до следующей запятой (или конца строки) - раскрасить синим цветом
Code: Select all
QuotesRE:
;========================================================================================
;Flags Pattern \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...
;========================================================================================
1 `^\s*PixelGetColor.*,(.*),?` `\1=(2,#0000ff,0)`
Секция "Delimiters:" не предназначена для изменения механизма выделения текста.Drugmix wrote:И ещё вопрос по секции "Delimiters:" как менять настройки при выделении по словам/абзацам?
Code: Select all
1 0 ${DEL2} 0 "`n"
На данный момент, разделители слов для навигации по тексту, в виде последовательности символов, в принципе не реализованы.
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
А почему мой шаблон не работает?Instructor wrote:Code: Select all
1 `^\s*PixelGetColor.*,(.*),?` `\1=(2,#0000ff,0)`
Правильный шаблон будет же
Code: Select all
img)^\s*PixelGetColor\s*,?\s*((?U)\S*),.*$
Code: Select all
2 `img)^\s*PixelGetColor\s*,?\s*((?U)\S*),.*$` `\1=(2,#0000ff,0)`
Пробовал без igm) - то же самое.
А есть ли в планах на будущее это исправить?Instructor wrote:На данный момент, разделители слов для навигации по тексту, в виде последовательности символов, в принципе не реализованы.
EDIT:
добавил в шаблон (?-U) на всякий случай:
Code: Select all
^\s*PixelGetColor\s*,?\s*((?U)\S*(?-U)),.*$
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Похоже, что управлять "жадностью" в шаблонах акелпада нельзя, пришлось вместоDrugmix wrote:Instructor
Читал, но там же всё как в pcre, только "настройки" не описаны. Или они не поддерживаются, но тогда вопрос: а как же их задавать и переключать?
Code: Select all
2 `^\s*PixelGetColor\s*,?\s*(.*),?` `\1=(2,#0000ff,0)`
Code: Select all
2 `^\s*PixelGetColor(\s*,\s*|\s+)(.*),?` `\2=(2,#0000ff,0)`
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Instructor
а не могли бы Вы всё-таки добавить поддержку управления жадностью в шаблоны регулярных выражений в .coder?
Потому что я хочу через .coder приделать "умную" раскраску аргументов у команд AHK, а многие команды имеют по нескольку опциональных параметров и без поддержки управления жадностью - я боюсь, что я замучаюсь составлять шаблоны для таких команд:
WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]
всё, что в квадратных скобках - опционально, а раскрасить каждый из аргументов требуется по-своему.
раскрашивает все параметры начиная со второго - одним цветом.
а не могли бы Вы всё-таки добавить поддержку управления жадностью в шаблоны регулярных выражений в .coder?
Потому что я хочу через .coder приделать "умную" раскраску аргументов у команд AHK, а многие команды имеют по нескольку опциональных параметров и без поддержки управления жадностью - я боюсь, что я замучаюсь составлять шаблоны для таких команд:
WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]
всё, что в квадратных скобках - опционально, а раскрасить каждый из аргументов требуется по-своему.
Code: Select all
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)`
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Drugmix
Но стоит ли связываться с подсветкой параметров, учитывая, что, например, запятая может присутствовать как часть строки.
Code: Select all
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)`
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Спасибо, уже что-то. Запятую можно вынести за круглые скобки, чтоб она не подсвечивалась как часть аргумента:Instructor wrote:DrugmixНо стоит ли связываться с подсветкой параметров, учитывая, что, например, запятая может присутствовать как часть строки.Code: Select all
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: Select all
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)`
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Я бы её экранировал заменив , на [^`], но backtick является частью синтаксиса .coder, как его экранировать? Его стоит добавить в мануал в раздел "Special characters".Instructor wrote:Но стоит ли связываться с подсветкой параметров, учитывая, что, например, запятая может присутствовать как часть строки.
А ещё в мануал стоит добавить про якорь конца строки $, который не просто означает символ новой строки, но ещё и, похоже, меняет направление обработки шаблона с ltr на rtl.
Last edited by Drugmix on Thu Sep 12, 2013 2:48 pm, edited 1 time in total.
-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
Зачем гадать и строить гипотезы, если можно обратиться к первоисточнику AkelHelp-Rus.htm#ch7 (8. Синтаксис регулярных выражений)?Drugmix wrote:...непонятно написано...похоже, меняет направление...
Code: Select all
^ Соответствует позиции начала строки.
$ Соответствует позиции конца строки.
...
[^xyz] Отрицательный набор знаков. Соответствует любому не указанному символу. Например, '[^abc]' соответствует "p" в "plain".