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

Здесь можно обсудить ваш любимый плагин.
User avatar
ctapmex
Posts: 1240
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.
onokonem
Posts: 10
Joined: Wed 03 Dec, 2008 11:15

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

Post by onokonem »

Latest post of the previous page:

добрый день!

хочу раскрашивать файлы *.avpr схемой json плагина FarColorer из поставки Far 3.0 build 4040 x86.

Для этого создал файл

Code: Select all

\Plugins\FarColorer\base\hrc\auto\avpr.hrc
следующего содержания:

Code: Select all

<?xml version="1.0" encoding='Windows-1251'?>
<!DOCTYPE hrc PUBLIC 
	"-//Cail Lomecb//DTD Colorer HRC take5//EN" 
	"http://colorer.sf.net/2003/hrc.dtd" 
>
<hrc version="take5" xmlns="http://colorer.sf.net/2003/hrc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://colorer.sf.net/2003/hrc http://colorer.sf.net/2003/hrc.xsd"
 >

 <prototype name="avpr" group="avro" description="AVRO definition">
  <location link="jar:../common.jar!rare/json.hrc"/>
  <filename weight="9">/\.avpr$/i</filename>
 </prototype>
</hrc>
avpr.hrc, со всей, очевидностью, подгрузился - тип файла в редакторе определяется правильно.

Но файл - не раскрашеный.

Скажите - чего я не учел, и куда смотреть?

Спасибо
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

onokonem wrote:Скажите - чего я не учел, и куда смотреть?
Поищите в теме сообщения со словами [b][i]proto.hrc[/i][/b] и [b][i]proto_user.hrc[/i][/b].
Фар есть инструмент, а не нянька. © 2009 DrKnS
onokonem
Posts: 10
Joined: Wed 03 Dec, 2008 11:15

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

Post by onokonem »

Поищите в теме сообщения со словами proto.hrc и proto_user.hrc.
поискал, почитал.

уяснил, что это потому, что схема не находится. почему не находится схема из common.jar? если не находится сам common.jar - плагин падает, так что дело не в путях.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

В самом common.jar!rare/json.hrc уже определено имя типа (json), а в вашем новом определении другое имя (avpr), поэтому и не работает.
Рекомендую оставить имя json, но добавить к существующей ещё и свою маску.

Возможны и другие решения, на которые намекал HaRT.
onokonem
Posts: 10
Joined: Wed 03 Dec, 2008 11:15

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

Post by onokonem »

о, так работает

Code: Select all

Plugins\FarColorer\base\hrc\auto\avpr.hrc

Code: Select all

<?xml version="1.0" encoding='Windows-1251'?>
<!DOCTYPE hrc PUBLIC 
	"-//Cail Lomecb//DTD Colorer HRC take5//EN" 
	"http://colorer.sf.net/2003/hrc.dtd" 
>
<hrc version="take5" xmlns="http://colorer.sf.net/2003/hrc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://colorer.sf.net/2003/hrc http://colorer.sf.net/2003/hrc.xsd"
 >

 <prototype name="json" group="rare" description="JSON">
  <location link="jar:../common.jar!rare/json.hrc"/>
  <filename weight='3'>/\.json$/i</filename>
  <filename weight="3">/\.avpr$/i</filename>
 </prototype>
</hrc>
спасибо!
User avatar
tvel
Posts: 38
Joined: Wed 17 Mar, 2010 23:48
Location: Lenobl
Has thanked: 5 times

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

Post by tvel »

onokonem, так будет работать, это переопределение прототипа.
Но если оригинальный прототип json изменится, например баланс весов поправят, (маловероятно конечно),
то ваш прототип может сломать этот баланс.

Как не ломать определение json, создавая новую "сущность" avpr с наследованием типа, пример ("textd") есть выше,
John Doe прав - определяете прототип name="avpr", значит нужно опеределять и тип+схему "avpr".

Очевидно, у вас заявка на то что файлы с расширением .avpr являются типом json,
значит правка нужна оригинала прототипа авторами плагина.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Предлагаю добавить в "Diff/Patch" определение коммитов гита.

Code: Select all

<firstline weight='2'>/^((commit)\s+(\w+))/si</firstline>

