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

Здесь можно обсудить ваш любимый плагин.
User avatar
ctapmex
Posts: 1099
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 25 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 (в теме)
  • Тонкая настройка подсветки для отдельной схемы: в теме.
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

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

Post by citRiks »

Latest post of the previous page:

Sim, видимо колорер считает нужным пересчитывать полностью строку при внесении туда изменения, при этом создавая много redraw events, так как элементов в длинной стоке то много.
при загрузке видимо тоже самое, загружает строку, подсчитал ее частично, перерисовал полностью, пересчитал ее часть, перерисовал опять полностью, итд итп.
а на выходе куча наверное лишних евентов
Меня на эту мысль сам СтарМех и навел когда-то, когда он помог мне понять откуда берется моргание нарисованного через фар.Текст(...)
Может я в чем не прав, прастити мину те кто всегда прав
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

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

Post by citRiks »

buniak_a_h wrote: Thu 15 Oct, 2020 11:11Займитесь, это же несложно!
да, я-то посмотрю еще раз
но у меня стало лучше при отключке макросов,
правда тогда не успел редактирование проверить
НО, большое НО
Даже если типа виноваты хэндлеры евентов
ЭТО ВСЕ РАВНО ЗНАЧИТ ЧТО СОЗДАЮТСЯ СЛИШКОМ МНОГО ЛИШНИХ ЭВЕНТОВ ОТ КОЛОРЕРА

Ну и стандартный дисклаймер прилагается:
Может я в чем не прав, прастити миню те кто всегда прав
Last edited by citRiks on Thu 15 Oct, 2020 11:23, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
Sim
Posts: 430
Joined: Fri 12 Jun, 2009 09:43
Has thanked: 8 times
Been thanked: 1 time
Contact:

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

Post by Sim »

buniak_a_h, после очистки профиля я выяснил что виной был файл C:\Users\Sim\AppData\Roaming\Far Manager\Profile\PluginsData\D2F36B62-A470-418D-83A3-ED7A3710E5B5.db
Если его удалить, при запуске фара создастся новый и настройки FarColorer слетят, тормоза уменьшаются существенно, однако задержки полностью не ушли.
Вот файл, который вызывал жуткие тормоза по несколько минут:
D2F36B62-A470-418D-83A3-ED7A3710E5B5.db.7z
(1.71 KiB) Downloaded 3 times
Случайности не случайны.
User avatar
HaRT
Moderator
Posts: 9561
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 111 times
Been thanked: 232 times

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

Post by HaRT »

Sim wrote: Thu 15 Oct, 2020 11:25 после очистки профиля я выяснил что виной был файл C:\Users\Sim\AppData\Roaming\Far Manager\Profile\PluginsData\D2F36B62-A470-418D-83A3-ED7A3710E5B5.db
Если его удалить, при запуске фара создастся новый и настройки FarColorer слетят
Так этот файл и «принадлежит» именно плагину FarColorer (это легко узнать, включив режим панели, где есть Описания, например №6 или №7 в умолчательной конфигурации).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
Sim
Posts: 430
Joined: Fri 12 Jun, 2009 09:43
Has thanked: 8 times
Been thanked: 1 time
Contact:

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

Post by Sim »

HaRT, но остается вопрос почему мой старый файл вызывал тормоза, хотя из настроек в Colorer я почти ничего не менял, только выбрал стиль и изменил отображение креста, после таких же настроек с нуля тормоза не появились. Видимо какое-то повреждение в файле настроек Colorer мешало его нормальной работе.
Last edited by Sim on Thu 15 Oct, 2020 11:38, edited 1 time in total.
Случайности не случайны.
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

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

Post by citRiks »

Sim, ну имеет смысл теперь сравнить чего в этом файле, который в sqlite формате, отличается от свежесозданного.
там по идее небольшие таблицы sqlite с настройками должны быть
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 2095
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 207 times
Contact:

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

Post by buniak_a_h »

citRiks, там и есть таблицы SQLite. Напишете макрос, переводящий в текстовый вид? Или такое уже есть? Или можно ещё filter сделать для ExamDiff…
Sim, история развития колорера очень длинная; там могли остаться уже неактуальные настройки, к которым теперь нет доступа из диалога :-) Подробности, конечно, лучше знает стармех, но вообще я с таким сталкивался.
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

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

Post by citRiks »

buniak_a_h wrote: Thu 15 Oct, 2020 11:56 citRiks, там и есть таблицы SQLite. Напишете макрос, переводящий в текстовый вид? Или такое уже есть? Или можно ещё filter сделать для ExamDiff…
после сегодняшних наездов (я не говорю же чьих наездов, ОК?) я ничего не хочу уже писать никогда.
помогаю лишь людям по мере возможности, пока уж я еще здесь
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
ctapmex
Posts: 1099
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 25 times
Contact:

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

Post by ctapmex »

citRiks wrote: Thu 15 Oct, 2020 11:22 Даже если типа виноваты хэндлеры евентов
ЭТО ВСЕ РАВНО ЗНАЧИТ ЧТО СОЗДАЮТСЯ СЛИШКОМ МНОГО ЛИШНИХ ЭВЕНТОВ ОТ КОЛОРЕРА

Ну и стандартный дисклаймер прилагается:
Может я в чем не прав, прастити миню те кто всегда прав
ты (можно на ты ? ) не прав ;)
подход работы colorer - раскраска текста согласно контексту/месту. если ты редактируешь пятую строку из 100, то контекст меняется у всех строк , начиная с 5. и их необходимо переразобрать. На это и уходит много времени. Сама раскраска в редакторе и посылка ему сообщений она копеечная. там затруднения возникают только в случае, если редактируется конец длинной строки, т.к. необходимо в списке элементов найти элемент соответсвующий отображени. экрана.
citRiks
Posts: 895
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 269 times
Been thanked: 46 times

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

