Расширение Plugin API для поддержки CustomPlugins

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
Post Reply
chpock
Posts: 9
Joined: Tue 05 Mar, 2013 23:36
Has thanked: 1 time

Расширение Plugin API для поддержки CustomPlugins

Post by chpock »

Предлагаю добавить в Plugin API возможность любому плагину обеспечивать "прокси" между Far API и "ненативным" плагином.

Плюсы:
- Вынесение кода поддержки ANSI плагинов из ядра в свой, отдельный, плагин.
- Узаконивание решений, вроде, Wrap Far2 to Far3
- Возможность писать плагины на любом интерпретируемом языке, хоть на bat командах. Например, полноценные плагины на Lua, вместо недо-скрипто-макросов, недо-плагин-прокладок (навроде LuaFAR for Editor)
- Возможность, почти нативно, прикрутить плагины от стороних программ

Фазически это будет так:
В ядре определяется класс "PluginCustom", дитё класса "Plugin"
При подгрузке плагинов, из них экспортируется функция "ControlCustomPlugins", которой мастер-плагин рассказывает ядру о своих возможностях поддержки "ненативных" плагинов.
После цикла прохода по всем плагинам и их загрузки (PluginManager::LoadPlugins), делается дополнительный проход по плагинокаталогу для каждого мастер-плагина, который экспортировал "ControlCustomPlugins". В этом проходе ищутся файлы мо маске, которую запросил мастер-плагин через функцию "ControlCustomPlugins". Для проверки каждого файла, вызывается не "IsModulePlugin", а мастер-плагин. Если он подтвердил, что файл является его модулем - тогда создается объект класса "PluginCustom", мастер-плагин сам заполняет его таблицу экспорта (теоретически, заполняет сам на себя те функции, которые, по его мнению, поддерживаются найденым "ненативным" модулем).

Далее, мастер-плагин будет является "прокси" между FarAPI и "ненативным" модулем.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Расширение Plugin API для поддержки CustomPlugins

Post by HaRT »

Исходники открыты — присылайте патч.
Ну или ждите добровольцев…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by NightRoman »

Похожее предлагалось пару-тройку лет назад. Для меня было актуально в связи с разработкой FarNet, чтобы его модули были "полноценными плагинами", а не субплагинами с ограничениями в силу текущей архитектуры. Но это не двинулось, никому особо не надо. Включая и меня, нашел обходные пути, где можно - своя локализация, свои настройки и т.п. Только хелп для модулей нельзя прикрутить никак, это не обойти. Но жить, в общем, можно.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Расширение Plugin API для поддержки CustomPlugins

Post by DrKnS »

- Вынесение кода поддержки ANSI плагинов из ядра в свой, отдельный, плагин.
Если бы его было так просто вынести, уже давно бы вынесли.

А чем вам не нравится вариант, используемый во враппере для far2 (одна большая общая dll с имплементацией и по одному маленькому одинаковому dll-загрузчику на каждый "плагин")?
User avatar
WARP ItSelf
Самый умный
Posts: 1011
Joined: Tue 15 Mar, 2005 23:19
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by WARP ItSelf »

NightRoman

Ну, если сабплагинам не давать PluginStartupInfo, то проблемы, да. А так только локализацию свою делать приходится.
Никто не знал, а я...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by NightRoman »

WARP ItSelf wrote:NightRoman

Ну, если сабплагинам не давать PluginStartupInfo, то проблемы, да. А так только локализацию свою делать приходится.
Я не понял, если честно. О чем именно речь, что должно решить давание PluginStartupInfo суб-плагинам?
User avatar
WARP ItSelf
Самый умный
Posts: 1011
Joined: Tue 15 Mar, 2005 23:19
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by WARP ItSelf »

Доступ к возможности сохранять настройки вместе с плагином-родителям, возможность показывать какой угодно хелп и все остальные плюшки плагина-родителя за вычетом локализации. Куда уж полноценнее?
Никто не знал, а я...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by NightRoman »

Извини, но ты явно не курил это. А я курил.

Где будут сохраняться настройки? У всех модулей в одном файле одного родительского плагина. И это неудобно. Или даже неприемлимо. Что если *один* модуль надо на другой комп с настройками перенести, например? Весь файл настроек нельзя, на том компе затрется все остальное.

Показывать какой угодно хелп - не проблема, как раз. Но только для этого надо что-то от модуля обязательно что-то запустить, и тогда можно смотреть *контекстный* хелп. Проблема в F1 \ ShiftF2, например - как посмотреть основной хелп модуля без его запуска? Никак.
User avatar
WARP ItSelf
Самый умный
Posts: 1011
Joined: Tue 15 Mar, 2005 23:19
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by WARP ItSelf »

У меня минимум 2 плагина с субплагинами уже давно. Так что курим мы одно и тоже.

1. По первому вопросу претензии понятны. Но не думаю, что этим должен заниматься Far. Т.е. я не думаю, что он должен предоставлять апи, по которому будут сохраняться произвольные настройки чего угодно в отдельную базу. Сам храню настройки в xml, но считаю, что в целом хранение их вместе с основным плагином вполне оправдано.

Тут, безусловно, можно спорить.

2. Не до конца понял вторую проблему. Имеется в виду, что эти модули не увидеть в общем списке? Я для этого делал автогенерящийся Help со списком.
Никто не знал, а я...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by NightRoman »

WARP ItSelf wrote:2. Не до конца понял вторую проблему.
Ну сделай F1 \ ShiftF2 - показывается хелп плагинов. Там нельзя показать хелп модулей, можно только хелп родительского плагина.

Я не знаю, что ты хочешь доказать. Я уже написал, что жить можно и так, но определенные неудобства есть. Что не так?
User avatar
WARP ItSelf
Самый умный
Posts: 1011
Joined: Tue 15 Mar, 2005 23:19
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by WARP ItSelf »

Имеется в виду, что эти модули не увидеть в общем списке? Я для этого делал автогенерящийся Help со списком.

Я ничего не пытаюсь доказать, я лишь пытаюсь выяснить серьезность твоих проблем. А вот ты что-то начал наезжать.
Никто не знал, а я...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by NightRoman »

WARP ItSelf wrote:Имеется в виду, что эти модули не увидеть в общем списке? Я для этого делал автогенерящийся Help со списком.

Я ничего не пытаюсь доказать, я лишь пытаюсь выяснить серьезность твоих проблем. А вот ты что-то начал наезжать.
Автогенерящийся хелп - как-то это уже перебор для меня, есть полезнее вещи пока в планах. Серьезность моих проблем весьма мала.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by NightRoman »

Но подытожим. Родительскому плагину можно сделать:
-- автогенерация хелпа для модулей
-- свои настройки для модулей
-- своя локализация модулей

Кроме хелпа у меня все сделано давно, мне не надо. Но кому-то еще, каждому, кто будет писать плагин с модулями надо будет эти вещи делать самому тоже.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Расширение Plugin API для поддержки CustomPlugins

Post by NightRoman »

А, и еще забыл кеширование инфы команд модулей, если плагин не собирается каждый раз грузить всю охапку модулей, даже есть пользуется только один. (В Фарнет это тоже сделано.)

Может, и еще что забыл. Вот и получается, что для того чтобы грамотно написать полноценный плагин-фреймворк для модулей, надо порядочную работу проделать.
Post Reply

Return to “Предложения и идеи”