Coder plugin (3)

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Олег
Какой-то там бардачок... Что насчёт того, чтобы заменить на дефолтный, чуток подпилив?

Code: Select all

;---------------------------------------------;
;       Based on ini.coder from AkelPad       ;
;---------------------------------------------;

Files:
*.reg

Font:
${HighLight_FontStyle} ${HighLight_FontSize} ${HighLight_FaceName}

Colors:
${HighLight_BasicTextColor} ${HighLight_BasicBkColor} ${HighLight_SelTextColor} ${HighLight_SelBkColor} ${HighLight_LineTextColor} ${HighLight_LineBkColor} ${HighLight_LineBorderColor} ${HighLight_AltTextColor} ${HighLight_AltBkColor} ${HighLight_AltBorderColor} ${HighLight_ColumnColor} ${HighLight_MarkerColor} ${HighLight_CaretColor} ${HighLight_UrlColor} ${HighLight_ActiveUrlColor} ${HighLight_VisitUrlColor}

BkImage:
${HighLight_BkImageFile}  ${HighLight_BkImageAlpha}

AutoMark:
${HighLight_AutoMarkFlags} ${HighLight_AutoMarkFontStyle} ${HighLight_AutoMarkTextColor} ${HighLight_AutoMarkBkColor}

Quotes:
517	2	${DEL1}	0	"[-"	"]"	""	""	""	0	0
517	2	0	0	"["	"]"	""	""	""	0	0
513	3	${COMM}	0	";"	""	""	""	""	0	0
513	3	${COMM}	0	"#"	""	""	""	""	0	0
773	0	${OP}	0	""	"="	""	""	""	0	0
5	3	${STR}	0	`"`	`"`	""	""	""	0	0

QuotesRE:
1	"(?<=[ \t])(;[^\r\n]++)"				"\0=(3,${COMM},0)"	0	0
1	"(?<=[=])((dword)|(hex\(2\))|(hex\(7\))|(hex)):"	"\1=(2,0,0)"		0	0

Delimiters:
1	0	0	0	" "
1	0	0	0	"	"
1	0	${DEL1}	0	=

Words:

FoldPanel:
${CodeFold_PanelFirstBkColor} ${CodeFold_PanelSecondBkColor} ${CodeFold_PanelNormalFoldColor} ${CodeFold_PanelActiveFoldColor} ${CodeFold_PanelNormalNodeOpenBkColor} ${CodeFold_PanelNormalNodeCloseBkColor} ${CodeFold_PanelActiveNodeOpenBkColor} ${CodeFold_PanelActiveNodeCloseBkColor} ${CodeFold_PanelNormalNodeOpenSignColor} ${CodeFold_PanelNormalNodeCloseSignColor} ${CodeFold_PanelActiveNodeOpenSignColor} ${CodeFold_PanelActiveNodeCloseSignColor}

FoldList:
${CodeFold_ListTextColor} ${CodeFold_ListBkColor}

TagMark:
${CodeFold_TagMarkFlags} ${CodeFold_TagMarkFontStyle} ${CodeFold_TagMarkTextColor} ${CodeFold_TagMarkBkColor}

Skips:

Folds:
173	0	0	0	"["	"["	""	0	0

CompleteList:
${AutoComplete_ListFontStyle} ${AutoComplete_ListFontSize} ${AutoComplete_ListFaceName} ${AutoComplete_ListLineGap} ${AutoComplete_ListBlockIcon} ${AutoComplete_ListBlockIconMargins} ${AutoComplete_ListHlBaseIcon} ${AutoComplete_ListHlBaseIconMargins} ${AutoComplete_ListDocWordIcon} ${AutoComplete_ListDocWordIconMargins} ${AutoComplete_ListBasicTextColor} ${AutoComplete_ListBasicBkColor} ${AutoComplete_ListSelTextColor} ${AutoComplete_ListSelBkColor}

Blocks:
_reg.coder в UTF-16 LE, положить в папку \AkelFiles\Plugs\Coder и там же грохнуть файл cache.
Текст в кавычках подсвечивается правилом

Code: Select all

5	3	${STR}	0	`"`	`"`	""	""	""	0	0
в секции Quotes, на русском параметры описаны в cpp-rus.coder.