Post by citRiks »

ctapmex wrote: Thu 15 Oct, 2020 13:04 ты (можно на ты ? ) не прав
да можно и нужно конечно, смысл бесед тут явно не в множественных числах в обращении :)
ctapmex wrote: Thu 15 Oct, 2020 13:04 Сама раскраска в редакторе и посылка ему сообщений она копеечная.
Согласен что самому колореру денег не стоит рассылать 1000 сообщений в секунду.
А получать эти сообщениям тоже денег не стоит?
Мне думается что будет стоить, обработчику же надо обработать это как-то..
Ну в нашем случае может больше виновата какая-то неправильнсоть в базе даных плагина.
но в остальном общем и целом.
может ли быть ситуация, когда шлются 1000 redraws в секунду например?
если да, то можно ли задать искуственный ограничитель,
чтобы скажем redraw слался не чаще чем раз в 200 милисекунд как например?
ctapmex wrote: Thu 15 Oct, 2020 13:04 там затруднения возникают только в случае, если редактируется конец длинной строки, т.к. необходимо в списке элементов найти элемент соответсвующий отображени. экрана.
это наверное не очень важно мне, но все же непонятно.
текст моноширинный, значит знaем все координаты экранные, реальные, табуляционные, элементарная арифметика без плавающих точек.
Где тут затруднения должны быть?
если затруднение и в долгих обьяснениях человеку с нуля, то можно и оставить эту тему :)
Last edited by citRiks on Thu 15 Oct, 2020 14:24, edited 1 time in total.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
User avatar
Sim
Posts: 430
Joined: Fri 12 Jun, 2009 09:43
Has thanked: 8 times
Been thanked: 1 time
Contact:

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

Post by Sim »

ctapmex wrote: Thu 15 Oct, 2020 13:04 затруднения возникают только в случае, если редактируется конец длинной строки, т.к. необходимо в списке элементов найти элемент соответсвующий отображени. экрана.
в моем случае тормоза возникают одинаково, как при редактировании начала длинной строки, так и конца. Даже просто вставка пустой строки между строками или даже пробела или другого символа вызывает задержку в 7 секунд, хотя вводимый символ никак не влияет на отображение раскраски, может можно перерисовку делать не блокируя работу фара? Припоминаю была идея сделать работу колорера полностью в фоне в отдельном потоке, пусть раскраска тормозит, лишь бы не блокировался интерфейс на время раскраски, так чтобы работа с редактированием была такой же по скорости как с полностью отключенным плагином.
Случайности не случайны.
User avatar
ctapmex
Posts: 1099
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 25 times
Contact:

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

Post by ctapmex »

о том, что вводимый символ никак не влияет на раскраску как узнать? никак. только перестраивать.
проблема была в сохраненных настройках. для defaut схемы сохранился параметр максимальной строки как "defaul-5000". а это строка, что вызвало использование значения по умолчанию 0 - нет ограничений. а в файле есть строки и по 160 тыс знаков.

фоновая обработка - это светлая мечта
User avatar
Sim
Posts: 430
Joined: Fri 12 Jun, 2009 09:43
Has thanked: 8 times
Been thanked: 1 time
Contact:

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

Post by Sim »

ctapmex, а что если сделать возможность такого режима работы плагина: раскраска при открытии файла, а дальше отключить автоматическую раскраску (можно нажатием хоткея) и дать возможность спокойно отредактировать файл, а раскраску включить по нажатию хоткея тогда, когда она нужна для проверки синтаксиса?
Или еще вариант - сделать таймаут новой раскраски после любого редактирования, т.е. пока вводишь какой-то текст или удаляешь раскраска не меняется, а остановился на скажем 5 секунд и раскраска обновляется.
Last edited by Sim on Thu 15 Oct, 2020 22:01, edited 2 times in total.
Случайности не случайны.
IgorZ
Posts: 702
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 66 times

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

Post by IgorZ »

buniak_a_h wrote: Thu 15 Oct, 2020 11:56 citRiks, там и есть таблицы SQLite. Напишете макрос, переводящий в текстовый вид? Или такое уже есть?
Мой DBEdit умеет экспортировать БД плагина в файл. Формат текстовый, читабельный.
Pasha_ZZZ
Posts: 148
Joined: Mon 12 Jun, 2006 14:58
Been thanked: 2 times
Contact:

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

Post by Pasha_ZZZ »

Давно уже замечал, думал само поправится: Colorer считает, что в bat/cmd обратный слэш экранирует кавычки (а это не так). Например, ввести строку if "123\"=="456\"
Last edited by Pasha_ZZZ on Sat 17 Oct, 2020 04:45, edited 1 time in total.
pepak
Posts: 504
Joined: Sun 13 Jul, 2008 11:18
Has thanked: 12 times
Been thanked: 41 times

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

Post by pepak »

Would it be possible to add config support for selectively disabling certain built-in syntaxes? I used to use my own modified catalog, but that always seemed like a hack more than anything and it finally stopped working in recent versions of FAR. A built-in support for enabling/disabling filters could be very useful, particularly in case of XML files where some specializations often take over what should be a regular file (e.g. "Ant's build.xml" gets used while plain "xml" would be more apropriate; since I never use the former, I could simply disable it to get the desired result). Thanks.
Post Reply

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