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

Здесь обсуждается всё, что касается макросов.
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

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

Post by Max Rusov » Mon 01 Oct, 2012 12:17

NightRoman wrote:Но идея-то была вроде, что с int плагин больше инфы может в макрос вернуть.
По факту сейчас - не может. А чтобы мог - планировалось RegisterMacroFunc (или как-то так)... Или на это теперь забили?

Примечание модератора: связанная тема http://forum.farmanager.com/viewtopic.php?f=15&t=7805

Shmuel
Posts: 5709
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 201 times

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

Post by Shmuel » Mon 01 Oct, 2012 12:31

Max Rusov wrote:
NightRoman wrote:Но идея-то была вроде, что с int плагин больше инфы может в макрос вернуть.
По факту сейчас - не может. А чтобы мог - планировалось RegisterMacroFunc (или как-то так)... Или на это теперь забили?
В первую очередь нужно, чтобы заработала вся старая функциональность. А потом можно будет делать разные интересные вещи.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

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

Post by Max Rusov » Mon 01 Oct, 2012 12:38

Skirda wrote:
Max Rusov wrote:планировалось RegisterMacroFunc (или как-то так)... Или на это теперь забили?
А смысл? Ты в луо-макросе можешь написать func...
Смысл все тот-же - интеграция с скриптов с плагинами, естественно. Или вы рассчитываете, что все плагины будут переписаны на LUA?

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 11 times
Contact:

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

Post by NightRoman » Mon 01 Oct, 2012 12:38

Skirda wrote:А смысл? Ты в луо-макросе можешь написать func...
И да (часто), и нет (редко, если сложный код или просло легче в плагине реализовать и поддерживать). Но с Луа новый пласт возможностей появляется по идее по поводу вызовов кода из плагинов (и наоборот даже можно, если не ошибаюсь, из плугов вызывать функи из скриптов, в теории, продвинутую кастомизацию можно выносить в скрипты).

Но прав Shmuel, надо переход завершить полностью с минимумом новых фич, иначе будет сложней разбираться что не работает из-за чего.

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

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

Post by John Doe » Mon 28 Jan, 2013 19:07

Shmuel wrote:Plugin.Call как раз добавить не проблема.
Было бы неплохо.
Ну а 0000466: Расширение макроязыка плагинами в принципе возможно реализовать?
В смысле сделать доступной в макросах функцию m2l.Convert()

Shmuel
Posts: 5709
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 201 times

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

Post by Shmuel » Mon 28 Jan, 2013 19:44

John Doe wrote:Ну а 0000466: Расширение макроязыка плагинами в принципе возможно реализовать?
В смысле сделать доступной в макросах функцию m2l.Convert()
Plugin.Call позволяет плагинам добавлять произвольные функции. Тот же синус, например, который всегда фигурирует в дискуссиях на эту тему.

Shmuel
Posts: 5709
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 201 times

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

Post by Shmuel » Mon 28 Jan, 2013 19:59

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

User avatar
zg
zero-gravity
Posts: 5540
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 85 times
Contact:

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

Post by zg » Mon 28 Jan, 2013 20:30

John Doe wrote:
Shmuel wrote:В Lua эта корявость легко преодолима: делается модуль, а в нём красивые обёртки для подобных функций.
Это безусловно решает проблему (хотя придётся в каждом макросе подключать модуль).
Другие варианты реализации не рассматриваются?
плагин может выполнить макрос:

Code: Select all

_G.sin=function(arg)
  return Plugin.Call("887631b9-49cc-415f-be22-d6b07510510d","Sin",arg)
end

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

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

Post by John Doe » Mon 28 Jan, 2013 20:34

Собственно такой lua файл можно просто положить к скриптам, и при загрузке макросов код выполнится.
Верно?

Shmuel
Posts: 5709
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 201 times

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

Post by Shmuel » Mon 28 Jan, 2013 21:06

John Doe wrote:Собственно такой lua файл можно просто положить к скриптам, и при загрузке макросов код выполнится.
Верно?
Верно.
John Doe wrote:Да в общем необходимости нет.
Ну раз не надо, делать не буду.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

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

Post by Max Rusov » Mon 28 Jan, 2013 21:47

zg wrote:плагин может выполнить макрос
Для этого он должен быть preload

User avatar
zg
zero-gravity
Posts: 5540
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 85 times
Contact:

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

Post by zg » Mon 28 Jan, 2013 22:06

Max Rusov wrote:
zg wrote:плагин может выполнить макрос
Для этого он должен быть preload
и?

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

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

Post by Max Rusov » Mon 28 Jan, 2013 22:33

zg wrote:и?
Это не всегда удобно. Предполагалось, что ProcessMacroFunc не требует, чтобы плагин был preload.

User avatar
zg
zero-gravity
Posts: 5540
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 85 times
Contact:

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

Post by zg » Mon 28 Jan, 2013 22:52

Max Rusov wrote:Это не всегда удобно.
я ни где не писал, что это всегда удобно. это был один из примеров, как при желании можно сделать.

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

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

Post by John Doe » Mon 25 Feb, 2013 14:21

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: 5709
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 201 times

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

Post by Shmuel » Mon 25 Feb, 2013 14:45

John Doe wrote:А ведь dll плагина наверно может непосредственно содержать Lua модуль?
Если действие функции не связано с фаром (как в примере с синусом), то это предпочтительнее, т.к. позволит использовать предоставленные функции без фара, в любом Lua-скрипте.
Предпочитаю держать Lua-модули общего назначения отдельно от плагинов Фара. Если надо, они вызываются из плагинов с помощью 'require'.

Post Reply

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