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:

Схема powershell.hrc обновлена еще раз, добавлено распознавание GUID и немного поправлено распознавание дат.
UPDATE: Я также нашел проект на гитхабе и поместил pull request туда. Может, такой способ будет всем удобнее, чем через форум оповещать?

--------------------

Вопрос по colorer.exe. Это приложение поддерживается/обновляется? Если да, то где можно найти свежие версии? Столкнулся с такой проблемой. Кажется, colorer.exe в моем файле-каталоге не понимает строки типа

Code: Select all

<!ENTITY hrc "&#37;FARHOME&#37;/Plugins/FarColorer/base/hrc">
<!ENTITY hrd "&#37;FARHOME&#37;/Plugins/FarColorer/base/hrd">
Поддержка "&#37;FARHOME&#37;" была добавлена в сам колорер, а в colorer.exe?
Kanareyka
Posts: 6
Joined: Sun 22 Dec, 2013 15:24

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

Post by Kanareyka »

Доброго дня всем!
Тут в основном тонкости всякие, а у меня, похоже, тупая проблема. Но деваться некуда...

Нужно добавить новый язык. В какой-то старой версии колорера мне это прекрасно удалось - добавила в список, настроила схему.
Ну, т.е. проблем с регекспами и найти куда чего вставить и откуда чего скопипастить у меня обычно нет.
А сейчас у меня установлен Far 3 и просто бьюсь головой о стену.

Создала файл oeabl.hrc:
* скопировала его из common.jar:base/c.hrc,
* потом внутри заменила <type name="c"> на <type name="oeabl">
* заменила в нем же <scheme name="c"> на <scheme name="oeabl"> (это я сначала проморгала, а потом в этой же ветке раньше вычитала)
* полученный oeabl.hrc положила в директорию C:\Program Files\Far Manager\Plugins\FarColorer\base\hrc

Потом поправила proto.hrc (лежит в той же директории, что и oeabl.hrc): добавила

Code: Select all

  <prototype name="oeabl" group="main" description="OpenEdge ABL">
    <location link="oeabl.hrc"/>
    <filename>/\.(p|i)$/i</filename>
  </prototype>
И ничего. В списке языков новый язык появился, но не подсвечивает НИЧЕГО, когда файл открываешь.
То есть, не совсем ничего - F11/FarColorer/List types показывает, что язык-то узнался. А подсветки нет.
Насчет опечаток (например, русская о вместо английской) все ок - проверяла поиском, везде идентификатор oeabl одинаковый и английский.
В трех местах нашла - люди делали то же самое и все получалось. А у меня не получается.
Другие синтаксисы - которые в common.jar описаны - работают и подсвечиваются.
Как понять, что я не так сделала? Помогите, пожалуйста.

Я даже с горя свой hrc в common.jar пробовала класть (ну, туда же, рядом с c.hrc).
Вот такой был кусок proto.hrc:

Code: Select all

  <prototype name="oeabl" group="main" description="OpenEdge ABL">
    <location link="jar:common.jar!base/oeabl.hrc"/>
    <filename>/\.(p|i)$/i</filename>
  </prototype>
Вот оттуда заработало. Это для рабочего варианта сгодится, но это же невозможно отлаживать будет -
каждый раз Far закрывать придется после изменения.

(ABL совсем не похож на C, но мне просто нужно увидеть, что подсветка в принципе подхватилась - прежде чем ее менять. Поэтому я взяла копию готовой рабочей схемы сначала.)
User avatar
HaRT
Moderator
Posts: 10869
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Kanareyka wrote:Вот оттуда заработало. Это для рабочего варианта сгодится, но это же невозможно отлаживать будет -
каждый раз Far закрывать придется после изменения.
Это не так — у плагина есть команда перечитать конфигурацию раскраски.
Но без залезания в архив удобнее, признаю. Гляньте тут и вокруг.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Kanareyka
Posts: 6
Joined: Sun 22 Dec, 2013 15:24

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

Post by Kanareyka »

