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

Здесь можно обсудить ваш любимый плагин.
User avatar
ctapmex
Posts: 1063
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 10 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: 644
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 175 times
Been thanked: 43 times

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

Post by citRiks »

Latest post of the previous page:

HaRT wrote:
Thu 23 Apr, 2020 20:17
Колорер — это не вполне подходящий для этой задачи инструмент. Посмотрите лучше в сторону Language Server Protocol.
А почему неподходящий?
Он штатный без внешних зависимостей
Уже умеет для анализа кода или все или почти все.
АПИ вон какой замечательный делается
не надо изучать CTags/LangServer.

User avatar
John Doe
Бюрократ
Posts: 12826
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 286 times

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

Post by John Doe »

В справке все примеры с Plugin.Call, тогда как в ряде случаев требуется Plugin.SyncCall (например во всех случаях когда надо вернуть значение, или дождаться закрытия диалогов пользователем).

Code: Select all

Plugin.Call("D2F36B62-A470-418d-83A3-ED7A3710E5B5","Settings",<Name>, <Param>)
(И сейчас так для каждой команды)
И я бы исключил повторяющиеся части(Plugin.Call и гуид), получится компактнее и нагляднее.

Code: Select all

   Функция для работы с глобальными настройками. Ограничений на макрорегионы не установлено.
Видимо это примечание в команде Settings лишнее
Last edited by John Doe on Mon 04 May, 2020 11:47, edited 1 time in total.
https://t.me/FarManager — Telegram чат

User avatar
John Doe
Бюрократ
Posts: 12826
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 286 times

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

Post by John Doe »

Code: Select all

        "Status" - Статус активности плагина
          <Param> - Число: 0 - выключен; 1 - включен;
          Если задан, то применяется новый статус с перезагрузкой всех настроек. Возвращает предыдущее значение
          Если не задан, возвращает текущее значение
На самом деле:
- Возвращается true/false
- Применить новый статус не получается ни с 0/1, ни с false/true (пробую из панелей)

Вообще false/true кажутся предпочтительнее, но надо помнить о том, что false может вернуться и в случае ошибки в команде.
Пока не предлагаю решения, надо сначала посмотреть все команды.
https://t.me/FarManager — Telegram чат

User avatar
ctapmex
Posts: 1063
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 10 times
Contact:

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

Post by ctapmex »

проблему с set Status исправил. добавил так же обработку на вход true/false.

User avatar
John Doe
Бюрократ
Posts: 12826
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 286 times

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

Post by John Doe »

ctapmex wrote:
Wed 06 May, 2020 18:09
проблему с set Status исправил. добавил так же обработку на вход true/false.
Plugin.Call("D2F36B62-A470-418d-83A3-ED7A3710E5B5","Status") всегда возвращает false.
Параметр ни на что не влияет.
Edit похоже проблема в регистре - "status" вроде работает.
Last edited by John Doe on Wed 13 May, 2020 10:24, edited 2 times in total.
https://t.me/FarManager — Telegram чат

User avatar
John Doe
Бюрократ
Posts: 12826
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 286 times

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

Post by John Doe »

Если логгирование включено, но путь к логу указан некорректный, то при попытке включить колорер из редактора фар падает:

Code: Select all

Exception:    0xC00000FD - EXCEPTION_STACK_OVERFLOW
Details:      A new guard page for the stack cannot be created.
errno:        0x00000000 - No error
LastError:    0x00000000 - The operation completed successfully.
NTSTATUS:     0xC000000D - An invalid parameter was passed to a service or function.
Address:      0xFE9D71 - Far.exe!KeyMacro::CallFar
Function:     ProcessDialogEventW
Source:       C:\src\far\macro.cpp:1539
File:         C:\APPs\Far3\Plugins\LuaMacro\luamacro.dll
Plugin:       LuaMacro 3.0.0.746 (Far macros in Lua, Shmuel Zeigerman & Far Group)
Far:          3.0.0.5596 x86 (96933a8)
OS:           10.0.17763.2.0.0.256.1 (version 1809, OS build 17763.1192)