Offline
Posts: 44
Joined: Wed May 01, 2019 10:10 am

Post by Олег »

Надо подумать... Возможно оно и правильнее - заменить на дефолтный.

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

Post by Skif_off »

Олег
В той сборке в ini.coder напихано немеряно расширений, замена на дефолтный создаст некоторые неудобства (в т.ч. потребует дополнительного внимания при обновлении).

Мой вариант выше (нажмите на "Сохранить как") не попробовали? Отличие от дефолтного: подсвечивает красным ветки к удалению (типа [-HKEY_...]), значение в кавычках, подсказки некоторых типов и комментарии.

Offline
Posts: 44
Joined: Wed May 01, 2019 10:10 am

Post by Олег »

Мой вариант выше (нажмите на "Сохранить как") не попробовали?
Попробую, сейчас изучаю справку по Coder'y

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Олег wrote:Попробую, сейчас изучаю справку по Coder'y
Я буквально на днях ковырял подсветку reg-фалов, посмотри в моём архивчике. Там 9 регулярных выражений, подсвечивает GUID, типы данных, пути. Сделан как отдельный файл, в остальных упоминания стёрты.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Предыстория по поводу переменных.
1. Заметил что переменная ${OP} используется для функций, хотя по написанию аббревиатура оператора. Но операторы имеют переменные ${DEL1} ${DEL2}. Вопрос, почему бы не создать больше переменных, примерно по две на каждый тип, а для файлов разметки создать свои переменные, так как они имеют немного другое значение по сравнению с программным языком. Есть разные строки в двойных и в одинарных кавычках, есть разные комментарии: блочные и строчные, есть разные ключевые слова, одни из них являются операторами типа And или модули, есть разные функции: встроенные, пользовательские, макросы, WinAPI. На данные момент в языках больше лексем, чем предоставлено. Из-за этого приходится создавать переменные или указывать явно, но это становиться проблемой при переключении тем, так как другая тема либо не видит переменные, либо использует явные значения чёрной темы в белой и выглядит блекло, почти не видно.
Проблема переработать темы думаю не сложно, в *.coder поиском и заменой можно легко заменить на переменную - это для быстрой совместимости, а потом уже учесть возможность выбора.
Если есть желание можно обсудить имена переменных и сколько их, думаю это не проблема. Также я могу найти на своём старом диске архив с файлами разных языков, чтобы посмотреть как каждый язык будет выглядеть в разных темах. Специально делал чтобы весь синтаксис был представлен и как он выглядит, создавая тему.

Offline
Posts: 19
Joined: Sun Dec 08, 2013 5:35 am

Post by W0LF »

Всем привет!
Как подсвечивать отдельные слова, начинающиеся с некоторого префикса, например с символа "_", т.е. слова "myVar" и "_myVar" должны различаться.
На данный момент у меня сделано так:

Code: Select all

Quotes:
;===========================================================================================
;Флаги	Стиль	Цвет 	Цвет 	Начало	Конец	Символ	Диапазон	Диапазон	№ родителя	№ правила
;		шрифта	текста	фона	диапаз.	диапаз.	экран.	включает	исключает
;===========================================================================================
4	0	${VAR}	0	"_"	" "		""	""	""	0	0
4	0	${VAR}	0	"_"	"	"	""	""	""	0	0
4	0	${VAR}	0	"_"	";"		""	""	""	0	0
Проблема в том, что ниже в секции Words присутствуют другие слова, которые также начинаются с символа "_" и они должны подсвечиваться третьим цветом, но этого не происходит.

Code: Select all

1	0	${ATTR}	0	_x
1	0	${ATTR}	0	_this
UP!

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

Post by Instructor »

Eskander88 wrote:Не получается добавить автодополнение (auto folding) для команд со знаком «$», «%», в секции «Blocks:», например:

Code: Select all

$$$COM
$$_SERVER['DOCUMENT_ROOT']
%username%
%port%
При вводе символа «$» никаких реакций
Уберите $ из разделителей в настройках AkelPad'а и можете использовать:

Code: Select all

$~$COM
$$_SERVER['DOCUMENT_ROOT']
%username%
%port%
Чтобы не убирать $ из разделителей, используйте "точные абревиатуры" (см. описание $=abbr и $(flags)=abbr). Но лучше просто не использовать разделители в аббревиатурах :)

