Coder plugin (2)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 1
Joined: Tue Apr 28, 2015 6:33 am

Post by Alex72b »

как в cpp.coder добавить правило, чтобы подсвечивало целые, вещественные и шестнадцатеричные числа, а также числа с явным указанием типа, т.е. числа вида -1.2e+3, 0x12afu, 0xAF12l, 1234UL.

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

Post by Skif_off »

Вопрос сниамется как очевидный: надо было сразу заглянуть в спецификацию XML, более того, прошёлся поиском по обеим частям темы - не раз поднимался за крайние пять лет :)

Instructor
Возможно ли добавить флаг по аналогии с Quotes

Code: Select all

4  нахождение конца диапазона обязательно
?
Правда, мне сложно оценить последствия...

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Cuprum wrote:На сложных HTML-файлах если зажать какую-то клавишу при наборе (Backspace, к примеру) прорисовка кавычек в атрибутах какая-то

Image
.
Панель CodeFold при этом мигает.
Coder 15.6.
Отыскал XML файл размером в 10 МБ и попробовал с ним. Если проскролить примерно до середины документа и там в произвольном месте быстро набирать с клавиатуры любые символы, то они прорисовываются с очевидной задержкой. Судя по всему, прорисовка "затормаживается" из-за того, что Coder парсит содержимое этого огромного документа с каждым новым (или стёртым) символом.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Я экспортировал из COMODO рейтинг файлов, получилось 12Mb, работать с таким файлов в AkelPad просто невозможно. - задержка при любом наборе символов или стирании до 8-ми секунд.
Не стал об этом писать, чтобы лишний раз не раздражать своими специфическими просьбами :)

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

Post by Instructor »

Cuprum, DV, VladSh
Чтобы не тормозило, измените настройки CodeFold'а на умолчания:
- Лимит блоков: 10000
- Максимальный документ: 1000000 символов

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

Post by Cuprum »

Instructor
У меня умолчания изначально такие, как вы указывайте.
Выяснил, что мигание исчезает, если только установить "Следовать за кареткой" > "По корню". Но это как бы, кхм, не то.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Instructor
У меня стояло 2000000 символов, но это особо не роляет.

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

Post by Drugmix »

А добавьте, пожалуйста, в js.coder (и в остальные .coder-файлы тоже бы следовало аналогичные записи добавить) в секцию Folds:

Code: Select all

1	0	0	0	"//["	"//]"		""
1	0	0	0	"//{"	"//}"		""
1	0	0	0	"//("	"//)"		""
Чтобы можно делать сворачиваемые группы кода:

Code: Select all

//{ Описание блока кода
...
код
...
//}


И в 10-ый раз повторю просьбу по поводу сворачивания блоков: добавьте, пожалуйста, возможность сворачивать fold блоки до одной строки (строки где начинается folding).
Отображение второй строки (строки где заканчивается folding) мне не нужно, если блок свёрнут.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Drugmix wrote:И в 10-ый раз повторю просьбу по поводу сворачивания блоков: добавьте, пожалуйста, возможность сворачивать fold блоки до одной строки (строки где начинается folding).
Отображение второй строки (строки где заканчивается folding) мне не нужно, если блок свёрнут.
Я сначала не понял, о чём речь, но потом подумав, понял, что да, это именно поэтому я фолдинг почти и не использую, - потому что, он работает непривычно.

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

А если конец фолда не в конце строки?

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Решил поделиться небольшим "трюком" для превращения AkelPad в нечто вроде TreePad с древовидным представлением структуры документа. (В самом TreePad Lite мне недостаёт поддержки юникода и удобного сквозного поиска по всему документу.)
Итак, в папке AkelFiles\Plugs\Coder создаём файл utxt.coder, единственными непустыми секциями которого будут следующие:

Code: Select all

...

Files:
;==========
;File types
;==========
*.utxt

...

Folds:
;=============================================================
;Flags  Font    Color   Color   Fold      Fold      Delimiters
;       style   text    bkgrnd  start     end
;=============================================================
; 4 + 8 + 32 = 44
44	0	0	0	"§"        "■"       ""

...

И вот так будут выглядеть файлы с расширением .utxt в AkelPad:
Image

Файлы .utxt должны сохраняться в кодировке UTF-8 или UTF-16. Это не только для корректного сохранения символов § и ■, но и для корректного отображения не-латиницы (к примеру, кириллицы) на системах с другой локалью.
(Понимаю, что ничего революционного я тут не описал, но, возможно, кому-то этот "трюк" будет интересен.)

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV
Да, хорошая идея. Что-то подобное проскакивало недавно.
Чтобы текст отображался привычно, надо из txt в utxt всё переливать... не совсем удобно. Можно это правило просто в txt добавить - если квадратика не будет, то и фолдинга при параграфе не получится - значит это обычный текст.

Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

Подскажите, пожалуйста: в coder.файле есть у меня два варианта подсветки одного правила (на выбор – либо один, либо другой). Один покорректнее:

Code: Select all

QuotesRE:
1	"(?<=\[c )\baqua\b(?=\])"	"\0=(4,#00FFFF,0)"
Другой попроще:

Code: Select all

Words:
1	4	#00FFFF	0	aqua
Таких правил (подсветок html-цветов) около 130 штук. Вопрос: какой из двух вариантов более ресурсоёмкий? Догадываюсь, что первый, но интересно: существенна ли разница? Стал замечать что документ прорисовывается с небольшими задержками. Если откажусь от 130 более корректных правил в пользу 130 аналогичных, но попроще, будет ли документ прорисовываться быстрее?

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

yozhic wrote:Вопрос: какой из двух вариантов более ресурсоёмкий? Догадываюсь, что первый, но интересно: существенна ли разница? Стал замечать что документ прорисовывается с небольшими задержками. Если откажусь от 130 более корректных правил в пользу 130 аналогичных, но попроще, будет ли документ прорисовываться быстрее?
Вариант с регэкспами будет медленнее, но ресурсоемкость здесь вторична. Главное - достаточная необходимость: если требуется однотипная подсветка абсолютно всех одинаковых слов, то второй вариант предпочтительнее, если же обязательно выполнение неких условий, тогда надо использовать первый вариант, ну а если в разных ситуациях требуется разная подсветка одного и того же слова, то придется использовать оба варианта (с учетом приоритета секций подсветки).

Кроме того, можно попробовать оптимизировать регэкспы. Например, вышеприведенный шаблон:

Code: Select all

QuotesRE: 
1   "(?<=\[c )\baqua\b(?=\])"   "\0=(4,#00FFFF,0)"
я бы записал так:

Code: Select all

QuotesRE: 
1   "\[c \K(aqua)(?=\])"   "\1=(4,#00FFFF,0)"
- нет необходимости указывать границы слова, т.к. в шаблоне это слово и так ограничено разделителями

Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

YuS
Главное - достаточная необходимость
Конечно выполнение условий важнее, но на некоторых машинах так подтормаживало (курсор перемещаешь, а он рывками), что я и задумался.
нет необходимости указывать границы слова, т.к. в шаблоне это слово и так ограничено разделителями
Премудрость :) Этот момент я прошляпил.
\K
Не работает что-то у меня этот ключик в правилах подсветки. Так что пока оставил ретроспективную проверку. А может проще (и эффективней) сделать три пары скобок и только одну из них подсветить?
Locked