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 »

Пока да.

Offline
Posts: 30
Joined: Sat Nov 26, 2011 1:52 pm

Post by Egor »

Нет, рано я радовался… Щас перепроверил на нескольких схемах, чё-то нифига эта "волшебная" формула с "Xor" не работает. Например:

Code: Select all

-------------------------------------------------
 [1]    :    [2]   :    [3]     :   [4]
-------------------------------------------------
Тема    :  Задано  :  Показано  :  FFFFFF Xor [2]
-------------------------------------------------
Bespin  :  FFFF00  :  0000FF    :  0000FF
Cobalt  :  656565  :  9AB8DA    :  9A9A9A
Monokai :  8F908A  :  574757    :  706F75
Twilight:  868686  :  6D6D6D    :  797979
Zenburn :  5D666E  :  9DA6AE    :  A29991
-------------------------------------------------

Обозначения (номера) колонок

[1] название темы
[2] цвет, заданный в настройках для "HighLight_ColumnColor"
[3] цвет, показываемый на экране РЕАЛЬНО
[4] "волшебная" формула: FFFFFF Xor [2]

В итоге мы видим, что значения в колонках [3] и [4]
совпадают только у схемы Bespin, а у остальных они
разнятся, т.о. "волшебная" формула не работает :(

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

Post by Serge Yolkin »

Egor
ClearType отключен?

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

Post by Instructor »

Egor wrote:... а что такое "зебра"?
Включите и увидите:
Главное меню -> Настройки -> Параметры... -> Редактор 1 -> Зебра
Пропуск = 2
Заливка = 2
Egor wrote:

Code: Select all

32 don't highlight quote start
64 don't highlight quote end

128  don't catch and don't highlight quote start
256  don't catch and don't highlight quote end
Про 32/64 я вроде понял: это чтобы сами кавычки не подсвечивались? А что тогда такое 128/256 (don't catch) — в чём отличие от 32/64?
Если используется "не захватывать", то начало/конец диапазона также проходят через обработку остальными правилами.
Egor wrote:Да, еще хотел спросить: там в настройках Coder'a есть опция "кэш: использовать/не использовать" — зачем он нужен, этот кэш, и что он даёт?
Кэш - это файл "{AkelPad}\AkelFiles\Plugs\Coder\cache". Дает данные плагину: какие файлы *.coder за какие расширения отвечают, без необходимости загрузки этих файлов, т.е. ускоряет инициализацию плагина.
Egor wrote:То есть если я хочу получить на экране для HighLight_ColumnColor, например, цвет #0000FF, то в окне настроек мне надо прописать цвет #FFFF00...
Если вам надо цвет #0000FF, то указываете цвет #0000FF. Ничего мудрить не надо. Активная строка имеет не сплошной цвет, а её отрисовка организуется через смешивание при наложении цветов. Если нужны подробности см. в исходниках функцию AE_ActiveColumnDraw в AkelEdit.c.
Egor wrote:в окне настройки цветов цветовой темы переменные в списке можно двигать вверх-вниз (клик правой кнопкой мыши > Переместить вверх/Переместить вниз), — на что влияет порядок переменных в этом списке, или это просто для удобства?
Для удобства.

Offline
Posts: 30
Joined: Sat Nov 26, 2011 1:52 pm

Post by Egor »

Instructor wrote:Если вам надо цвет #0000FF, то указываете цвет #0000FF. Ничего мудрить не надо. Активная строка имеет не сплошной цвет, а её отрисовка организуется через смешивание при наложении цветов. Если нужны подробности см. в исходниках функцию AE_ActiveColumnDraw в AkelEdit.c.
Исходники мне все равно ни о чём не скажут, ибо C я не знаю.

Image

То, что вертикальная линия рисуется пунктиром это я понял (на картинке это видно). Пример взят из темы "Twilight". В окне настроек цветов HighLight_ColumnColor = #868686, Теперь я беру цвет с экрана колор-пикером (я использую ColorCop). На картинке видно, что цвет пунктира #6D6D6D. Так вот, объясните мне просто и тупо: как мне узнать цвет, который надо задать в окне настроек, чтобы получить ЖЕЛАЕМЫЙ цвет "квадратика" в пунктире. И я не понимаю, как можно обойтись без "мудрежа", если воочию видно, что реальный цвет "квадратика" не равен заданному в настройках цвету. Или я что-то не так понимаю?

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

Post by Instructor »


Offline
Posts: 3
Joined: Sun Apr 27, 2014 10:53 am

Post by Starg »

I found a bug in Coder::HighLight.
In C++,

Code: Select all

/* test
// comment */ Not a comment!
everything above incorrectly gets highlighted as a comment.

Offline
Posts: 30
Joined: Sat Nov 26, 2011 1:52 pm

Post by Egor »

Instructor wrote:Egor
Тестовая версия
Я попробовал, да, вот теперь всё правильно, вертикальная линия показывается тем же цветом, каким указано в настройках значение переменной HighLight_ColumnColor.

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

Post by Skif_off »

Starg
It's not a bug, it's nuance :)
For example: in \AkelFiles\Plugs\Coder\cpp.coder replace

Code: Select all

1	3	${COMM}	0	"//"	""	":"	""	""
by

Code: Select all

1	3	${COMM}	0	"//"	"*/"	""	""	""
1	3	${COMM}	0	"//"	""	":"	""	""
in section Quotes.
But needs to be clarified: such a rule doesn't create any problems?

Or

Code: Select all

;513=1+512
513	3	${COMM}	0	"//"	"*/"	""	""	""
1	3	${COMM}	0	"//"	""	":"	""	""
? Just in case?

Offline
Posts: 3
Joined: Sun Apr 27, 2014 10:53 am

Post by Starg »

Skif_off
Thank you. It works correctly.

And I have one more question about highlighting raw string literal.

Single-line raw string literals can be easily highlighted by QuotesRE, but how do I highlight multi-line raw string literals?

Code: Select all

const char* str = R"foo(
"Hello"
World!
)foo"; 

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