W0LF
Приоритет у Quotes выше. Можно так:

Code: Select all

;===================================================================================
;Flags  Font    Color   Color   Quote   Quote   Escape  Quote   Quote   Parent  Rule
;       style   text    bkgrnd  start   end     char    include exclude ID      ID
;===================================================================================
;272=16+256
272     2       ${ATTR} 0       "_this" ""      ""      ""      ""      0       0
4       0       ${VAR}  0       "_"     " "     ""      ""      ""      0       0
4       0       ${VAR}  0       "_"     "   "   ""      ""      ""      0       0
4       0       ${VAR}  0       "_"     ";"     ""      ""      ""      0       0

Offline
Posts: 19
Joined: Sun Dec 08, 2013 5:35 am

Post by W0LF »

Instructor wrote: W0LF
Приоритет у Quotes выше. Можно так:
Я сделал так:

Code: Select all

QuotesRE:
;==============================================================================================================================
;Флаги	Шаблон					\ОбратнаяСсылка=(СтильШрифта,ЦветТекста,ЦветФона)	\ОбратнаяСсылка=...	№родителя	№правила
;==============================================================================================================================
0		"\b_(?!x|this|foreachindex)\w+"	"\0=(0,${VAR},0)"

Words:
;==============================================================================
;Флаги	Стиль	Цвет	Цвет	Слова			№родителя
;		шрифта	текста	фона
;==============================================================================
0	0	${ATTR}	0	_x
0	0	${ATTR}	0	_this
0	0	${ATTR}	0	_forEachIndex

Не знаю правильно ли я составил регулярку (первый раз делал), но вроде бы работает.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Хоть мы и обсуждали изменение подсветки для txt при наличии некого текста с применением через alias, но всё же это не совсем удобно. Если я ввожу текст выше строки, от которой произошёл захват, то этот текст автоматически начинает интерпретироваться как txt, а не как alias... Приходится либо переоткрывать, либо обновить подсветку.
Повторю суть: хотелось бы секцию типа QuotesRE но с другим названием (AliasRE), и если рег.выр. этой секции найдёт некий текст, то применит к нему другой alias. То есть среди txt у меня есть допустим книга, допустим таблица с табуляцией, допустим список в виде лога действий дата+действие, допустим форматированные страницы справки. И хотелось бы чтобы каждый txt обрабатывался по своему, критерий применения некоторого кодера являлось бы некая неповторяющаяся комбинация текста, причём кодер бы включился на него от начала до конца. Допустим раздел AliasRE был бы необязательным, но при его наличии переключиться на другой кодер. Скорее всего это будет применимо только для txt как универсальный формат для текстовых записок с разными форматами.

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

Post by YuS »

AZJIO wrote:Хоть мы и обсуждали изменение подсветки для txt при наличии некого текста с применением через alias, но всё же это не совсем удобно. Если я ввожу текст выше строки, от которой произошёл захват, то этот текст автоматически начинает интерпретироваться как txt, а не как alias... Приходится либо переоткрывать, либо обновить подсветку.
Гипотетически сложно понять, что именно требуется. Необходим пример того, что невозможно сделать существующими инструментами, либо описать сложность (опять таки на примере) их использования, если действия возможно выполнить уже существующими...

ЗЫ И как обычно, в любом случае, не забываем о бритве Оккама. :)

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

YuS wrote:сложно понять, что именно требуется
я кажется расписал лучше не куда. Вот картинка:
Image
как видим нижняя часть текста подсвечена как надо, верхняя часть частично скопирована, например дата, номер и частично текст, введены все правки (можно просто скопировать строку и вставить), и что мы видим (?) строка не подчиняется правилу подсветки alias, а подчиняется подсветки txt. Я нажимаю хоткей (рефреш кодера) и она подкрашивается. Что я делаю не так? Рег.выр. мы обсуждали, он по ссылке на руборде.

Так как я пишу лог всегда в верхней строке, иногда копирую строку, иногда полностью ввожу, иногда жму кнопку вставки текущей даты, и частенько наблюдаю неподкрашивание. А прелесть как раз таки чтобы не подкрашивать текст если что-то пошло не так, а именно он сам подкрасился, помогая тебе легко воспринимать инфу.

