Расширение макроязыка плагинами

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Latest post of the previous page:

Shmuel wrote:
John Doe wrote:
Shmuel wrote:Plugin.Call позволяет плагинам добавлять произвольные функции. Тот же синус, например, который всегда фигурирует в дискуссиях на эту тему.
Вот и я об этом.
Очень коряво выходит:

Code: Select all

Plugin.Call("887631b9-49cc-415f-be22-d6b07510510d","Sin",3.14)
вместо простого
math.sin(3.14)
В Lua эта корявость легко преодолима: делается модуль, а в нём красивые обёртки для подобных функций.

Code: Select all

function sin(arg)
  return Plugin.Call("887631b9-49cc-415f-be22-d6b07510510d","Sin",arg)
end
А ведь dll плагина наверно может непосредственно содержать Lua модуль?
Если действие функции не связано с фаром (как в примере с синусом), то это предпочтительнее, т.к. позволит использовать предоставленные функции без фара, в любом Lua-скрипте.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:А ведь dll плагина наверно может непосредственно содержать Lua модуль?
Если действие функции не связано с фаром (как в примере с синусом), то это предпочтительнее, т.к. позволит использовать предоставленные функции без фара, в любом Lua-скрипте.
Предпочитаю держать Lua-модули общего назначения отдельно от плагинов Фара. Если надо, они вызываются из плагинов с помощью 'require'.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Я тоже предпочитаю.
Но если есть плагин, полноценный.
Определённые функции предоставляет макросам посредством Plugin.Call
А мог бы делать это через require.
Не делить же его в этом случае на 2 dll?
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Нет уж, лучше разделить на 2 dll, чем так.
Каким образом путь этого плагина попадёт в package.cpath, например, для не-фаровских скриптов? Да и для фаровских нужны будут дополнительные телодвижения.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Фаровские можно обрабатывать фаром.
Нефаровских - это проблемы пользователя. Например можно скопировать в нужное место.

Но вообще конечно сомнительно что кто-то будет заморачиваться организацией модуля.
А на 2 dll тем более делить не будет.

P.S.
Просто хочется какой-то универсальности, надоели велосипеды.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:Просто хочется какой-то универсальности, надоели велосипеды.
Ваш случай - надуманный. Или можете привести пример такого существующего плагина?
А универсальность как раз заложена в механизме модулей.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

О чём я и говорю - механизм модулей универсален.
Но в фаре плагины предоставляют функции иначе - посредством plugin.call

Примеры плагинов, которые могли бы работать независимо от фара: Console Control, Noisy
Согласен, это скорее исключение.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:О чём я и говорю - механизм модулей универсален.
Но в фаре плагины предоставляют функции иначе - посредством plugin.call
Ваше изначальное предложение технически вполне возможно. Если хотите создать такой плагин, можете это сделать.
Post Reply

Return to “Обсуждение макросов”