HaRT wrote:
Kanareyka wrote:Вот оттуда заработало. Это для рабочего варианта сгодится, но это же невозможно отлаживать будет -
каждый раз Far закрывать придется после изменения.
Это не так — у плагина есть команда перечитать конфигурацию раскраски.
Но без залезания в архив удобнее, признаю. Гляньте тут и вокруг.
Неа, не в "перечитать конфигурацию" проблема :) Я не могу изменить сам jar - он заблокирован, пока фар открыт.
В auto я уже пыталась класть файл и в proto.hrc писать путь "hrc/auto/oeabl.hrc". Пока не добилась успеха. Попробую еще пару раз повнимательнее, но не очень верю, что получится. Пыталась и в сам hrc класть файл, и в hrc/auto/types - ничего из этого не сработало...
Kanareyka
Posts: 6
Joined: Sun 22 Dec, 2013 15:24

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

Post by Kanareyka »

HaRT wrote:
Kanareyka wrote:Вот оттуда заработало. Это для рабочего варианта сгодится, но это же невозможно отлаживать будет -
каждый раз Far закрывать придется после изменения.
Это не так — у плагина есть команда перечитать конфигурацию раскраски.
Но без залезания в архив удобнее, признаю. Гляньте тут и вокруг.
А не дадите пример тега prototype для proto.hrc с отдельнолежащим файлом? Такой, что у кого-то точно работает.
Может я слеши в пути не в ту сторону написала или еще чего? Я уже и полный путь к файлу пробовала писать,
и в catalog.xml добавлять auto/type...
User avatar
HaRT
Moderator
Posts: 10869
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Kanareyka wrote:Я не могу изменить сам jar - он заблокирован, пока фар открыт.
Это что-то новенькое. У меня-то версия Колорера уже весьма почтенная.
Kanareyka wrote:В auto я уже пыталась класть файл и в proto.hrc писать путь "hrc/auto/oeabl.hrc". Пока не добилась успеха.
У меня в proto.hrc , и всё подхватывается. Но может за последние годы сломали что…
И настоятельно рекомендую почитать про proto_user.hrc.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Kanareyka
Posts: 6
Joined: Sun 22 Dec, 2013 15:24

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

Post by Kanareyka »

HaRT wrote:И настоятельно рекомендую почитать про proto_user.hrc.
Странно, я все так же писала, как у Вас в примере. "hrc/auto/oeabl.hrc" - это опечатка. Вот так, конечно: "auto/oeabl.hrc".

А не расскажете, где про proto_user.hrc почитать? Поиск в гугле и в яндексе дает только пару постов на этом же форуме, и то там просто упоминание. Поняла только, что можно сделать аналог proto.hrc и вписать его в catalog.xml.
Попробовала - с отдельным файлом тоже не удалось заставить работать. С архивом - пожалуйста...
User avatar
tvel
Posts: 38
Joined: Wed 17 Mar, 2010 23:48
Location: Lenobl
Has thanked: 5 times

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

Post by tvel »

Kanareyka, прототип можно поместить прямо в свой hrc (где нибудь перед тегом type), размещаемый в "base\hrc\auto\",
http://forum.farmanager.com/viewtopic.p ... 90#p103022
Kanareyka
Posts: 6
Joined: Sun 22 Dec, 2013 15:24

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

Post by Kanareyka »

tvel wrote:Kanareyka, прототип можно поместить прямо в свой hrc (где нибудь перед тегом type), размещаемый в "base\hrc\auto\",
http://forum.farmanager.com/viewtopic.p ... 90#p103022
Простите, не поняла. Зачем мне помещать прототип куда-то еще, если он видится Колорером из proto.hrc?
Не видится файл с раскладкой, если он в base\hrc\auto или base\hrc\auto\types. Т.е. если я в свой файл положу прототип - то и он не увидится.
Или я Вашу идею неправильно считала, но тогда можно пример для понятности?
User avatar
Sim
Posts: 435
Joined: Fri 12 Jun, 2009 09:43
Has thanked: 11 times
Been thanked: 2 times
Contact:

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

Post by Sim »

такой вопрос: как сделать чтобы по умолчанию была раскраска как у .txt файлов? если, например, файл без расширения или расширение не опознанно.
Случайности не случайны.
User avatar
tvel
Posts: 38
Joined: Wed 17 Mar, 2010 23:48
Location: Lenobl
Has thanked: 5 times

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

Post by tvel »

Зачем мне помещать прототип куда-то еще, если он видится Колорером из proto.hrc?
Если вы не часто обновляете far3 и колорер или совсем не обновляете, то да - нет необходимости,
обновите far3 и/или колорер - и ваши правки в proto.hrc исчезнут,
файл proto.hrc не является штатной точкой входа для своих кастомных hrc, он для стандартных hrc из поставки.

