Colorer — гибкая раскраска синтаксиса в редакторе и др.

Здесь можно обсудить ваш любимый плагин.
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ctapmex »

Far Colorer — плагин подсветки синтаксиса в редакторе, основанный на Colorer Library Игоря Русских.
  • Изначальный автор плагина — Игорь Русских (lomecb, он же cail).
  • После того как плагин портирован на Far 2, поддержкой занимается Алексей Добрунов (ctapmex, он же на форуме ctapmex).
  • Официальная поддержка осуществляется через google-группу colorer_ru (на форуме бывает только ctapmex).
  • Актуальные версии основаны на Colorer Library версии take5.
GitHub | Анонс | Старые домашние страницы библиотеки Colorer и плагина для FAR

Плагин входит в дистрибутив Far Manager с v3.0.2948 (старые версии доступны тут)
Поддержка Windows XP
Начиная с версии FarColorer 1.4.0 в плагине прекращена поддержка Windows XP. Полностью поддерживается и тестируется на Windows 10. Несколько версий Windows назад - по запросу. Но кажется, что всегда должно работать начиная с Windows 2008.
Far Manager 3.0.5797 (2021.05.10) и более новые в дистрибутиве содержат FarColorer версии 1.4.
Поддержка Windows XP осталась только на FarColorer 1.3.x. В данной ветке будут выходить только критичные исправления. Скачать можно на GitHub странице плагина. Последняя версия 1.3.30



Что не разжёвано в документации плагина:
  • Как подключить собственные цветовые стили *.hrd
  • Как подключить собственную схему:
    • используя пользовательский файл прототипов:
    • используя папку auto:
    • через пользовательский catalog.xml:
  • Как переопределить существующую схему
  • Как правильно "удалить" какую-либо стандартную схему
  • Как использовать относительные пути и переменные окружения
  • Если раскраска неправильна:
  • Неочевидные настройки: maxlinelength (в теме)
  • Тонкая настройка подсветки для отдельной схемы: в теме.
Last edited by ctapmex on Mon 18 Oct, 2021 19:17, edited 5 times in total.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

Latest post of the previous page:

sonar
Т.е. с оговорками, но почти все из хотелок возможно в том или ином виде. Прошу занести куда-нибудь в планы. Спешки никакой нет, жили и без этого. Но с этим было бы удобнее.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

sonar

Спасибо за учтенные пожелания в последней версии 1.0.3.9 . 15.03.2012 . Отдельное - за colorer.exe, лично мне он важен для автоматизированного тестирования своих трудов в схемах (помимо прямого назначения, конечно).

Code: Select all

A Name of the current region
Это супер полезно. Небольшие замечания:

1. Может, назовем это нейтрально "Region info | Данные региона" - коротко и ясно, тем более, что на деле там уже не только "Name of the current region"
2. Имя текущей схемы - очень полезно для разработчика, must have there!
3. Имя def: региона... немного полезно, но еще практически было бы полезно имя региона в схеме, для которого этот def регион - родитель. Если кто-то надумает настраивать цвета отдельной схемы, а не глобально, то ведь надо знать имя не столько def:родителя (это полезно, пусть будет тоже, для глобальной настройки цв. схемы в том числе), сколько имя региона в схеме, порожденного из def (или даже не из def, там цепочка может быть). Но может, там уже внутри кухни кода тяжело эту информацию проследить...

(остальное, на что недавно "жаловался" (кроме самых свежих вишей), тоже все проверил - прекрасно работает)
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ctapmex »

NightRoman wrote: 1. Может, назовем это нейтрально "Region info | Данные региона" - коротко и ясно, тем более, что на деле там уже не только "Name of the current region"
да, будет логично. не мог выбрать название долго
NightRoman wrote: 3. Имя def: региона... немного полезно, но еще практически было бы полезно имя региона в схеме, для которого этот def регион - родитель. Если кто-то надумает настраивать цвета отдельной схемы, а не глобально, то ведь надо знать имя не столько def:родителя (это полезно, пусть будет тоже, для глобальной настройки цв. схемы в том числе), сколько имя региона в схеме, порожденного из def (или даже не из def, там цепочка может быть). Но может, там уже внутри кухни кода тяжело эту информацию проследить...
это я перемудрил. как раз наткнулся на проблему безымянных регионов и что то там пытался сделать. в итоге запутался и стал выводить def регионы. поправлю.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

