LuaFAR — библиотека для создания плагинов на языке Lua

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

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Библиотека LuaFAR делает возможным написание плагинов на языке Lua, предоставляя им адаптированную версию FAR API.

Входит в состав FAR manager (начиная с 3.0 build 2851), и доступна для использования в макросах.

Справка по функциям библиотеки — luafar_manual.chm (в дистрибутиве, папка Encyclopedia).
Мануал весьма лаконичен, предполагает что вы ориентируетесь в FAR Plugins API (FarEncyclopedia.ru.chm, в дистрибутиве)

Дополнения к мануалу:

Полезное по теме: См. также:
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel »

Latest post of the previous page:

John Doe wrote: Как же вы это делате?
В то время, когда это делалось в LuaFAR, ещё не было соответствующих статей в энциклопедии, всё делалось по чейнжлогу. См., например, комментарий к билду 1998. Вообще всё это нуждается в тестировании.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Shmuel wrote: Вообще всё это нуждается в тестировании
Как раз занимаюсь.
Что касается description, то установить допустим можно, а вот как его обратно получить я не нашёл...

Похоже description не устанавливается, сторонние программы его не видят.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Согласно Энциклопедии для DN_HOTKEY в Param2 передаётся указатель на INPUT_RECORD.
Однако y меня почему-то приходит число:

Code: Select all

local F = far.Flags
Event { group="DialogEvent";
  action=function(Event,param)
    if param.Msg==F.DN_HOTKEY and Event==F.DE_DLGPROCEND then
      far.Show(param.Param2)
    end
  end
}
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel »

Упущено при ломке API. Исправлю.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Возможно ли как-то реализовать взаимодействия между Lua-плагинами?
Типа MCTL_EXECSTRING, но с возможностью передать (и получить обратно) Lua-объекты (функции, таблицы, ...)?
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel »

John Doe wrote: Возможно ли как-то реализовать взаимодействия между Lua-плагинами?
Возможно, но на данный момент такого механизма нет.

На данный момент можно использовать far.MacroExecute в сочетании с Plugin.Call. Это общий механизм, не специализированный, но он может быть использован для межплагинного взаимодействия.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Спасибо.
К сожалению таким образом невозможно передать луа-объекты.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

А нет ли в обозримых планах реализации адаптера lua-плагинов (вместо generic plugin)?
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel »

Планов нет. Честно говоря, мне всего хватает уже, а если появится задача, оправдывающая трудозатраты, можно будет взвесить.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Shmuel wrote:если появится задача, оправдывающая трудозатраты, можно будет взвесить.
А какие тут могут быть задачи.
Адаптер это задача сам по себе, целью которой является избавление от лишних прокладок, которые по меньшей мере создают препятствия для написания плагинов: ведь чтобы получить dll со всеми необходимыми для той или иной задачи экспортами нужно ещё разбираться со средой компиляции.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel »

John Doe wrote: А какие тут могут быть задачи.
Как я уже сказал выше, мне всего хватает на данный момент.
John Doe wrote: ведь чтобы получить dll со всеми необходимыми для той или иной задачи экспортами нужно ещё разбираться со средой компиляции.
А чего там разбираться, когда всё уже утряслось годы назад. Когда я начинаю новый плагин, на это уходит не более 5 минут.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Shmuel wrote: Как я уже сказал выше, мне всего хватает на данный момент.
С этим не поспоришь)
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

far.InputRecordToName в случае ошибки возвращает символ с кодом 1:

Code: Select all

lua:=far.InputRecordToName{}
Или это проблема FarInputRecordToName?

Update: http://bugs.farmanager.com/view.php?id=2950
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel »

John Doe wrote:far.InputRecordToName в случае ошибки возвращает символ с кодом 1:
Это то, что приходит от Far.
User avatar
John Doe
Бюрократ
Posts: 13867
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe »

Shmuel wrote: На данный момент можно использовать far.MacroExecute в сочетании с Plugin.Call. Это общий механизм, не специализированный, но он может быть использован для межплагинного взаимодействия.
Помимо прочего, "Plugin.Call" невозможно вызвать из обработчика события.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel »

John Doe wrote: "Plugin.Call" невозможно вызвать из обработчика события.
Используйте Plugin.SyncCall.
Post Reply

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