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

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

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

Post by John Doe » Wed 29 Jul, 2009 21:41

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

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

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

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

Полезное по теме: См. также:

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

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

Post by John Doe » Tue 26 Mar, 2013 18:29

Latest post of the previous page:

http://forum.farmanager.com/viewforum.php?f=55

Shmuel
Posts: 5038
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Post by Shmuel » Tue 26 Mar, 2013 18:56

Smitis wrote:Но LF Search вроде как не "generic plugin" (хотя использует Lua)?

Я взял за основу LuaMacro.dll, как описывалось парой страниц назад... Пытаюсь сделать панельный плагин. Но очень мало информации. Приходится действовать методом "тыка".
1. lfsearch_e.dll - он generic, но содержит внутри Lua-код, так что для экспериментов не подойдёт.

2. LuaMacro.dll из дистрибутива Фара как основа панельного плагина не годится. Чтобы годился, нужно добавить в мейкфайл определения необходимых экспортов к уже имеющимся там, затем пересобрать.

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

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

Post by John Doe » Tue 26 Mar, 2013 19:00

Shmuel wrote:1. lfsearch_e.dll - он generic, но содержит внутри Lua-код, так что для экспериментов не подойдёт.
Вроде бы где-то на форуме встречал упоминание о том, что если подложить рядом одноимённый скрипт, то он подхватится вместо embedded?

Shmuel
Posts: 5038
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Post by Shmuel » Tue 26 Mar, 2013 19:06

Так было когда-то, потом я это изменил (хотя лазейка осталась). Но зачем это, по-моему это лишнее.
А лазейка простая - переименовать dll.

Smitis
Posts: 1440
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 12 times
Been thanked: 22 times
Contact:

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

Post by Smitis » Tue 26 Mar, 2013 19:56

Shmuel wrote:А лазейка простая - переименовать dll.
На крайний случай, буду иметь ввиду.
А так, перекомпилировал, завтра опять мучить буду, пока время между проектами есть :)
Разум когда-нибудь победит.

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

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

Post by John Doe » Sat 30 Mar, 2013 22:01

far.Menu
BreakKey="C+TAB"
BreakKey="CS+TAB"

Не срабатывают.

Code: Select all

lm:post far.Menu({},{},{{BreakKey="TAB"},{BreakKey="C+TAB"},{BreakKey="CS+TAB"}})
В мануалах не нашёл упоминания о таком ограничении.
Баг?

Shmuel
Posts: 5038
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Post by Shmuel » Sat 30 Mar, 2013 22:21

John Doe wrote:В мануалах не нашёл упоминания о таком ограничении.
Баг?
Баг Фара, сломалось в 2897. На мантис, или связаться с lort.

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

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

Post by John Doe » Sat 30 Mar, 2013 22:22

AdvControl в случае ошибки возвращает 0.

Code: Select all

lm:post print(far.AdvControl (far.Flags.ACTL_GETWINDOWINFO,-2))
На это есть особые причины?
Если нет, то удобнее было бы nil

Shmuel
Posts: 5038
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Post by Shmuel » Sat 30 Mar, 2013 22:32

Сделаю сегодня.

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

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

Post by John Doe » Sun 31 Mar, 2013 16:44

Shmuel wrote:Баг Фара, сломалось в 2897. На мантис, или связаться с lort.
mantis 2353

Ещё не получилось использовать LBUTTON.
Или это и не должно работать?
Поиск по форуму находит подобную жалобу четырёхлетней давности.

Shmuel
Posts: 5038
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

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

Post by Shmuel » Sun 31 Mar, 2013 17:08

LuaFAR не производит выборочной обработки Break Keys. Следовательно - Фар. Можно прощёлкать неработающие клавиши и добавить к мантис 2353. RBUTTON тоже вроде не работает.

User avatar
DrKnS
Posts: 4530
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 113 times
Contact:

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

Post by DrKnS » Sun 31 Mar, 2013 17:56

John Doe wrote:Или это и не должно работать?
Не должно.

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

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

Post by John Doe » Sun 31 Mar, 2013 18:25

Значит ли это, что невозможно использовать мышиные нажатия в качестве BreakKeys? В Писании ни слова.

P.S.

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

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

Post by John Doe » Sat 06 Apr, 2013 17:38

Shmuel wrote:
John Doe wrote:Вот это расхождение между 1 и 2 кажется мне неестественным.
API far.Menu угловато, могу согласиться. Но:
1. Вы можете на его основе написать любой мыслимый враппер на Lua, то-есть сконструировать ваше API.
2. На данном этапе API far.Menu меняться не будет.
Остановился пока на таком враппере:
  1. local function MenuEx(Props,Items,bKeys)
  2.  
  3.   local Item,pos = far.Menu(Props,Items,bKeys)
  4.  
  5.   local bk
  6.  
  7.   if Item and Item.BreakKey then bk,Item = Item,Items[pos] end
  8.  
  9.   return Item,pos,bk
  10.  
  11. end

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

Re: Запуск макросов по событиям (build 3157+)

Post by John Doe » Sun 07 Apr, 2013 00:29

hh.exe %FARHOME%\Encyclopedia\luafar_manual.chm::/221.html wrote:

Code: Select all

export.ProcessDialogEvent
...
  If ret is nil or false, then the event processing will continue.
  Otherwise, it is assumed that the plugin has processed the event, and ret
  will then be used as the return value of the dialog event handler.
С true/false понятно.
Но если обработчик события возвращает число отличное от 0, то происходит нечто третье.
Можно увидеть, вставив в FIN строчку do return 1 end.

Что бы это могло значить?

Shmuel
Posts: 5038
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 132 times

Re: Запуск макросов по событиям (build 3157+)

Post by Shmuel » Sun 07 Apr, 2013 10:19

John Doe wrote:
hh.exe %FARHOME%\Encyclopedia\luafar_manual.chm::/221.html wrote:

Code: Select all

export.ProcessDialogEvent
...
  If ret is nil or false, then the event processing will continue.
  Otherwise, it is assumed that the plugin has processed the event, and ret
  will then be used as the return value of the dialog event handler.
С true/false понятно.
Но если обработчик события возвращает число отличное от 0, то происходит нечто третье.
Можно увидеть, вставив в FIN строчку do return 1 end.

Что бы это могло значить?
LuaFAR передаёт число Фару. Дальше - читайте документацию Фара.

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

Re: Запуск макросов по событиям (build 3157+)

Post by John Doe » Sun 07 Apr, 2013 10:28

Не согласен, я ведь процитировал документацию LuaFAR, и там о третьей возможности ни слова.

Если же открыть документацию фара, то там тоже только 2 варианта: 0 или 1

Post Reply

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

Who is online

Users browsing this forum: No registered users and 2 guests