Схему markdown.hrc можно включить в поставку, если нет возражений:
https://github.com/nightroman/FarHelpDown/downloads

Думаю, схема доведена до приличного состояния. На 100% точно описать все возможные комбинации формата (особенно глубокие вложения, основанные на разных отступах) тяжело и вряд ли часто это в реале нужно. Сейчас достигнут хороший баланс относительной простоты и эффективности в большинстве практических текстов.

Схему предлагаю в группу inet, ибо это суть тривиальный удобный глазу HTML (конвертер там же по ссылке, если кому надо). Но мне все равно, куда она впишется в поставке, может, text, может, rare. Но мне лучше знать, я там коммент подправлю.

Предлагаемый вариант регистрации прототипа:

Code: Select all

<prototype name="markdown" group="inet" description="markdown">
<filename>/\.(?:text|md|markdown)$/i</filename>
<location link="...\markdown.hrc"/>
</prototype>
(есть и другие "стандартные" расширения маркдаун файлов, но я с ними не сталкивался сам)
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ctapmex »

мне кажется его лучше разместить в rare.inet , если уж не в other . в inet там xml-подобные схемы.

а для чего в прототипе используешь '?:' ?

up. а что на github не заливаешь схему раскраски ? в исходники, а не в готовый дистрибутив .
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

sonar wrote:мне кажется его лучше разместить в rare.inet , если уж не в other . в inet там xml-подобные схемы.
Да, логично. Уточню в комментах.
sonar wrote:а для чего в прототипе используешь '?:' ?
Привычка :). Там, где группа снаружи не используется, всегда стараюсь использовать ?:, типа самодокументирование. А () без ? автоматом означает, что на группу кто-то реально ссылается. Ну это мелочи. Там по стилю везде без ? - пусть будет без.
sonar wrote:up. а что на github не заливаешь схему раскраски ? в исходники, а не в готовый дистрибутив .
Залью. Пока мне так удобнее было, чтобы файл схемы в 2-х местах не держать. Проект-то вообще-то не про схему, схема там просто как addon идет.

Вообще, еще очень вероятно буду схему подпиливать, так что при включении лучше взять последнюю оттуда.
Last edited by NightRoman on Thu 15 Mar, 2012 11:28, edited 1 time in total.
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ctapmex »

ну я готов хоть сейчас добавить в svn. но поскольку схема пока еще дорабатывается временами, то залью её при следующем релизе схем
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

Да, при следующем релизе, конечно, взять ту, что будет на тот момент. Схему залил в исходники на гитхаб.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

По поводу Region info и scheme. Кажется, там выводится имя схемы самого верхнего уровня. Но, если это возможно, то и имя той схемы по которой реально идет раскраска хорошо бы знать тоже (даже очень надо).

Пример: test.c

Code: Select all

/*
http://foo.bar
*/
Если встать на адрес и вызвать инфу, то она покажет Scheme: def:Comment, схему, "с которой все началось". Но раскраску-то URL в конечном итоге определяет схема def:NetURL, а ее нет в инфе. Между ними еще есть схемы, может, это лишнее их знать (может, нет). Но начальную (сделано) и конечную (еще нет) хотелось бы.
User avatar
ctapmex
Posts: 1241
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by ctapmex »

к сожалению, не смогу вытянуть эту информацию
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

sonar wrote:к сожалению, не смогу вытянуть эту информацию
Это другое дело, нет проблем.
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by Tim Sobolev »

Пример раскраски для скриптового языка Squirrel (расширение ".nut"), взятое с форума:

Может прикрутить его к Colorer?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

Предлагаю дополнить стандартную схему hrd.hrc из поставки 16-ю регионами, которые
соответствуют кодам цветов консоли, и распознаванием этих кодов от #0 до #F в
атрибутах fore и back в файлах HRD. Измененная схема:
http://farnet.googlecode.com/files/_120 ... hrd.hrc.7z

