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

Здесь можно обсудить ваш любимый плагин.
User avatar
ctapmex
Posts: 1089
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 24 times
Contact:

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 (старые версии доступны тут)



Что не разжёвано в документации плагина:
  • Как подключить собственные цветовые стили *.hrd
    Пример: viewtopic.php?p=160386#p160386
  • Как подключить собственную схему:
    • используя пользовательский файл прототипов:
    • используя папку auto:
    • через пользовательский catalog.xml:
  • Как переопределить существующую схему
  • Как правильно "удалить" какую-либо стандартную схему
  • Как использовать относительные пути и переменные окружения
  • Если раскраска неправильна:
  • Неочевидные настройки: maxlinelength (в теме)
  • Тонкая настройка подсветки для отдельной схемы: в теме.
ccaid
Posts: 869
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 19 times
Been thanked: 5 times

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

Post by ccaid »

Latest post of the previous page:

после сортировки имен тем сами темы оказались перепутаны
Фар делают добрые люди
Arama
Posts: 119
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.
citRiks
Posts: 812
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 258 times
Been thanked: 46 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.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 2050
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 200 times
Contact:

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

Post by buniak_a_h »

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

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

Post by HaRT »

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

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

Post by buniak_a_h »

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

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

Post by John Doe »

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

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

Post by citRiks »

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

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

Post by John Doe »

citRiks wrote: Thu 17 Sep, 2020 09:16 переданных колореру через АПИ дополнительных строк
Но такого апи нет, и я почти могу гарантировать что и не будет.
https://t.me/FarManager — Telegram чат
buniak_a_h
Posts: 2050
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 200 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 вполне полезна была бы.
citRiks
Posts: 812
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 258 times
Been thanked: 46 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.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
citRiks
Posts: 812
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 258 times
Been thanked: 46 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.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 2050
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 200 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). А у диалога такой нету! Так что либо раскрашивать самому, получив массив цветов, либо вызывать АПИ колорера, передавая строку и её положение на экране. Ну и не забыть, что диалог можно перетаскивать мышкой - соответственно, раскраску тоже перемещать.
citRiks
Posts: 812
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 258 times
Been thanked: 46 times

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

Post by citRiks »

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

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

Post by citRiks »

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

на всякий случай подчеркну, что мы дадим Колореру реальную координату (номер строки в файле) для спрятанной строки.
Далее Колореру уже сам получает от этой координаты такие производные:
1.) координата в редакторе как номер существующей в редакторе строки
2.) координата в экране
Имеем три координаты в итоге, хоть их и "много",
но они во-первых переводятся одна в другую легко,
и во-вторых этим все и исчерпывается,
т.е. четвертую и пятую координаты добавлять не понадобиться
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 2050
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 200 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 “Обсуждение плагинов”