Расширять библиотеку можно двумя способами:
- свой catalog.xml, ссылка есть в шапке темы (это единственный способ держать ещё и свои hrd, не теряя связь с ними после обновлений)
- свои hrc в \base\hrc\auto, если хотите можно сделать свой аналог proto.hrc в этой папке и держать там только свои прототипы (быстро и удобно)

Остальное - лучше не надо. Свои hrc можно поместить куда угодно, если прописать соотв. прототипы,
но команда "Перезагрузить библиотеку схем" срабатывает только на common.jar и папку auto (при штатном catalog.xml),
т.е. не перезапуская far3 тяжело править свои hrc вне этих хранилищ.
Не видится файл с раскладкой, если он в base\hrc\auto или base\hrc\auto\types. Т.е. если я в свой файл положу прототип - то и он не увидится.
Это какая-то ошибка. Трудно сказать почему у вас так. Поэтому пример наверно лишнее.
User avatar
tvel
Posts: 38
Joined: Wed 17 Mar, 2010 23:48
Location: Lenobl
Has thanked: 5 times

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

Post by tvel »

Kanareyka wrote:Создала файл oeabl.hrc:
...
Зачем выбирать в качестве исходника c.hrc? Он большой и сложный,
содержит связь через <!ENTITY> с файлом "c-win32.ent.hrc", который должен быть там же где вы помещаете копию c.hrc, естественно здесь у вас ошибка.

Я так понимаю вы хотели написать свой 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="oeabl" group="user" description="OpenEdge ABL">
  <location link="oeabl.hrc"/>
  <filename weight="3">/\.(p|i)$/i</filename>
 </prototype>

 <type name="oeabl">
  <annotation>
   <documentation>
    OpenEdge ABL syntax
   </documentation>
   <contributors>
    I am
   </contributors>
  </annotation>

  <import type="def"/>

  <region name="oeabl_error" parent="def:Error"/>

  <scheme name="oeabl">
   <regexp match="/\d*/" region="oeabl_error"/>
  </scheme>
	
 </type>
</hrc>
Помещаю в auto - всё работает, все цифры в примерах красятся.
Учтите, также что расширение ".p" уже используется в колорере для другого типа, вес weight="3" вроде помогает,
если хотите потом увидеть свой hrc в стандартной поставке - можете обсудить веса с lazyeugene и ctapmex.
User avatar
tvel
Posts: 38
Joined: Wed 17 Mar, 2010 23:48
Location: Lenobl
Has thanked: 5 times

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

Post by tvel »

Sim wrote:файл без расширения или расширение не опознанно.
Привязка к файлам без расширения:

Code: Select all

<filename weight="2">/^[^\.]+$/</filename>
Вроде все неопознанные файлы красятся типом "def", отсюда и надо начинать копать.
Но так порушите привязку многих типов по <firstline>.
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 »

Sim
Может, так? (для всех оставшихся неопознанных файлов, а не только без расширения)

Code: Select all

<filename weight="..">/./</filename>
А вес надо задать самый маленький из возможных, чтобы опознанные файлы красились, как и раньше.
User avatar
Sim
Posts: 435
Joined: Fri 12 Jun, 2009 09:43
Has thanked: 11 times
Been thanked: 2 times
Contact:

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

Post by Sim »

Спасибо за подсказки, однако я не понял, что, конкретно, я должен сделать? Добавить эту строку в proto.hrc? Но тогда надо, наверное, сделать его копию и свой catalog.xml?
может проще в proto.hrc поменять строку:

Code: Select all

<type name="default"><scheme name='default'/></type>
на

Code: Select all

<type name="default"><scheme name='text'/></type>
???
Случайности не случайны.
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 »

Есть разные способы. Менять нативный proto.hrc - не лучший, придется мержить при апдейтах. Свой каталог - гораздо лучше. Там указать *свой* файл прототипов в *дополнение* к нативному. Как делать, я на форуме пример приводил, повторять не буду.

Авторам. Кажется, что эти операции надо бы задокументировать либо в ридми, либо в шапке форума, либо и там, и там. Вопросы на формуме то и дело возникают.
Post Reply

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