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.
vornic
Posts: 4
Joined: Fri 19 Jun, 2015 08:33

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

Post by vornic »

Latest post of the previous page:

Нашел решение:
<prototype name="asp.js" group="inet" description="asp,master - JavaScript">
<location link="jar:common.jar!inet/asp.js.hrc"/>
<filename>/\.(as[pa]|ht[rxa]|inc|Master|master)$/i</filename>
<firstline weight='2'>/language\s*=.*j(ava)?script/i</firstline>
<firstline weight='0.5'>/^<\%\@/</firstline> <---------------------
</prototype>
User avatar
techie
Posts: 795
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 35 times
Been thanked: 6 times

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

Post by techie »

Может дропнуть вообще эти прототипы и создавать и кешировать каталог динамически? Тогда описание каждого языка будет более менее автономным.
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Раскраска lua даёт сбой, если при определении функции-метода двоеточие отделено пробелом:

Code: Select all

function lexer :peek (n)
  --[...]
end
(Пример из metalua)
Karagy
Posts: 57
Joined: Tue 02 May, 2006 08:43
Location: Питер
Been thanked: 3 times

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

Post by Karagy »

lua.hrc:49:

Code: Select all

- <entity name="entname" value="([_\w]*(?{Symbol}(\.|\:)))*?[_\w]*"/>
+ <entity name="entname" value="([_\w]*\s*?(?{Symbol}(\.|\:))\s*?)*?[_\w]*"/>
подойдёт?
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Похоже на то, спасибо.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

пытаюсь переопределить схему, ну скажем, Lua. рядом с proto.hrc кладу:

и прописываю путь к нему в конфигурации плагина.
в целом работает, но есть нюансы. файлы Lua c комментарием вида --------------- в первой строке считаются файлами diff.
по-моему, баг в плагине. если нет, то что не так с переопределением?
и еще. в шапке обещано, что можно удалить строку с location, и все будет работать по-прежнему. на самом деле, схема в списке остается, но раскраска не выполняется. поломалось, не доделано, отменено?
Фар делают добрые люди
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Code: Select all

    <filename weight='3'>/\.(w?lua2?)$/i</filename>
И это не помешало бы скорректировать и штатном proto.hrc, так что в некотором смысле баг.
ccaid wrote: в шапке обещано, что можно удалить строку с location, и все будет работать по-прежнему
Что, буквально так сказано?
Давайте сначала: вы для чего схему переопределяете?
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Кстати о багах.
Если в любом редакторе вызвать Colorer/R Reload schema library, то после это не запускается работает конфигурация плагина.
А если дважды запустить R Reload schema library, то при попытке вызова конфигурации плагин падает.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

John Doe wrote: в некотором смысле баг.
все таки не баг, а недопонимание принципов выбора схемы. я подзабыл, что filename не обязательное требование, а всего лишь один из признаков со своим приоритетом.
John Doe wrote: Что, буквально так сказано?
ctapmex wrote: Как переопределить существующую схему
Для этого достаточно подключить собственную схему с тем же именем (name).
Если требуется изменить только параметры схемы (filename, firstline, parameters), то достаточно прототипа, а location схемы можно не указывать.
John Doe wrote: Давайте сначала: вы для чего схему переопределяете?
изменить список расширений схемы
Фар делают добрые люди
User avatar
John Doe
Бюрократ
Posts: 13861
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Проверил, действительно это утверждение из шапки сейчас неверно:
ccaid wrote: Если требуется изменить только параметры схемы (filename, firstline, parameters), то достаточно прототипа, а location схемы можно не указывать.
interligator
Posts: 25
Joined: Tue 09 Mar, 2010 14:21
Has thanked: 4 times

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

Post by interligator »

Пилю аутентичный monokai из Sublime (те, что прогугливаются, все неправильные).
Пока как-то так:

Нашел, как подсвечивать for и int разными цветами (c:KeywordANSI и c:KeywordANSI.typenames соответственно).
Подскажите пару моментов - первый - как сделать пробелы и табы менее заметными при включенном show whitespace (т.е. пробелы и табы покрасить чёрным, например - "Shows trailing spaces as error" тут не подходит т.к. нужны все пробелы, не только trailing). И как подсветить имена функций (не зарезервированных, а тех, что по синтаксу должны быть именами функций) зелёным, как в sublime (пробовал def:Outlined и разные Outlined из схемы но это, похоже всё не то - def:Outlined, например, не работает вообще).

