Latest post of the previous page:
А вот если бы lua-wrapper шел как часть плагина, это было бы не важно...Plugin.require — функция-враппер на замену Plugin.Call и др.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Regular Expression Search and Replace (RESearch)
Это не так.Max Rusov wrote:Ну, как я понимаю, ReSearch "не вписался".
Впишется вообще любой. Просто плагин, команды которого заданы строками - получает больше преимуществ.
А можно подробнее?Max Rusov wrote:А вот если бы lua-wrapper шел как часть плагина, это было бы не важно...
Где именно для этого нужно внести измения?
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Regular Expression Search and Replace (RESearch)
Хотелось бы как то так. Т.е. вместе с плагином идет *.lua модуль, который добавляет namespace(?) - не знаю как правильно, вообщем типа mf из api.lua. Он автоматом грузится FAR'ом при запуске, и сразу доступен в макросах без всякого require.John Doe wrote:А можно подробнее?
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Plugin.require — функция-враппер на замену Plugin.Call и
В шапке есть ссылка на мантис, там это всё много лет назад обсуждалось.
И способ регистрации этого namespace вызвал максимум разногласий.
А Plugin.require - это абсолютно безболезненное решение, не требующее никаких изменений ни в фаре, ни в плагинах*.
Способ функционирования - полностью в духе Lua, и я считаю это важным.
Плагины, предоставляющие свои функции - подобны библиотекам-модулям Lua.
И чтобы начать использовать модуль - нужно "загрузить" его посредством require.
И никакие внешние модули "автоматически" в луа не регистрируют свои неймспейсы.
Разве что стандартные, но это и у нас легко.
----
*одна вещь всё-таки требуется: важно иметь такую функцию "из коробки", т.е. включить в дистрибутивный luamacro.lua (или куда там).
Тогда авторы плагинов будут учитывать эту возможность, и изначально закладывать в свои плагины человеческий интерфейс.
И способ регистрации этого namespace вызвал максимум разногласий.
А Plugin.require - это абсолютно безболезненное решение, не требующее никаких изменений ни в фаре, ни в плагинах*.
Способ функционирования - полностью в духе Lua, и я считаю это важным.
Плагины, предоставляющие свои функции - подобны библиотекам-модулям Lua.
И чтобы начать использовать модуль - нужно "загрузить" его посредством require.
И никакие внешние модули "автоматически" в луа не регистрируют свои неймспейсы.
Разве что стандартные, но это и у нас легко.
----
*одна вещь всё-таки требуется: важно иметь такую функцию "из коробки", т.е. включить в дистрибутивный luamacro.lua (или куда там).
Тогда авторы плагинов будут учитывать эту возможность, и изначально закладывать в свои плагины человеческий интерфейс.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Plugin.require — функция-враппер на замену Plugin.Call и
"Много лет назад" не было LUA, так что эти обсуждения неактуальны. Сейчас, как мне кажется, сделать это очень просто.John Doe wrote:В шапке есть ссылка на мантис, там это всё много лет назад обсуждалось.
Преимущества:
- Функции плагинов можно будет легко использовать в макросах, вызываемых через "macro:post" и подобных мест.
- namespace-ы плагинов и функции в них будут доступны для выбора через auto-completion (с помощью макросов, типа Lua Explorer)
Единственная "проблема", которую любят предъявлять - конфликт имен - элементарно решается переименованием
namespace'а в lua модуле, т.к. он будет отдельным текстовым файлом, а не "зашит" в плагин, как предполагалось раньше...
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Plugin.require — функция-враппер на замену Plugin.Call и
Lua действительно без проблем позволит реализовать тот или иной вариант, но это не меняет сути: вариант надо выбрать, а согласия тогда не было."Много лет назад" не было LUA, так что эти обсуждения неактуальны. Сейчас, как мне кажется, сделать это очень просто.
через "macro:post"
Code: Select all
lm:post Plugin.require"ConCtrl".Maximize()
Никто не мешает при старте зарегистрировать ВСЕ нейспейсы, для этого нужен очень простой скрипт лежащий где-то в scripts.- namespace-ы плагинов и функции в них будут доступны для выбора через auto-completion (с помощью макросов, типа Lua Explorer)
Будут доступны сами неймспейсы, но конечно не функции (в этом возможно минус, но всё решаемо).
и тем не менее: тогда согласия не было, сейчас опять не будет, так и останемся ни с чем.Единственная "проблема", которую любят предъявлять - конфликт имен
Вот и я говорю: Lua файл загружаемый при старте решит этот вопрос.т.к. он будет отдельным текстовым файлом, а не "зашит" в плагин, как предполагалось раньше...
Что важно: не требуется никаких изменений, всё работает уже сейчас.
А расширенная функциональность, которую предлагаете вы - требует изменений и в фаре и во всех плагинах.
Я не говорю что будет плохо. Но ждать реализации опять придётся "много лет".
Re: Plugin.require — функция-враппер на замену Plugin.Call и
И все таки закапывание того, что с помощю предложенного Вами механизма проихожит не вызов функции, предостовляемой плагином по правилам lua, а вызов plugin.call выглядит красиво пока все работает. Если возникнут какие то какие то конфликы или что-то перестанет работать, разбирательств том что проиходит будет затруднено. Мне кажется, что если бы знатоки Lua предложили бы путь, по которому могли бы следовать плагино писатели для более простой интеграции макросов луа и плагина, то большенство плагинописателей ему бы последовали. Тем более, что доступ к луа-машине не только у фара , но и любого плагина.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Plugin.require — функция-враппер на замену Plugin.Call и
Например?gotar wrote:Если возникнут какие то какие то конфликы или что-то перестанет работать, разбирательств том что проиходит будет затруднено.
Было бы неплохо.gotar wrote:Мне кажется, что если бы знатоки Lua предложили бы путь[...]
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Plugin.require — функция-враппер на замену Plugin.Call и
Max Rusov
gotar
Мне кажется вот подходящий аргумент от автора:
Если вы хотите внести коррективы, или предложить лучшую альтернативу - почему бы и нет.
После чего выберем лучший вариант, и включим его в поставку luamacro.
gotar
Мне кажется вот подходящий аргумент от автора:
В данном случае: какой бы интерфейс вы не придумали - ничто не мешает реализовать его на Lua, что я например и попытался сделать.Shmuel wrote:LuaFAR является "тонким" враппером вокруг Far API - это сознательное решение. Всё остальное, функции более высокого уровня, лучше делать на Lua (я имею в виду "модули" или "библиотеки"). Лучше потому, что легче поддерживать и модифицировать.
Если вы хотите внести коррективы, или предложить лучшую альтернативу - почему бы и нет.
После чего выберем лучший вариант, и включим его в поставку luamacro.
Re: Plugin.require — функция-враппер на замену Plugin.Call и
Плагин умеет выполнять какое-то действия. Предполагается, что эти действия будет вызываться из макроса на Lua. Мне кажется естественным, чтобы plugin предоставлял функции для выполнения этих действий. Для этого нужно использовать хорошо задокументированный интерфейс С/С++ к Lua( а не plugin.call). Нет?
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Plugin.require — функция-враппер на замену Plugin.Call и
Этот интерфейс реализуется модулями.
Я предлагал: http://forum.farmanager.com/viewtopic.p ... 34#p104534
Но идея поддержана не была, и это понятно, т.к. этот интерфейс автору плагина ещё требуется реализовать, а Plugin.Call можно сказать даром даётся.
Update
Обсуждение Lua API отделено.
Я предлагал: http://forum.farmanager.com/viewtopic.p ... 34#p104534
Но идея поддержана не была, и это понятно, т.к. этот интерфейс автору плагина ещё требуется реализовать, а Plugin.Call можно сказать даром даётся.
Update
Обсуждение Lua API отделено.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Plugin.require — функция-враппер на замену Plugin.Call и
В комплект последней версии плагина ConsoleControl добавлен Lua-модуль, определяющий Lua-интерфейс плагина.
Интерфейс практически идентичен тому, который получается при использовании Plugin.require.
Но что характерно: сам модуль по размеру почти в 2 раза превышает размер (Plugin.require + Plugin.idByName).
А ведь Plugin.require можно использовать с десятком плагинов.
Интерфейс практически идентичен тому, который получается при использовании Plugin.require.
Но что характерно: сам модуль по размеру почти в 2 раза превышает размер (Plugin.require + Plugin.idByName).
А ведь Plugin.require можно использовать с десятком плагинов.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Plugin.require — функция-враппер на замену Plugin.Call и
Вы упускаете несколько важных моментов.John Doe wrote:Но что характерно: сам модуль по размеру почти в 2 раза превышает размер (Plugin.require + Plugin.idByName)
1. Инерфейсный модуль позволяет делать значительно больше чем просто перевызовы функций. См. например, ConsoleControl.WindowSizeDelta. Или пример из другого плагина (еще не опубликованного):
Code: Select all
MoreHistory.OpenFolderHistory = function(Filter, Group, Order, IncHidden)
local M = mmode(3,1)
Plugin.Call(PID, "OpenFolderHistory", Filter, Group, Order, IncHidden)
mmode(3,M)
end
3. Про автодополнение уже говорил.
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Plugin.require — функция-враппер на замену Plugin.Call и
Почему же упускаю, я об этом думал.
1. Бесспорно
2. Да, но если не писать модуль, а просто перечислить функции с параметрами - всё будет ещё нагляднее
3. Нет, ответил в теме
1. Бесспорно
2. Да, но если не писать модуль, а просто перечислить функции с параметрами - всё будет ещё нагляднее
3. Нет, ответил в теме
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Plugin.require — функция-враппер на замену Plugin.Call и
Что "нет" ? Автодополнение работает, я постоянно пользуюсь. Хоть какой-то сервис, а то этот LUA вообще нифига не проверяет...John Doe wrote:3. Нет, ответил в теме
- John Doe
- Бюрократ
- Posts: 13862
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Plugin.require — функция-враппер на замену Plugin.Call и
А, в этом плане соглашусь.
Plugin.require заранее не знает что за функции предоставляет модуль.
Но можно было бы научить (при наличии поддержки со стороны плагина).
А вот так "документация", я считаю, намного нагляднее, чем размазанная в определениях по модулю:
И сам модуль можно "свернуть": http://forum.farmanager.com/viewtopic.p ... 51#p105951
(Необходимости в этом нет конечно, просто спортивный интерес.)
Plugin.require заранее не знает что за функции предоставляет модуль.
Но можно было бы научить (при наличии поддержки со стороны плагина).
А вот так "документация", я считаю, намного нагляднее, чем размазанная в определениях по модулю:
И сам модуль можно "свернуть": http://forum.farmanager.com/viewtopic.p ... 51#p105951
(Необходимости в этом нет конечно, просто спортивный интерес.)