Вызов функции luaMacro из Lua плагина

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
gotar
Posts: 316
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times

Вызов функции luaMacro из Lua плагина

Post by gotar » Tue 23 Sep, 2014 07:13

Чтобы вызвать функцию, заданную в макросах, с одним строковым параметром можно так: far.MacroExecute("func(\""..str.."\")")
А как вызвать функцию с несколькими, не обязательно строковыми параметрами? Или более общий вопрос: как получить доступ к _G макросов из Lua плагина?

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

Вызов функции luaMacro из Lua плагина

Post by John Doe » Tue 23 Sep, 2014 07:53

можно так: far.MacroExecute("func(\""..str.."\")")
Так не нужно.
вызвать функцию с несколькими, не обязательно строковыми параметрами?
В мануале есть.
Таблицы и функции так конечно не передать.
Или более общий вопрос: как получить доступ к _G макросов из Lua плагина?
Никак Смотря что понимать под "доступом".

Shmuel
Posts: 5834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 213 times

Re: Вызов функции luaMacro из Lua плагина

Post by Shmuel » Tue 23 Sep, 2014 08:21

gotar wrote:Чтобы вызвать функцию, заданную в макросах, с одним строковым параметром можно так: far.MacroExecute("func(\""..str.."\")")
А как вызвать функцию с несколькими, не обязательно строковыми параметрами? Или более общий вопрос: как получить доступ к _G макросов из Lua плагина?
far.MacroExecute может исполнять любой код в пространстве LuaMacro, за исключением т.н. "ограниченных" функций, перечисленных в мануале. Доступ к _G - практически полный, ограничения только по передаваемым и возвращаемым типам данных, что подробно описано в мануале.

P.S. Пример вызова ф-ции с несколькими, необязательно строковыми параметрами:

Code: Select all

results = far.MacroExecute [[ return mf.strpad("Foo", 10, "*", 2) ]]

gotar
Posts: 316
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times

Re: Вызов функции luaMacro из Lua плагина

Post by gotar » Tue 23 Sep, 2014 10:47

Могут ли в параметрах функции, вызываемой через far.MacroExecute быть переменные моего плагина или только константы как в Вашем примере? В таблице возвращаемой far.MacroExecute могут быть функции? В Encyclopedia\luafar_manual.chm::/488.html ничего не сказано об ограничениях на типы возвращаемых значений

Post Reply

Return to “Нужна помощь”