Upd: кажется поймал ещё один баг - цвет whitespace не меняется, хоть умри. Вероятно, связано с "правильными" исправлениями в этом посте http://forum.farmanager.com/viewtopic.p ... 96#p104596 "5. правильная раскраска whitespace (меняем только фон, текст не красим) включается только в случае включения опции отображения whitespace в редакторе. (меньше регионов цветов в far, меньше работы)"
interligator
Posts: 25
Joined: Tue 09 Mar, 2010 14:21
Has thanked: 4 times

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

Post by interligator »

Почему-то firstline не работает дальше первых 10 строчек. Может кто-нибудь подтвердить? Нужно было автоопредение хотя бы строчек на 50 вперед. Изменение fistlinebytes/firstlines не помогает абсолютно.
User avatar
HaRT
Moderator
Posts: 10866
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

interligator wrote: Почему-то firstline не работает дальше первых 10 строчек. Может кто-нибудь подтвердить? Нужно было автоопредение хотя бы строчек на 50 вперед. Изменение fistlinebytes/firstlines не помогает абсолютно.
Приведите, пжлст, конкретный полный пример, а также укажите версию плагина.
Фар есть инструмент, а не нянька. © 2009 DrKnS
interligator
Posts: 25
Joined: Tue 09 Mar, 2010 14:21
Has thanked: 4 times

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

Post by interligator »

far colorer 1.2.2.0, far 3.0 4410 x64

Code: Select all

<?xml version="1.0" encoding='utf-8'?>

<!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">

<!--
	firstlines option is not functional
	far colorer 1.2.2.0 . 10.05.2015
	copy this file to base/hrc/auto/xml2.hrc
	example xml:
	<?xml version="1.0" encoding="utf-8"?>
    (empty 10 lines)
	override
	(works only for first 10 lines then stops working)
-->

<prototype name="xml2" group="xml2" description="xml2">
    <filename>/\.xml$/</filename>
	<firstline weight="10">/override/</firstline>
    <parameters>
      <param name="firstlines"     value="50"   description="lines for firstline"/>
      <param name="firstlinebytes" value="5000" description="bytes for firstline"/>
    </parameters>
</prototype>

<type name="xml2">
	<scheme name="xml2">
	</scheme>
</type>

</hrc>
Upd: иногда (на других типах, в частности на .conf), перестает срабатывать и на 5 строке, от чего это зависит я не понимаю (чистый эксперимент, ничего кроме пустых строк впереди нет). Настройки схемы в диалоге отображаются нормальные. Приорити задран на максимум, но откуда-то появляется верхний предел firstlines в 5-10 строк.

Upd2: в общем там как-то супер-криво написан BaseEditor::chooseFileTypeCh - берется первый матч по имени и оттуда достаются firstlines (поэтому для разных типов срабатывает по-разному). Видимо, надо заимплементить перебор всех возможных типов и разобраться с приоритетом firstlines. В качестве воркараунда можно поднять лимиты у default и прописать этот default себе в кастомный hrc, тогда срабатывание работает:

Code: Select all

<?xml version="1.0" encoding='utf-8'?>

<!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="xml2" group="xml2" description="xml2">
    <filename weight="2">/\.xml$/</filename>
   <firstline weight="6">/override/</firstline>
    <parameters>
      <param name="firstlines"     value="25"   description="lines for firstline"/>
      <param name="firstlinebytes" value="10000" description="bytes for firstline"/>
    </parameters>
</prototype>

<prototype name="default" group="default" description="firstlines bug workaround">
<filename weight='1'>//</filename>
	<parameters>
		<param name="firstlines" value="50"/>
		<param name="firstlinebytes" value="10000"/>
	</parameters>
</prototype>
<type name="default"><scheme name='default'/></type>

<type name="xml2">
   <scheme name="xml2">
   </scheme>
</type>

</hrc>
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

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

Post by Aidar »

Какая-то ошибка с формированием списка функций.
Пример: есть ini-подобный файл. Функциями являются секции.
При любом изменении текста внутри секции и просмотре списка функций
.

Дополнение:
При открытии файла на редактирование список функций корректный.
Last edited by Aidar on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [spoiler]
User avatar
macik
Posts: 42
Joined: Wed 06 Apr, 2011 14:40

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

Post by macik »

Как с помощью Colorer изменить цвет whitespace символов?
Post Reply

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