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.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

Latest post of the previous page:

после сортировки имен тем сами темы оказались перепутаны
Фар делают добрые люди
Arama
Posts: 121
Joined: Mon 01 Jun, 2015 12:14
Has thanked: 8 times
Been thanked: 4 times

Совместимость с Windows 2003

Post by Arama »

Попытался обновить FAR с 3.0.5577 до 3.0.5656 на старенькой Windows 2003 64bit SP2, и при запуске получаю сообщение:



Откатился на 5577
Last edited by Arama on Fri 04 Sep, 2020 17:52, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

Приветствую.
Есть вопрос-предложение, но сначала немного предыстории.
Есть скрипт для "складывания" (или спрятывания) (collаpsing, folding) строк в редакторе
Condensed View @Buniak
viewtopic.php?f=60&t=9723
скрипт замечателен, особенно тем что единственный в своем таком очень нужном роде.
Строки "складываются", но соответственно раскраска кода рушится,
так как части семaнтических структур оказываются спрятанными от колорера.
И вот вопрос, нельзя ли как то починить это для Колорера?
Например, просто может посылать колореру недостающие строки в этом редакторе?
Last edited by citRiks on Wed 16 Sep, 2020 17:56, edited 2 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

Меня это (что раскраска "рушится") тоже напрягает.
С тех пор прошло много лет … Я получше узнал LuaFAR, в результате родилась идея запрограммить тоже самое на базе диалога с DI_USERCONTROL (который можно раскрашивать как угодно). Осталась одна проблема: получить "раскрашенную" строку, которая видна на экране, я могу. А как получить раскрашенные строки, которые ушли с экрана? Вот хотелось бы иметь доступ к такой информации.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

buniak_a_h wrote: Wed 16 Sep, 2020 18:18 А как получить раскрашенные строки, которые ушли с экрана?
Можно, наверно, скриптом ловить раскраску строк, пока они видны, и запоминать последнее обновление каждого участка. Но для тех строк, которые никогда не были раскрашены, это, очевидно, не сработает.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Wed 16 Sep, 2020 18:38 для тех строк, которые никогда не были раскрашены, это, очевидно, не сработает
Полагаю, это не сработает и для тех строк, которые никогда не были видны (даже если в фоне они и были раскрашены). А скрипт Condensed View как раз делает так, что строки, которые в обычном редакторе не видны, становятся видимыми в "сжатом" режиме.
Вот если б можно было бы как-то получать раскраску от плагина FarColorer (например, задать евент, который будет вызываться по окончании раскраски строки и получать номер строки и раскраску) - это решило бы.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Чтобы в режиме "Condensed" не ломалась раскраска - сдаётся что проще всего было бы попросить колорер её "заморозить" (это лишь идея).
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

John Doe, было бы более общим решением предложенное мной учитывание для расчетов и операций переданных колореру через АПИ дополнительных строк
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

citRiks wrote: Thu 17 Sep, 2020 09:16 переданных колореру через АПИ дополнительных строк
Но такого апи нет, и я почти могу гарантировать что и не будет.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

John Doe wrote: Thu 17 Sep, 2020 08:06 Чтобы в режиме "Condensed" не ломалась раскраска - сдаётся что проще всего было бы попросить колорер её "заморозить" (это лишь идея).
Да, идея хороша.
Правда, Find Match Pair, Select block работать не будут. Поэтому единственный выход я вижу в "параллельном" ведении полной версии файла. И, если select block в сжатом режиме смысла не имеет, то match pair вполне полезна была бы.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

ctapmex wrote: Fri 18 Sep, 2020 08:22 поэтому предлагаю определиться что хотим. для folding достаточно передавать номера скрытых строк. а для элементов диалога нужен текст
еще раз извиняюсь, и копирую сюда то что ранее по ошибке написал не туда куда надо:
--------
Cпасибо за ответ, для пущей однозначности и дословности, поясню в таком формате.
ctapmex писал(а): ↑Пт 18 сен, 2020 09:04
у тебя есть строка/массив строк.
все верно, я сам-то ведь знаю какие строки и их настоящие позиции в файле я спрятал, а какие оставил на месте.
Из этого получаем массив спрятанных, в редакторе физически не существующих строк.
массив со стороны Луа мог бы выглядеть так:

Code: Select all