Алгоритм не обрабатывает вставленный текст?

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

Post by YuS »

AZJIO wrote:
YuS wrote:сложно понять, что именно требуется
я кажется расписал лучше не куда.
Ты же программированием не первый день занимаешься и представляешь себе, что самое лучшее описание, гораздо хуже примера, только полного примера, а не визуальной картинки, т.е. это:
AZJIO wrote: Вот картинка:
Image
каким-либо образом протестировать, просто невозможно.
Нужен сам файл txt.coder (или тот набор правил, который работает...) и связанный по алиасу тоже... чтобы понять, почему подсветка не срабатывает.
AZJIO wrote: как видим нижняя часть текста подсвечена как надо, верхняя часть частично скопирована, например дата, номер и частично текст, введены все правки (можно просто скопировать строку и вставить), и что мы видим (?) строка не подчиняется правилу подсветки alias, а подчиняется подсветки txt. Я нажимаю хоткей (рефреш кодера) и она подкрашивается. Что я делаю не так? Рег.выр. мы обсуждали, он по ссылке на руборде.
Ну, обсуждали мы столько, что вспомнить конкретное правило проблематично.
А на скрине видно, что там выделен конкретный блок сворачивания и что там описано в .coder файле, что не подсвечивается начало блока - вопрос тот ещё, т.е. необходимо увидеть все правила, чтобы говорить что-то определенное. Вполне возможно, что и баг присутствует, но по картинке этого мы не определим никак.
AZJIO wrote: Алгоритм не обрабатывает вставленный текст?
Обрабатывать должен, если конечно, нет пересекающихся правил или ещё каких-либо коллизий с регвырами и другими правилами.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

YuS
Пока нет времени, на работу, но завтра может подчищу оба кодера, чтобы там ни на что не было подозрений. Но на словах скажу:
1. txt.coder имеет первой строкой alias на "ooo", а значит он теоретически не позволяет использовать txt.coder-подсветку, так как сразу переключается на ooo.coder. А у нас как мы видим по скрину он первую строку подсветил как txt.coder

Code: Select all

Folds: 
;1048580=4+1048576
1048580    0    0    0    "\A(?=.*\d\d\.\d\d\.\d\d[ ]+(?:\d{3,4}|[ск][12]))"    "\z"    ""    0    0    "alias:.ooo"
2. Также фраза "сделал рефреш и подсветилось как надо" - говорит о том, что кодеры работаю правильно (нет перечесений и конфликтов), но проблема именно при вставке.
3. Моя идея подсветить по критерию текста работает красивей, чем использование сложного захвата до конца строки регвыром. Во первых это быстрей, так как критерий может находится в начале текста или максимум на 10% от начала текста. Во вторых он при вводе текста не использует два кодера, а полностью переключается на 2й кодер (автозавершение, фолдинг, и т.д). В третьих в реальности можно найти применение для других типов файлов, например даже для одинаковых типов файлов, например техническая литература в html можно подсветить эти особые файлы с учётом содержимого. Мне приходится этим заниматься, то есть я правлю тех-файлы html и конечно имеет смысл некоторые элементы схемы обозначения конденсаторов и т.д. подсветить, так как я их в текстовом формате никогда править не буду, потому что проект в html-формате, то и редактировать мне приходится в html-формате всегда, значит я обречён либо когда то подсветить, либо пользоваться как есть.

Offline
Posts: 351
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

YuS
https://yadi.sk/d/sRG4JSxkxqM-og
2 кодера для теста
тестовый текст:
21.07.19 111 текст
21.07.19 222 текст
21.07.19 333 текст
21.07.19 444 текст
скопируй верхнюю строку и вставь сверху. Первую строку оставь пустой, то есть сделай 2 пустых строки сверху и вставляй во вторую. Потом перемести курсор в первую строку жми Enter и снова вставляй. Получается свёртка сдвигается вниз. А вот если оставить две пустых строки и вводить всегда в 3-ю, то свёртка остаётся в 1-й строке всегда и я ввожу внутрь свёртки и тогда подсвечивается нормально.
Post Reply