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
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 »

Latest post of the previous page:

ctapmex wrote: Fri 30 Apr, 2021 15:20 надо использовать новое макроапи
Кстати! За это - большое спасибо! У меня теперь вместо filemask в макросах проверка схемы colorer-а. Это и удобнее, и гибче :-)
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

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

Post by Ann »

buniak_a_h wrote: Fri 30 Apr, 2021 16:14 У меня теперь вместо filemask в макросах проверка схемы colorer-а. Это и удобнее, и гибче :-)
А научите этой методике, плз. Для этого, вероятно, достаточно будет пары примеров.
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 »

Ann wrote: Fri 30 Apr, 2021 22:14
buniak_a_h wrote: Fri 30 Apr, 2021 16:14 У меня теперь вместо filemask в макросах проверка схемы colorer-а. Это и удобнее, и гибче :-)
А научите этой методике, плз. Для этого, вероятно, достаточно будет пары примеров.
На примере lua (раньше была filemask="*.lua,*.moon,*.fml,*.fmlua";, теперь это поле закомментировано).
Пишете вместо filemask такое условие:

Code: Select all

  condition = function()
   return far.ProcessName(F.PN_CMPNAMELIST, '*.lua,*.moon,*.fml,*.fmlua', Editor.FileName, F.PN_SKIPPATH) or
          Plugin.Exist("D2F36B62-A470-418d-83A3-ED7A3710E5B5") and
          Plugin.SyncCall("D2F36B62-A470-418d-83A3-ED7A3710E5B5","Types","Get") == 'lua'
  end;
Небольшое пояснение. Я делаю бэкапы макрофайлов на разных стадиях разработки в файлы <имя>.lua.ГГММДД.00n . Расширение приходится специально "сбивать", чтоб файл не участвовал в загрузке макросов. Но иногда хочется, не меняя его, иметь возможность, например, проверить синтаксис или даже запустить. Раньше эти скрипты (Luacheck FAR scripts и MacroCheck) запускались только из *.lua; теперь меняете цветовую схему - и выполняете. Не выходя из редактора.
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 »

Plugin.Exist тут лишнее звено.
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: Sat 01 May, 2021 08:06 Plugin.Exist тут лишнее звено.
Почему? Потому что колорер входит в комплект поставки? Не аргумент. Или потому что при отсутствии колорера SyncCall вернёт нил? Я экспериментов не ставил, не знаю, что будет при отсутствии колорера…
P/S. Проверил. SyncCall возвращает false. Ну да, не 'lua' всяко.
Last edited by buniak_a_h on Sat 01 May, 2021 09:59, edited 1 time in total.
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 »

Зачем эксперименты при наличии документации

Code: Select all

...=Plugin.Call(PluginId,...)
...
Функция возвращает false, если вызываемого плагина нет.
...
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: Sat 01 May, 2021 10:05 при наличии документации
Я такое читаю:
Функция возвращает 0, если вызываемого плагина нет или плагин вернул 0
У меня они все перепутались, не знаю, чему верить. Впрочем, для конкретной этой задачи это не имеет значения.
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 »

buniak_a_h wrote: Sat 01 May, 2021 10:46 У меня они все перепутались, не знаю, чему верить.
https://farmanagerlegacy.github.io/macr ... ugins.html
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 »

User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by buniak_a_h »

