Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Подсветка синтаксиса конфигурационных файлов TC 
Author Message
yozhik



PostPosted: Sat Sep 27, 2025 03:36    Post subject: Reply with quote

Orion9
Пардон, я тут чуть запропал.
Orion9 wrote:
Хотелось бы, чтобы ключ "cmdxx=" (именно только этот ключ до знака =) выделялся отдельным фоном

Вообще-то блок кнопки начинается с ключа buttonxx, и если подсвечивать, то логичней его. Ключ cmdxx по отношению к нему на втором месте. Тем более, что в кнопках попадаются разделители, в которых всего лишь два ключа: buttonxx и iconicxx, а cmd отсутствует.
Orion9 wrote:
Когда открываешь бар-фай в редакторе, первым делом пытаешь различить номера ключей

Я их по узлам слева различаю и в панели CodeFold они чётко видны списком — мне достаточно. Вот как это выглядит:

И поскольку глазу есть «за что ухватиться», я стараюсь цветом не пестрить. Вместе с тем
Orion9 wrote:
Ключи с cm_командами сливаются с самими командами

у Вас, насколько я знаю, отключены Bold/Italic, а в исходном варианте они вносят достаточно отчётливости, на скрине видно.

Вообще, при создании подсветки (в AP), условия каковы? 1) — пользоваться лучше встроенными переменными (OP, TYPE, AREA и т.д.), а не указывать цвет напрямую, чтобы работало одинаково корректно во всех темах, как светлых, так и тёмных. А переменных этих немного — 12, из которых 3 (STR, COMM, DEL2) выпадают из палитры доступного. Потому и вводится стиль шрифта, как дополнительный отличитель. А ещё — 2) — bar.coder не только для bar, но и для usercmd.ini — у них синтаксис одинаковый, а имена ключей различаются. И надо так подсвечивать одни, чтобы не задевать другие.

В общем, я сделал, как Вы писали (постоянная подсветка фона начала кнопок), но код мне самому кажется громоздким (может и напрасно). Хотя на быстродействие подсветки это не влияет. Посмотрите здесь, пожалуйста (жёлтым я выделил строки, которые отвечают за подсветку фона):
https://github.com/yozhic/AkelPad-coders/blob/test/gh_preview_only/bar.utf8.coder#L64-L72
Это branch, и если Вам понравится, то я перенесу эти строки в основную ветку. Но оставлять их активными пока не хочется, т.к. если Bold/Italic не отключать и CodeFold держать открытым, то яркости достаточно. Думаю, закомментирую их с объяснением, и кто захочет, раскомментирует и будет пользоваться. (Этот файл, который по ссылке откроется, в «нерабочей» кодировке (UTF-8 ), поэтому содержимое лучше копипастой переносить к себе в bar.coder.)

Собственно, поэтому также и подсветку TC-шных команд cm_ и em_ не хочется менять, что она рассчитана на доп. выделение стилем шрифта. Может быть так попробуем: Вы бы пока в этих двух строках (два комментария не в счёт)
https://github.com/yozhic/AkelPad-coders/blob/test/gh_preview_only/bar.utf8.coder#L84-L87
раскрасили бы себе фон, например как-нибудь так (вместо последнего 0 перед закр. скобкой):
Code:
;--TC internal commands--
0   `(?<=\W)cm_[a-z0-9]++`     `\0=(4,${OP},#FFF2E6)`
;--TC extended commands--
0   `(?<=\W)em_[a-z0-9_]++`    `\0=(3,${TYPE},#FFF2E6)`

Если в целом нормуль, то может добавим так же закомментированным вариантом.

Теперь aucfg. В этом примере:
Code:
aSnap = aFiles.Clone()
aSnap.SaveToFile(TEMP & "\tc_dir_snap.lst")

меня не смущает, что второе aSnap подсвечивается, а первое — нет. Ведь первый aSnap ещё не стал объектом, он только назначается, а второй уже стал, вот он и засветился (и это уже не просто aSnap, а объект). И опять же, при включенных Bold/Italic элементы не сливаются (а я ещё вдобавок сейчас и точку между объектом и методом выделил, чуть более внятно стало). Но я понимаю, Вам Bold/Italic вообще не «зашли». Но тут что-либо менять сложнее, чем в bar. Aucfg — подсветка более комплексная, и поэтому я пока не придумал, как сделать аккуратно, чтобы можно было закомментировать и использовать по желанию либо один вариант, либо другой. Ведь не хочется делать второй вариант отдельным файлом.
_________________
Amo ergo sum
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group