0x00FE9D71 Far.exe!KeyMacro::CallFar (C:\src\far\macro.cpp:1539)
0x0103C17C Far.exe!pluginapi::apiCallFar (C:\src\far\plugapi.cpp:3026)
0x6627CEF1 luafar3.dll!LF_LoadFile
0x66FD026B lua51.dll!lua_dump
0x662868A8 luafar3.dll!LF_LoadFile
0x66F8608B lua51.dll!<unknown> (get the pdb)
0x66F88B93 lua51.dll!luaL_error
0x66F88DB0 lua51.dll!luaL_error
0x66F88695 lua51.dll!luaL_error
0x66F89AEB lua51.dll!luaL_error
0x66F89961 lua51.dll!luaL_error
Под этим сообщением находится другое:

Code: Select all

╔════════════════════ FarColorer ════════════════════╗
║ editorEvent: Bad BaseEditor constructor parameters ║
╟────────────────────────────────────────────────────╢
║                       { Ok }                       ║
╚════════════════════════════════════════════════════╝
А за ним ещё сообщении о невозможности открыть лог.
https://t.me/FarManager — Telegram чат

User avatar
ctapmex
Posts: 1063
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 10 times
Contact:

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

Post by ctapmex »

John Doe wrote:
Wed 13 May, 2020 09:55
ctapmex wrote:
Wed 06 May, 2020 18:09
проблему с set Status исправил. добавил так же обработку на вход true/false.
Plugin.Call("D2F36B62-A470-418d-83A3-ED7A3710E5B5","Status") всегда возвращает false.
Параметр ни на что не влияет.
Edit похоже проблема в регистре - "status" вроде работает.
это старая функция. которая не менялась.
новая

Code: Select all

 #Работа с глобальными настройками#
   Ограничений на макрорегионы не установлено.
   #...,"Settings",<Name>, <Param>)#
     <Name>: принимает следующие значения
...
        "Status" - Статус активности плагина
          <Param> - Число: 0 - выключен; 1 - включен; Либо boolean: false -выкл, true - вкл.
          Если задан, то применяется новый статус с перезагрузкой всех настроек. Возвращает предыдущее значение
          Если не задан, возвращает текущее значение

User avatar
ctapmex
Posts: 1063
Joined: Fri 11 Apr, 2008 07:53
Been thanked: 10 times
Contact:

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

Post by ctapmex »

John Doe wrote:
Wed 13 May, 2020 10:29
Если логгирование включено, но путь к логу указан некорректный, то при попытке включить колорер из редактора фар падает:

Code: Select all

Exception:    0xC00000FD - EXCEPTION_STACK_OVERFLOW
Details:      A new guard page for the stack cannot be created.
errno:        0x00000000 - No error
LastError:    0x00000000 - The operation completed successfully.
NTSTATUS:     0xC000000D - An invalid parameter was passed to a service or function.
Address:      0xFE9D71 - Far.exe!KeyMacro::CallFar
Function:     ProcessDialogEventW
Source:       C:\src\far\macro.cpp:1539
File:         C:\APPs\Far3\Plugins\LuaMacro\luamacro.dll
Plugin:       LuaMacro 3.0.0.746 (Far macros in Lua, Shmuel Zeigerman & Far Group)
Far:          3.0.0.5596 x86 (96933a8)
OS:           10.0.17763.2.0.0.256.1 (version 1809, OS build 17763.1192)

0x00FE9D71 Far.exe!KeyMacro::CallFar (C:\src\far\macro.cpp:1539)
0x0103C17C Far.exe!pluginapi::apiCallFar (C:\src\far\plugapi.cpp:3026)
0x6627CEF1 luafar3.dll!LF_LoadFile
0x66FD026B lua51.dll!lua_dump
0x662868A8 luafar3.dll!LF_LoadFile
0x66F8608B lua51.dll!<unknown> (get the pdb)
0x66F88B93 lua51.dll!luaL_error
0x66F88DB0 lua51.dll!luaL_error
0x66F88695 lua51.dll!luaL_error
0x66F89AEB lua51.dll!luaL_error
0x66F89961 lua51.dll!luaL_error
Под этим сообщением находится другое:

Code: Select all

╔════════════════════ FarColorer ════════════════════╗
║ editorEvent: Bad BaseEditor constructor parameters ║
╟────────────────────────────────────────────────────╢
║                       { Ok }                       ║
╚════════════════════════════════════════════════════╝
А за ним ещё сообщении о невозможности открыть лог.
прикольная ошибка. при отображении msgbox с ошибкой логирования, far посылает сообщения всем, в том числе редактору. колорер получает это сообщение, и пытается его обработать. получает ошибку, т.к. еще не инициализировался и показывает новый mgsbox. и так по кругу, пока у фара влазит строка для форматирования.

Post Reply

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