Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Предвкушаю вопросы:
если закрывающий тег является открывающим тегом следующего блока?

Code: Select all

#if cond
...
#elseif cond2
...
#endif
Может ввести в заблуждение если скрыто неправильно

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

Post by Drugmix »

FeyFre
да, хороший вопрос.

Я не подумал об этом, т.к. у меня сворачивание кода в блоки идёт по тегам "{" и "}" и хоть синтаксис и позволяет, но я никогда не использую "} else {".

Всё зависит от реализации:
если настройка будет глобальной - то да, возможны проблемы;
если локальной для каждого правила - то для таких случаев удобней делать правило "#if - #elseif" без сворачивания закрывающего тега, а правило "#elseif - #endif" уже произвольно, по желанию.
Либо и вовсе ограничиться "#if - #endif".

А ещё против снизить вероятность заблуждения в описанной ситуации можно используя отступы для кода внутри блоков.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

FeyFre
Drugmix
Вероятно, будет ещё один флаг, необязательный, разве это проблема? Если закрывающий тег одновременно и открывающий другого блока зачем его скрывать? Добавляете флаг - знаете, что делаете. Или сами себе злобный Буратино.

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

Post by FeyFre »

Skif_off
Не проблема. Прикол в том что лучше я заранее упомяну потенциальное спорное место и Инструктор о нем не забудет и спокойно позаботится, чем потом после релиза буде срочно доделывать.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Не удержался от любопытства, собрать пока нет возможности, полез в CVS: строка 4616 и ниже - чтение опций плага, там есть HideFoldEnd, т.е. фича глобальная?

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

Post by FeyFre »

В очередной раз настаиваю на создании java.coder. В cpp.coder не место.

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

В coder-файле в QuotesRE не могу добиться обработки вложенных скобок. Правило:

Code: Select all

0	"(\w(\d)\w)"	"\1=(0,${VAR},0) \2=(0,${TAG},0)"
в строке a1a подсвечивает всю строку целиком цветом VAR. Как подсветить цифру в центре другим цветом? Или поддерживаются только последовательные выражения в скобках?

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Cuprum
Последавательно, регулярное выражение с группами же.

Code: Select all

0   "(\w)(\d)(\w)"   "\1=(0,${VAR},0) \2=(0,${TAG},0) \3=(0,${VAR},0)"

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

Post by Instructor »

FeyFre
Можно переименовать в "_java.coder" и удалить "cache" - будет использоваться ваш файл вместо "cpp.coder".

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

Post by FeyFre »

Instructor
Та знаю я знаю. Для себя я делаю как мне удобно, мне не лень из cpp.coder удалить лишнее. Но в последнее время я уж слишком часто это делаю, при этом не понимаю по каким причинам java-у в семью С/С++ включили.

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Товарищи, как можно обрабатывать множественные появления текста внутри диапазона в coder-файле? Есть такая строка:
**Some text to show that the *reference* links *follow* later**
К примеру, строку целиком (между ** и **) надо подсветить одним цветом, но внутри ее, текст в одиночных * надо закрасить другим. Через регулярку в QuotesRE получается сделать, только если внутри строки единственное вхождение текста в одиночных *, т. е.
**Some text to show that the *follow* later**
Но хочется обрабатывать все вхождения.

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

Post by Instructor »

Cuprum
С тестовой можно так попробовать:

Code: Select all

QuotesRE:
;===========================================================================
;Flags  Pattern          \BackRef=(FontStyle,ColorText,ColorBk) \BackRef=...
;===========================================================================
1	"(?:(?<=\*)|(?=\*))([^\*]*+)(?:(\*\*)|(\*.+?\*))"	`\1=(0,${STR},0) \2=(0,${STR},0) \3=(0,${NUM},0)`

Offline
Posts: 381
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

Instructor
На тестовой работает, спасибо!!
Правда я слегка припух от такой конструкции :D Буду разбираться в паттерне.

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

Post by FeyFre »


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

Post by Instructor »

Cuprum, FeyFre
Пользуюсь http://regex101.com/
Locked