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.
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:

John Doe wrote:Colorer не допускает наличие скобок в URL, например: http://msdn.microsoft.com/en-us/library ... s.85).aspx
Исправимо?

Вот rfc если что.
Раз зашла речь, то я бы подумал и о том, стоит ли ограничивать список начала URL набором типа ftp, http, и т.д. что там заложено. На все случаи не заложишься. Вот относительно недавно у меня такие появились, например - evernote:///view/... из Evernote. Броузер их прекрасно обрабатывает, если есть этот софт, это-таки URL, но колорер не понимает и не красит.
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 »

В спецификации по ссылке от John Doe это начало URL называется "scheme". При беглом просмотре вроде не нашел, что это "слово" ограничено каким-то фиксированным набором.
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 »

Раз уж на меня начали ссылаться, то вот актуальная версия rfc: http://tools.ietf.org/html/rfc3986
Kirill
Posts: 263
Joined: Thu 04 Aug, 2005 10:27
Location: Kaliningrad
Has thanked: 3 times
Contact:

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

Post by Kirill »

Добрый день.
Не подскажете, это как-то можно исправить http://forum.farmanager.com/viewtopic.p ... 085#p42085 ?
У меня последняя версия Far и FarColorer. Сохранил конфиг в файл. При просмотре этого файла строки идущие за длинной строкой (например <setting key="Colors" name="CurrentPalette" ) подсвечены как ошибочные :(
Hedin
Posts: 210
Joined: Thu 17 Mar, 2005 10:29
Has thanked: 4 times

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

Post by Hedin »

Kirill, надо в настройках нужной схемы увеличить значение параметра "maxlinelength".
Kirill
Posts: 263
Joined: Thu 04 Aug, 2005 10:27
Location: Kaliningrad
Has thanked: 3 times
Contact:

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

Post by Kirill »

Hedin wrote:Kirill, надо в настройках нужной схемы увеличить значение параметра "maxlinelength".
Спасибо. Помогли разобраться.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

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

Post by t-rex »

Для нового API:

Index: FarEditor.cpp
===================================================================
--- FarEditor.cpp (revision 1952)
+++ FarEditor.cpp (working copy)
@@ -7,6 +7,8 @@
this->info = info;
ei.StructSize = sizeof(EditorInfo);
info->EditorControl(CurrentEditor, ECTL_GETINFO, NULL, &ei);
+ EditorSubscribeChangeEvent esce = { sizeof(EditorSubscribeChangeEvent), MainGuid };
+ info->EditorControl(CurrentEditor, ECTL_SUBSCRIBECHANGEEVENT, 0, &esce);
cursorRegion = NULL;
prevLinePosition = 0;
blockTopPosition = -1;
@@ -36,6 +38,8 @@

FarEditor::~FarEditor()
{
+ EditorSubscribeChangeEvent esce = { sizeof(EditorSubscribeChangeEvent), MainGuid };
+ info->EditorControl(ei.EditorID, ECTL_UNSUBSCRIBECHANGEEVENT, 0, &esce); //detroyed class might not be related to CurrentEditor
delete cursorRegion;
delete structOutliner;
delete errorOutliner;
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

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

Post by t-rex »

там даже minfarver не надо было менять, оно же обратно совместимо. но это так, фигня.
User avatar
bigvax
Posts: 28
Joined: Fri 02 Jun, 2006 17:18
Location: где-то во времени
Has thanked: 3 times
Been thanked: 1 time
Contact:

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

Post by bigvax »

Вопрос к гуру.
Я иногда использую шаблонизатор smarty (http://smarty.net) - к сожалению, приходится вести много проектов построенных с его использованием.
В смарти код шаблона расположен прямо в тексте файла html и ограничен символами { и }.
Раньше, что-бы выделять синтаксис шаблона smarty в html-файле, я вносил 2 правки в html.hrc:
1. перед объявлением регионов (строка ~43)

Code: Select all

<region name="htmlSmarty" parent="Insertion"/>
2. После объявления HTML::Template (строка ~ 685)

Code: Select all

<regexp match="/\{ .*? \}/x" region0="htmlSmarty"/>
т.е. не заморачиваясь разбором синтаксиса самого smarty, блоки шаблона выделялись цветом блока "Insertion"
мне этого вполне хватало, для наглядности, и помогало выискивать чуждые блоки в тексте HTML.

Теперь, после еженощного обновления FarColorer, возникла необходимость вынести всю эту байду в отдельный .hrc файл, дабы не править html.hrc каждого дня.
Я до этого никогда не писал HRC и опыта в этом у меня нет.

Я сделал вот так:

Code: Select all

<type name="smarty">
  <annotation>...skip...</annotation>
  <import type="def"/>
  <region name="htmlSmarty" parent="def:Insertion"/>
  <scheme name="smarty-html">
    <regexp match="/\{ .*? \}/x" region0="htmlSmarty"/>
    <inherit scheme="html:html">
      <virtual scheme='html:html' subst-scheme='smarty-html'/>
    </inherit>
  </scheme>
  <scheme name="smarty">
    <inherit scheme="html:html">
      <virtual scheme='html:html' subst-scheme='smarty-html'/>
    </inherit>
  </scheme>
</type>
Часть блоков smarty стала нормально отображаться, но часть не подкрашивается. Причем, в основном в начале файла.
При анализе самим Colorer'ом (Данные региона), блоки правильно подкрашенные показывают значения: Region: smarty:htmlSmarty и Scheme: html:htmlPairInside
А неподкрашенные блоки показывают пустые Region и Scheme.

Как с этим бороться - так и не понял. Вероятно что-то напортачил в HRC. В общем случае мне нужно выделить в HTML блоки ограниченные символами { и }.
Подскажите, плиз, что с этим делать.
Всегда виртуально Ваш, BigVax
User avatar
lazyeugene
Posts: 243
Joined: Sat 29 Aug, 2009 17:14
Has thanked: 1 time

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

Post by lazyeugene »

Почему не сделать свою схему для smarty? Могу предложить взять, например, схему twig и переделать её в smarty (в twig тоже используются фигурные скобки). Если совсем уж неохота разбираться - можно вытащить всё, что касается хтмл-схемы и положить отдельно, указав путь к персональным схемам.
User avatar
bigvax
Posts: 28
Joined: Fri 02 Jun, 2006 17:18
Location: где-то во времени
Has thanked: 3 times
Been thanked: 1 time
Contact:

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

Post by bigvax »

lazyeugene wrote:Почему не сделать свою схему для smarty? Могу предложить взять, например, схему twig и переделать её в smarty (в twig тоже используются фигурные скобки). Если совсем уж неохота разбираться - можно вытащить всё, что касается хтмл-схемы и положить отдельно, указав путь к персональным схемам.
Я пытался. Честно.
Причем мучал и twig тоже. Не получилось :(

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

При этом, у меня есть практически полные списки ключевых слов, операторов и пр. для самого smarty - т.е. основное необходимое, для создания файла подсветки синтаксиса.

Если-бы кто-либо опытный сделал базовый HRC-пустышку для смарти, то я-бы его наполнил уже конкретным синтаксисом.
Всегда виртуально Ваш, BigVax
User avatar
ctapmex
Posts: 1240
Joined: Fri 11 Apr, 2008 07:53
Has thanked: 1 time
Been thanked: 50 times

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

Post by ctapmex »

данный вопрос решился. в текущей сборке схема для smarty присутствует. спасибо lazyeugene
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH »

Ветер отзывчивости подул, видно весна пришла! :-D

Снова подниму тему с цветовым выделением букв кириллицы "ABCEHKMOPTX" и "aceopxy", которые по написанию идентичны латинице. И хоть некие товарищи не хотят признавать, что такая цветовая схема необходима в дистрибутиве, замечу, что даже внутри одного языка O и 0 программисты почему-то сочли необходимым писать по-разному, в то время как у нас не предусмотрено различие одинаковых по написанию символов между двумя РАЗНЫМИ языками. Само по себе это уже нонсенс для плагина, который пытается улучшить визуальное различие между разными группами символов с целью более быстрого нахождения ошибок в тексте.

Можно, конечно, опять перекинуть стрелки на использование шрифта с различным начертанием символов, но в таком решении есть свои недостатки, один из которых - существенно худшая различимость по сравнению с выделением другим цветом.

В плане юзабилити имхо наиболее удобно было бы иметь возможность включать и выключать проявку "ABCEHKMOPTX" и "aceopxy" на любых текстах, т.е. проявка выполняется после всех раскрасок.
User avatar
tvel
Posts: 38
Joined: Wed 17 Mar, 2010 23:48
Location: Lenobl
Has thanked: 5 times

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

Post by tvel »

что такая цветовая схема необходима в дистрибутиве
Схема для какого типа? Для всех типов? Опция для типов?

Если речь о конкретных синтаксисах, в которых кириллица или наоборот латиница в определённом контексте - ошибка, то это проблемы каждой конкретной схемы HRC, а не колорера в целом.
Если речь о синтаксисах, где контекст кириллицы не играет роли, то таких схем не много, но опять же это исправляется/добавляется в конкретной схеме HRC.

Подсветка кириллицы не является в общем случае подсветкой синтаксиса, колорер создан для подсветки синтаксиса, есть другие плагины.
То что вы предлагаете - либо накладно, либо неудобно реализовывать в рамках колорера (но возможно).
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

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

Post by Max Rusov »

Вообще, лучше, чтобы это можно было включать/выключать на лету. А сейчас такое можно реализовать даже макросом, типа такого. Было бы независимо от схемы (и даже от колорера).
Post Reply

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