1. Работать перестало в версии 5785, т.е. не последняя, но вполне «свежая»
2. Затронут как скрипт macroex, так и плагин FarColorer.
Поэтому прошу не ругать, если не туда пишу.
Итак, по сути:
Использую скрипт Alt-C-colorer.lua, повесивший функции на сочетания AltC-<буква>.
В версии 5784.x64.20210425 всё работало, а в версии 5785.x64.20210426 - уже нет.
С рабочего на нерабочий обновлял тупо распаковкой соответствующего 7z-архива. 32-разрядная тоже перестала работать.
Не посмотрите?
P/S. Хотя упомянутый скрипт не мой, на всякий случай (чтоб Вам не искать) привожу его:
  1. ---[[
  2.  
  3. local function colorer(cmd)
  4.  
  5.   Plugin.Call("D2F36B62-A470-418d-83A3-ED7A3710E5B5",cmd) --Colorer
  6.  
  7. end
  8.  
  9.  
  10.  
  11. local function FilterOn()
  12.  
  13.   Keys('CtrlAltF')
  14.  
  15. end
  16.  
  17. local bindings = {
  18.  
  19.   {0, "C", "Colorer menu"         , "0FFFD4E5-B496-4D10-8B23-8D891106CCB0"};
  20.  
  21.   {1, "L", "List types"           , "5C2F48E8-48A4-4BD0-9BEE-65B6CC5C7E16"};
  22.  
  23.   {2, "[", "Match pair"           , "87FF64FE-D640-4234-BC53-8E869506794B"};
  24.  
  25.   {3, "]", "Select block"         , "61F7C1C5-E439-4F7A-A088-4D3E09B6CB9F"};
  26.  
  27.   {4, "P", "Select pair"          , "020E0C9B-BA0F-423A-9B0B-BFEA8B91F16B"};
  28.  
  29.   {5, ",", "Outliner list"        , "F41B60B5-1594-4F3C-BD09-D54F27E4485C"};
  30.  
  31.   {6, "'", "Errors list"          , "FB403B6F-9981-483A-B978-8DF68EC75745"};
  32.  
  33.   {7, "K", "Select region"        , "4B4D3931-8182-4659-B915-8B609ED48346"};
  34.  
  35.   {8, "A", "Region info"          , "74190CEC-A8C8-4BC3-82C7-64D49D45B298"};
  36.  
  37.   {9, "O", "Find Function"        , "97B174CC-0735-4032-82E2-594174DDD14A"};
  38.  
  39.   {11,"U", "Update highlighting"  , "8D4CC644-2FE0-4155-A0B6-93C300E3C618"};
  40.  
  41.   {12,"R", "Reload schema library", "8F223079-EC1F-492A-8B8E-E4DDD724CACA"};
  42.  
  43.   {13,"ShiftC", "Configure"       , "284C8858-6916-478C-AC6F-DD56B4174F34"};
  44.  
  45. }
  46.  
  47.  
  48.  
  49. for _,v in ipairs(bindings) do
  50.  
  51.   local cmd,hk,descr,uid = unpack(v)
  52.  
  53.   Macro {
  54.  
  55.     description=("%-6s %s"):format(hk,descr);
  56.  
  57.     area="Editor"; key="AltC-"..hk;
  58.  
  59.     uid=uid;
  60.  
  61.     action=function()
  62.  
  63.      if cmd==1 then
  64.  
  65.       mf.postmacro(FilterOn)
  66.  
  67.      end
  68.  
  69.      colorer(cmd)
  70.  
  71.     end;
  72.  
  73.   }
  74.  
  75. end
  76.  
  77. --]]
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 »

buniak_a_h, ответ как раз перед вашим сообщение.
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 »

ctapmex, объясните, пож., что я делаю не так.
Хочу выключить колорер в конкретном редакторе.
выдаю из макроса (вызванного из редактора) команду

Code: Select all

Plugin.Call("D2F36B62-A470-418d-83A3-ED7A3710E5B5", 'Editor','Status', 0)
far.Show(Plugin.Call("D2F36B62-A470-418d-83A3-ED7A3710E5B5", 'Editor','Status')) -- лишнее, но результат одинаковый
Увы, ничего не меняется, возвращает true, раскраска остаётся.
ЧЯДНТ ?
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 »

Вот даже нашёл аналогичный макрос от Shmuel:
Shmuel wrote: Tue 28 Jul, 2020 21:05 S.A., here's your macro after refactoring it a bit:

Code: Select all

Macro {
  description="toggle colorer"; area="Editor"; key="F1";
  action=function()
    local guid="D2F36B62-A470-418D-83A3-ED7A3710E5B5"
    Plugin.Call(guid,"Settings","Status",Plugin.Call(guid,"Settings","Status") and 0 or 1)
  end;
}
Сделал - не работает! В каком направлении рыть?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

buniak_a_h wrote: Sun 02 May, 2021 09:56 Сделал - не работает! В каком направлении рыть?
Я в то время (июль 2020) просто сделал рефакторинг чужого кода, без проверки (ибо колорером не пользуюсь).
Предполагаю, что на текущей версии того времени оно работало. Могло сломаться позже (опять предположение).
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 »

Shmuel, моё сообщение - это просто как доказательство, что вроде не я накосячил. Мой аналогичный скрипт (написанный независимо) тоже не работает. Видимо, действительно что-то сломалось…
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

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

Post by gotar »

Shmuel wrote: Sun 02 May, 2021 10:27 Я в то время (июль 2020) просто сделал рефакторинг чужого кода, без проверки (ибо колорером не пользуюсь)
А чем пользуетесь?
Post Reply

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