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

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 12531
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 235 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: 12531
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 235 times

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

Post by John Doe » Mon 11 Mar, 2013 11:31

Latest post of the previous page:

Какие преимущества перед макросом могут сейчас быть у скрипта, оформленного как LuaFAR плагин? например

Update: ещё одна тема: http://forum.farmanager.com/viewtopic.php?f=15&t=9024

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

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

Post by Shmuel » Mon 11 Mar, 2013 11:52

John Doe wrote:Какие преимущества перед макросом могут сейчас быть у скрипта, оформленного как LuaFAR плагин? например
1. Независимость от системы макросов / плагина LuaMacro.
2. Возможность создавать панельные плагины.
3. Доступ к меню плагинов и меню конфигурации плагинов. (уже доступно и макросам)

Линки так плохо выделяются, что я не сразу понял, что "например" - это линк.
LF_FIN как раз легко реализуется макросом: http://forum.farmanager.com/viewtopic.php?f=60&t=7864
Last edited by John Doe on Fri 20 Jun, 2014 15:41, edited 3 times in total.

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

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

Post by John Doe » Mon 11 Mar, 2013 12:00

Shmuel wrote:1. Независимость от системы макросов / плагина LuaMacro.
А когда может понадобиться такая независимость, учитывая что LuaMacro присутствует в дистрибутиве?
Или система макросов накладывает какие-то ограничения?

И не нашёл где взять. Ни в теме, ни на плагринге нет.

На github только исходники

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

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

Post by Shmuel » Mon 11 Mar, 2013 12:10

John Doe wrote:
Shmuel wrote:1. Независимость от системы макросов / плагина LuaMacro.
А когда может понадобиться такая независимость, учитывая что LuaMacro присутствует в дистрибутиве?
Или система макросов накладывает какие-то ограничения?

И не нашёл где взять. Ни в теме, ни на плагринге нет.

На github только исходники
Насчёт независимости - трудно сходу ответить небанально. Но думаю, что понадобиться может.
А LuaFAR уже давно не на github, а в Far SVN.

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

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

Post by John Doe » Mon 11 Mar, 2013 12:23

Судя по тому, что doc и examples только на github я подумал что это основное место.
Но сейчас вижу, что тот репозиторий давно не обновлялся, и всё на farmanager.com

Кажется когда-то в дистрибутиве была некая универсальная dll (generic plugin)?

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

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

Post by Shmuel » Mon 11 Mar, 2013 12:27

John Doe wrote:Кажется когда-то в дистрибутиве была некая универсальная dll (generic plugin)?
Generic plugin на месте - это файл luaplug.c. Он используется при сборке luamacro.dll - можете взять это как образец.

P.S. Если вы не хотите ничего собирать - возьмите luamacro.dll - он тоже "generic" и переименуйте в <plugname>.dll на ваш выбор. Далее создайте файлы <plugname>.lua и _globalinfo.lua.

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

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

Post by John Doe » Mon 11 Mar, 2013 12:41

Понятно, я думал что можно не собирать, а просто использовать одну и ту же dll для разных плагинов (переименовывая, и дополняя соответствующим скриптом)
Shmuel wrote:P.S. Если вы не хотите ничего собирать - возьмите luamacro.dll - он тоже "generic" и переименуйте в <plugname>.dll на ваш выбор. Далее создайте файлы <plugname>.lua и _globalinfo.lua.
Так и собирался, но насторожило что например fin.dll в 3 раза меньше luamacro.dll.
Видимо они просто по-разному собирались, и у luamacro нет зависимости от msvcrt.dll

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

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

Post by John Doe » Mon 11 Mar, 2013 15:44

Shmuel wrote:LF_FIN как раз легко реализуется макросом:
Вначале показалось что не работает.
На самом деле всё в порядке, просто удаление точек не предусмотрено: local Pattern = "%s+$"

Чтобы было как в исходном плагине можно сделать local Pattern = "[%s%.]+$"

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

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

Post by John Doe » Mon 11 Mar, 2013 18:24

John Doe wrote:Чтобы было как в исходном плагине можно сделать local Pattern = "[%s%.]+$"
Ан нет, так съедается и ".."
Пришлось добавить ещё условие if not FarDialogItem[10]:find("^%.+$")

2useven10
Posts: 3983
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 173 times

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

Post by 2useven10 » Mon 11 Mar, 2013 18:48

что будет с

Code: Select all

'..\name   '
?

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

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

Post by John Doe » Mon 11 Mar, 2013 19:19

'..\name'
А если вы имеете ввиду прямо в кавычках, то ничего не будет, так и останется.

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

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

Post by John Doe » Mon 11 Mar, 2013 19:46

На самом деле может ещё попасться 'dir/..'
Надо тоже учитывать...

Например так: if not regex.find(FarDialogItem[10],[[(^|[\/])\.\.?$]])

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

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

Post by John Doe » Mon 18 Mar, 2013 13:05

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

Code: Select all

result = export.ProcessViewerEvent (ViewerID, Event, Param)

Parameters:
  ViewerID: integer
  Event:    integer
  Param:    nil

Returns:
  result:   integer
Настораживает Param: nil
Для чего он тогда?

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

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

Post by Shmuel » Mon 18 Mar, 2013 17:37

Для напоминания :)
Смотрите changelog 2439.2.
Неплохо бы привести Энциклопедию в соответствие с чейнжлогом.

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

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

Post by John Doe » Mon 18 Mar, 2013 17:55

Теперь ясно. Значит макро-функции ViewerEvent реально получают 2 параметра, а не 3

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

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

Post by Smitis » Mon 18 Mar, 2013 18:34

А вот тоже вопрос по параметрам
result = far.Message (Msg, [Title], [Buttons], [Flags], [HelpTopic], [Id])
последний параметр задействован или нет? А то при любом значении id диалога всегда равен id LuaMacro
Разум когда-нибудь победит.

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

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

Post by Shmuel » Mon 18 Mar, 2013 18:39

Видимо, надо передавать бинарный Id, а не строковый. Hint: win.Uuid.

Post Reply

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