Code: Select all

  <prototype name="diff" group="other" description="Diff/Patch">
    <location link="jar:common.jar!misc/diff.hrc"/>
    <filename>/\.(diff.*|patch|rej(ect)?)$/i</filename>
    <firstline weight='2'>/^(diff|Index|---|\+\+\+|\*\*\*)/si</firstline>
    <firstline weight='2'>/^((commit)\s+(\w+))/si</firstline>
    <firstline>/^(\d+,\d+\w\d+ | \d+\w\d+)/i</firstline>
    <firstline>/^cvs/i</firstline>
    <parameters>
      <param name="trailing-space"      value="false" description="Mark trailing spaces as errors"/>
      <param name="space-before-tab"    value="false" description="Mark leading spaces before tabs as errors"/>
      <param name="indent-with-non-tab" value="false" description="Mark 8 or more leading spaces as errors"/>
      <param name="indent-with-tab"     value="false" description="Mark leading tabs as errors"/>
    </parameters>
  </prototype>
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

А как правильно/проще назначить для конкретного типа другую цветовую схему?
Я хочу, чтобы диффы отображались на черном фоне (так же как делает "git diff"),
хотя основная схема у меня со светлым фоном.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Проще всего поместить файл переопределяющий схему в папку auto.
В шапке есть и другие способы.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

OK, спрошу по другому. В auto есть переопределенный тип.

Code: Select all

<prototype name="diff" group="other" description="Diff/Patch">
    <location link="jar:../common.jar!misc/diff.hrc"/>
    <firstline weight='10'>/^((commit)\s+(\w+))/si</firstline>
    ...
Как сделать так, чтобы для него работала схема "Black (scarlet)" место основной "Visual by Roman Kuzmin"?
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

BTW, имеет место



и несимпатичное положение списка типов (F11 FarColorer 1). Нижняя рамка меню упирается в нижний край консоли.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

А, вы о цветовых схемах.
Не думаю что сейчас существует такая возможность.
User avatar
tvel
Posts: 38
Joined: Wed 17 Mar, 2010 23:48
Location: Lenobl
Has thanked: 5 times

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

Post by tvel »

Maximus5 wrote:Как сделать так, чтобы для него работала схема "Black (scarlet)" место основной "Visual by Roman Kuzmin"?
Можно создать свой стиль HRD на основе основной "Visual by Roman Kuzmin" с дополнениями "Black (scarlet)",
где по правилам "Black (scarlet)" будут краситься только типы специфичные для diff:

Code: Select all

      <region name="diffCmdLine" parent="def:Directive"/>
      <region name="diffSngLine" parent="def:Parameter"/>
      <region name="diffOrg" parent="def:StringContent"/>
      <region name="diffFiles" parent="def:VarStrong"/>
      <region name="diffNew" parent="def:String"/>
      <region name="diffChanged" parent="def:Keyword"/>
      <region name="diffNumb" parent="def:Number"/>
      <region name="diffModif" parent="def:Label"/>
      <region name="CommandOutline" parent="def:Outlined"/>
      <region name="FileNameOutline" parent="def:Outlined"/>
Для HRC это разные регионы, HRD их сопоставит с parent= только если они не определены.
Но к сожалению общий фон текста (и прочие не учтённые в diff элементы) как в "Black (scarlet)" работать не будут,
так схема diff сделана - фон принудительно в ней не красится и набор собственных регионов невелик.

Может запросить у авторов хоткей для смены стиля, или что лучше - добавить пункт "стиль" в "Настройка параметров схем".
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

То ли плагин поломали, то ли шапка устарела. Пытаюсь задать поле "Users file of color styles" в настройке. Получаю невразумительное:

Code: Select all

╔═══════════════════════════════════════════ FarColorer ═══════════════════════════════════════════╗
║                                       Problem with Colorer                                       ║
║ ParserFactoryException: Error reading T:\Far30.Latest\Plugins\FarColorer\base\hrd\catalog_my.xml ║
╟──────────────────────────────────────────────────────────────────────────────────────────────────╢
║                                              { Ok }                                              ║
╚══════════════════════════════════════════════════════════════════════════════════════════════════╝
Process Monitor показывает, что файл плагин таки считывает, но дальше этого не идет. Сам файл вот.

Code: Select all

<hrd class="rgb" name="MaximusWhite" description="Maximus white (rgb)">
	<location link="&hrd;/rgb/my/Maximus.hrd"/>
</hrd>
Если эти же строки добавить в "catalog-rgb.xml" - работает. Но это же не гут...
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

&hrd; замените на hrd
И оберните всё в <hrd-sets>...</hrd-sets>
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Мда, так заработало. Но полные пути хранить не хочется...
Post Reply

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