local tbl_hidden_block = {
	RealFileLinePos = 5, 
	-- RealFileLinePos может кстати служить как hidden block ID
	lines = {
		{text = "--[[", eol = "\r\n" },
		{text = "here is some lengthy comment, ", eol = "\r\n" },
		{text = "totally senseless, ", eol = "\r" },
		{text = "need somehow to hide it away,", eol = "\r\n" },
		{text = "and that's it, thanks", eol = "\r\n" },
		{text = "--]]", eol = "\r\n" },
	}
}
ctapmex писал(а): ↑Пт 18 сен, 2020 09:04
вызываешь api colorer, передавая туда этот массив и предполагаемый тип файла.
Первя часть - да, передаю указывая нужный EditorID конечно, чтобы плагин знал чье это.
Плагин запоминает чье это, учитывает при раскраске, и стирает из памяти при закрытии редактора.
ctapmex писал(а): ↑Пт 18 сен, 2020 09:04
В ответ получая что - массив цветов?
я самом деле ничего не должне получать, ну кроме статуса error/Ok наверное.
дальше моему скриптy делать с этим нечего, мне надо просто чтобы колорер учитывал эти спрятанные строки при операциях/расчетах.
колорер же с помощью таких ранее переданных мною блоков, может кажется что несложным образом восстановить у себя реальный файл или часть файла для раскраски, обнаружений pairs, всего что ему нужно, без дополнительных изменений логики, кроме несложного перерасчета позиций строк естесственно.
Last edited by citRiks on Fri 18 Sep, 2020 12:21, edited 2 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

citRiks wrote: Fri 18 Sep, 2020 08:36 для folding достаточно передавать номера скрытых строк
думаю что недостаточно, потому что фолдинг нам нужен не только и не столько для codeblocks, как я предполагаю что вы подумали,
а любые произвольные спрятывания, что технически кстати проще чем детектить codeblocks (типа "if .. then .. else ..end").
Но, при произвольных спрятываниях, нарушится лексика кода, так как мы физически убираем из редактора произвольные линии.
Нарушилась лексика кода, контента (текста) недостающих строк у Колорера нет, Колорер теперь неправильно детектит pairs и отрисовывает.
Поэтому надо передавать колореру кроме номеров строк еще и сами строки, т.е. их содержание.

удалось ли мне пояснить предмет?
Last edited by citRiks on Fri 18 Sep, 2020 08:53, edited 2 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Fri 18 Sep, 2020 08:36 А вот тип зачем передавать?
Ведь тип тот же что и самого файла
На всякий случай напомню: речь шла о раскраске полей редактирования в диалоге. Так что "самого файла" может и не быть.
А тип нужен для синтаксического разбора переданной строки.
citRiks wrote: Fri 18 Sep, 2020 08:36 я самом деле ничего не должне получать, ну кроме статуса error/Ok наверное.
Тогда надо и местоположение строки на экране указывать. Иначе плагин не сможет сам раскрасить. Ну и вызывать АПИ раскраски после каждого DN_DRAWDIALOGDONE.
У редактора есть интерфейс для раскраски (функция editor.AddColor). А у диалога такой нету! Так что либо раскрашивать самому, получив массив цветов, либо вызывать АПИ колорера, передавая строку и её положение на экране. Ну и не забыть, что диалог можно перетаскивать мышкой - соответственно, раскраску тоже перемещать.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

buniak_a_h wrote: Fri 18 Sep, 2020 12:03 На всякий случай напомню: речь шла о раскраске полей редактирования в диалоге. Так что "самого файла" может и не быть.
А тип нужен для синтаксического разбора переданной строки.
да, это просто тут немного смешалось как доме Оболонских,
а в этой теме я себя исправил еще тогда сразу почти:
viewtopic.php?p=162290#p162290
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

buniak_a_h wrote: Fri 18 Sep, 2020 12:03 Тогда надо и местоположение строки на экране указывать. Иначе плагин не сможет сам раскрасить.
Ну и вызывать АПИ раскраски после каждого DN_DRAWDIALOGDONE.
Как мне представляется, плагин Колорера ориентруется не на экранные позиции, а на реальные.
точнее, умеет соотносить экранную позицию с реальной, но реальная позиция первична.
так что он все будет точно так же и раскрашивать, с поправой а пропущенные строки, которые я и предлагаю научить его учитывать.

на всякий случай подчеркну, что мы дадим Колореру реальную координату (номер строки в файле) для спрятанной строки.
Далее Колореру уже сам получает от этой координаты такие производные:
1.) координата в редакторе как номер существующей в редакторе строки
2.) координата в экране
Имеем три координаты в итоге, хоть их и "много",
но они во-первых переводятся одна в другую легко,
и во-вторых этим все и исчерпывается,
т.е. четвертую и пятую координаты добавлять не понадобиться
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

citRiks wrote: Fri 18 Sep, 2020 12:37 плагин Колорера ориентруется не на экранные позиции, а на реальные.
1. Плагин, есессно, использует ediotor.AddColor. Так что определением экранных позиций заведует редактор
2. Вы опять смешали в кучу редактор и диалог. Диалог не умеет раскрашивать (кроме UserControl-я). Т.е. Ваше пожелание - не к тому адресовано. Для начала надо диалог переделать. Кардинально. И я сильно сомневаюсь, что этим будут заниматься.
Post Reply

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