По умолчанию это ничего не изменит и никому не помешает. Однако, это может быть
полезно тем, кто работает с HRD файлами (настройка по вкусу цветовой схемы или
цветов регионов отдельных схем), если они добавят туда эти строки:

Code: Select all

<assign fore="#00" name="hrd:fore.Black"/>
<assign fore="#01" name="hrd:fore.DarkBlue"/>
<assign fore="#02" name="hrd:fore.DarkGreen"/>
<assign fore="#03" name="hrd:fore.DarkCyan"/>
<assign fore="#04" name="hrd:fore.DarkRed"/>
<assign fore="#05" name="hrd:fore.DarkMagenta"/>
<assign fore="#06" name="hrd:fore.DarkYellow"/>
<assign fore="#07" name="hrd:fore.Gray"/>
<assign fore="#08" name="hrd:fore.DarkGray"/>
<assign fore="#09" name="hrd:fore.Blue"/>
<assign fore="#0A" name="hrd:fore.Green"/>
<assign fore="#0B" name="hrd:fore.Cyan"/>
<assign fore="#0C" name="hrd:fore.Red"/>
<assign fore="#0D" name="hrd:fore.Magenta"/>
<assign fore="#0E" name="hrd:fore.Yellow"/>
<assign fore="#0F" name="hrd:fore.White"/>
Эти принесет желающим две полезные вещи:

1. Готовую таблицу цветов для справки прямо в файле (видел, в некоторых схемах
подобная таблица вставлена авторами в комментариях).

2. Все коды от #0 до #F в схеме подсвечены именно тем цветом, который они и
задают, что делает схему наглядной и понятной без всяких справочных таблиц.

Вот как выглядит после этого сама такая вставка в схемы с синим и белым фоном
(ведущий нолик в коде цвета опционален, но с ним более наглядно получается):

Image

Если это изменение HRD принимается в поставку, то все ОК. Если нет, мало ли
что, тогда попробую изменить подход на другой, использующий hrd.hrc иначе.
(напомню, изменение по умолчанию не влияет на вид HRD)
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

В опубликованной сегодня версии Colorer изменение hrd.hrc принято, так что новой фичей можно пользоваться без хаков. Кроме того в новом Colorer в меню Region Info теперь показывается правильное название региона, что позволяет легко поменять цвет одного региона одной схемы в своем hrd файле цветов. Не идеальный вариант настройки цветов, но уже вполне практичный.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Colorer — гибкая раскраска синтаксиса в редакторе и др.

Post by NightRoman »

Схема sql.hrc, кажется, имеет дефект для выражения CASE. А именно, в строке 970

Code: Select all

    <block start="/\b(case)\b/i" end="/\b(end([\s])*case)\b/i" scheme="sql" region00="tsqlWord" region10="tsqlWord" region01="PairStart" region11="PairEnd"/>
выражение

Code: Select all

    end="/\b(end([\s])*case)\b/i"
предлагается заменить на

Code: Select all

    end="/\b(end(?:\s*case)?)\b/i"
Иными словами, в оригинальной схеме блок, открытый словом CASE, закрывается
либо ENDCASE, либо END CASE, но не END. Предлагаемое изменение к двум
существующим вариантам добавляет и END.

Известные примеры с END:

1. В популярном SQLite используется только END:
http://www.sqlite.org/lang_expr.html#case

2. Такая же картина (только END) и в TSQL:
http://msdn.microsoft.com/en-us/library/ms181765.aspx

Если знатоки SQL в его других реализациях не видят никакого подвоха в
изменении, то просьба принять его в поставку.

Незакрытый блок - непорядок в самой раскраске SQL (хоть я пока и не видел
серьезных дефектов). Но особо криво все становится, когда кусок SQL с
незакрытым блоком внедрен в другие схемы. Родительская раскраска после
вставленного незакрытого SQL блока может ошибочно трактоваться как SQL.
Post Reply

Return to “Обсуждение плагинов”