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:

Насчет конца строк у меня другой опыт. Нормально он применяется для конца блоков и там и сям во многих схемах.

Над остальным буду думать. Но это неверно, что "цвета случайно совпали", я не так тестирую, а по реальным тегам. Во втором случае парсинг - как задумано. Так что я пока все равно думаю, что колорер неправильно работает в первом случае. Видимо, его сбивает с толку, что длина региона 0. То, что в этот 0 попадает перевод строки, видимо, не заложено учитывать. Возможно, это недоработка.
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 »

Есть и еще доказательство. Если в редакторе встать на начало блока в правильном случае и сделать F11 c 3 (выделение блока), то и выделятся 2 строки, что подтверждает, что блок в правильном случае не прерван. Не случайно там цвета совпали, вобщем, еще раз.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

1. В схеме отсутствует AltBackSlash
2. после "(" в Sequence - сбивается раскраска. может уже жаловался - не помню

Code: Select all

REGEDIT4

[HKEY_CURRENT_USER\software\far2\KeyMacros\Editor\CtrlDown]
"Sequence"="AltBackSlash"
"DisableOutput"=dword:00000001

[HKEY_CURRENT_USER\software\far2\KeyMacros\Editor\CtrlF11]
"Sequence"="F11 ( 5"
"DisableOutput"=dword:00000001
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

а где можно последние исходники Far2.0 truemod посмотреть?
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
Пытаюсь понять, что ты предлагаешь.
3. проверка на запятую - если есть, то снова вызываем base.
Вот это не очень понятно. Ты можешь на обычном языке схем пояснить, если не очень лень, конечно? Чем начинается, чем кончается?
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 »

UPD: пример ниже неудачный, он работал по другой причине, но текст сообщения не редактирую. Суть в том, что обходы есть, хоть и через ж. и не без уступок.

Вот еще интересный пример, где конец строки успешно проглатывается и предотвращает прерывание блока. Это целый блок команды (test.ps1), опять же можно проверить по F11 c 3:

Code: Select all

command arg1 `
arg2
Он не прерван первым концом строки, так как его съедает бактик в конце строки, ибо в схеме base имеем такое:

Code: Select all

	<regexp match="/(?{Escape}`.?)/"/>
что включает в себя и конец строки, что и наблюдается на деле.

В случае с запятой делается похожая попытка. Но тут применяется не regexp, а block с запятой. Работает это частично, как видим, только если вторая строка с пробелов начинается.

Понятно, что на худой конец придется по принципу чайника и с запятой действовать, как с бактиком. Но тогда это не будет покрывать ситуацию, когда после запятой идут комментарии.
Last edited by NightRoman on Sun 06 May, 2012 01:14, edited 1 time in total.
Booster
Posts: 12
Joined: Thu 11 Feb, 2010 12:38

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

Post by Booster »

Подскажите как установить данный плагин на far 3 x64(build 2661), версия плагина 1.0.3.10. Просто распаковал папку в дирректорию Plugins и переименовал в Colorer и ничего. Пробовал и папку bin, также ничего.
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 »

:) Вообще, колорер - это гениальная штука, слов нет. Но кодирование схем на нем иногда напоминает программирование на brainfuck. Не мешало бы языку схем и развиваться как-то что ли, чтобы типичные задачи (а моя проблема, имхо, типичная) решались легко.
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 »

Интересная и обнадеживающая находка по проблеме "с запятой". Если схему упростить до минимума, то все работает именно как мной ожидается. Это хорошая новость. Возможно, даже ложная тревога была, тогда - ой (но не обязательно, это еще мне предстоит выяснить).

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



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

UPD: Явных подозрительных мест так и не нашел. Так что вопрос почему колорер не работает, как ожидается, остается. Причины, может, и в моей схеме, конечно, но найти/понять не получается пока.
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 »

Еще одно наблюдение по схеме powershell. По загадочным причинам в командах, начинающихся с явного оператора вызова (точка или амперсенд), запятая работает, как ожидается, пробел у второй строки не обязателен:

Code: Select all

. command1 arg1,
arg2

& command1 arg1,
arg2
С этими операторами все идет по схеме "invoke", без операторов - по схеме "call". Опять же пока не могу понять, чем они отличаются принципиально. Все похоже в них сделано, только обработка начал команд чуть отличается. Может, все же колорер чудит, а? (Да и подозрительно что-то, что "баг с кешем" (это когда временно начинает красится правильно) проявляется именно в этой загадочной ситуации).
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 »

И еще пример, когда правильно работает и по схеме "call"

Code: Select all

command1 arg1,
"arg2" arg3
Итак, только такой вариант не работает правильно:

Code: Select all

command1 arg1,
arg2
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 »

Maximus5 wrote:а где можно последние исходники Far2.0 truemod посмотреть?
последние видимо только у меня локально, если не удалил случайно за ненадобностью :facepalm:
вечером гляну и если есть, то выложу на законное место
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
попытаюсь разобраться с проблемой и осмыслить кучу написанного -) . сам проверяю по логам (версия плагина, с включенной трассировкой ), в какую схему зашли и что взяли.
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
Спасибо. И пожалуйста, тоже :) Попробуй разобраться. Пока выглядит так, что дело все-таки в колорере. Схему я недавно обновил, возьми последнюю (прикрутки я не делал пока, но просто чтобы у нас была одна и та же схема на случай обсуждений чего). Удачи. Я тоже готов помочь, чем могу.
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 »

смотрел на старой схеме, т.к. изначально на ней начал анализ. ниже трейс работы плагина

1 случай - нет начального пробела, тот что приводит к ошибке (считаем , что строка с arg2 всегда вторая)
просматриваем схему command. доходим до строки 2, находимся в начале её. срабатывает схема call , а в ней нам подходит первый блок command-name . и раскраска поплыла ....

2 случай - в начале стоит пробел.
просматриваем схему command. заходим в command-element . там далее в base. в которой съедается пробел во второй строке. оказываемся во второй строке у 2 символа.
срабатывает схема call. но в ней нам уже не подходит блок command-name . и раскраска идет нормально.

всплывает как раз таки проблемный символ ~ в command-name .
описание символа ~ (-Matches for the start of parent scheme (end of <start> tag). ) не очень информативно и возможно содержит ошибку в 'of parent scheme' .
ты его используешь в начале тега start , ожидая поймать окончание предыдущего родительского блока. Но какой в этом смысл, если у тебя и так в начало блока придет конец start предыдущего . т.е. в данном случае этот символ бессмыслен.
его предназначение - использовать в регулярном выражении end блока. в одном из примеров на оф. сайте показано это.
Но это мое мнение, тут, к сожалению, нету подробной доки.

если убрать ~, то все плохо становится в раскраске. надо схему править.
использование ~ в start по поведению напоминает ^. идет сравнение номера текущего символа с 0 (в данном случае получается , что конец start предыдущего блока всегда 0)

подумай, что тут не так. я пока не знаю в каком направлении думать.
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 »

Booster wrote:Подскажите как установить данный плагин на far 3 x64(build 2661), версия плагина 1.0.3.10. Просто распаковал папку в дирректорию Plugins и переименовал в Colorer и ничего. Пробовал и папку bin, также ничего.
у тебя должна быть такая структура папок
far\Plugins\colorer\bin\
far\Plugins\colorer\base\

ну и при условии, что 2661 и колорер совместимы (пока не могу проверить)
Post Reply

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