Post by FeyFre »

Starg
I think it is not possible yet. Doing that for .lua w/o success yet.

Offline
Posts: 3
Joined: Sun Apr 27, 2014 10:53 am

Post by Starg »

FeyFre
OK. Thank you anyway for clarifying that.

Offline
Posts: 267
Joined: Mon Mar 12, 2007 3:45 pm

Post by [Yustas.NeO] »

Включено: "Добавлять словами из документа".
Введено: Автоматический список — Показывать после — N символов.

Если в coder-файле в секции Words есть слово, состоящее из N букв (например, «is» «or» «on», а в настройках "Показывать после — 2 символов"), а в тексте есть слово начинающееся на эти N буквы (например «isNull»), то после ввода этих N букв («is») — вообще не показывается AutoComplete-список. А должен бы показать «is* isNull+».

Стоит внести в coder-файл слово, например, «iss» и обновить кэш — как начинают показываться «is* iss* isNull+».

P.S.
Для «if» нормально показывается, судя по всему, потому что им (if'ом) заполнена секция «Folds:»..

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

Post by Cuprum »

Ребята, а кто пояснит вот такое поведение. Есть css.coder. В нем такие правила QuotesRE:

Code: Select all

0   "(#(?!\d|--|-\d)(\w|-)+)\b"  "\1=(0,${VAR},0)"
0   "\:.*(#)([A-F\d]{6}|[A-F\d]{3})\b"  "\1=(0,0,\2)"
0   "\:.*(#)([A-F\d]{1,2}|[A-F\d]{4,5})\b"  "\1=(0,0,0)"
Первое подсвечивает идентификаторы, второе подсвечивает решетку указанным цветом внутри background или background-color; третье нужно, чтобы не подсвечивать таким же цветом как у идентификатора цвет, когда в нем не 3 или 6 символов (в процессе печати).
При таких правилах, когда, допустим, напечатано только 4 символа, цвет все равно подсвечивается

Image


Но стоить третье правило записать без \b на конце

Code: Select all

0   "\:.*(#)([A-F\d]{1,2}|[A-F\d]{4,5})"  "\1=(0,0,0)"
подсветка цветом идентификатора

Image

Никак не могу понять, почему?

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

Post by Skif_off »

Cuprum
Идентификаторы бывают только в начале строки? Если да, то можно попробовать добавить в первое правило "^[ \t]*".
Флаг 512, кажется, не работает в QuotesRE?
Locked