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

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

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

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

Post by Shmuel »

Latest post of the previous page:

Для пользующихся LuaFAR'ом - приложен клон плагина Fix Incorrect Names.
Помимо работы "по прямому назначению", может служить наглядным примером для написания простого плагина на LuaFAR.

Update: плагин переделан на макрос LuaMacro: http://forum.farmanager.com/viewtopic.p ... 77#p130177
Attachments
fin-3.0.0-x86.7z
(4.37 KiB) Downloaded 215 times
User avatar
Kerberos464
Posts: 1239
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 19 times
Been thanked: 1 time

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

Post by Kerberos464 »

из-за того, что файлы lua5.1.dll и luafar3.dll имеют одинаковые имена в фаре обеих битностей, не получится держать оба фара в одной папке. обидно :(
16.09.2012 14:35:28 +0200 - build 2799 - все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 - build 2851 - все макросы перестали работать.
31.02.2029 25:61:61 +0200 - build 6666 - весь фар перестал работать.
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

Kerberos464 wrote:из-за того, что файлы lua5.1.dll и luafar3.dll имеют одинаковые имена в фаре обеих битностей, не получится держать оба фара в одной папке. обидно :(
Попробуйте положить эти файлы на %PATH%, в разные папки для x86 и x64, может сработает.
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 12 times

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

Post by Max Rusov »

А где можно посмотреть, как работать с far.CreateSettings? Особенно интересует Enum.
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

Max Rusov wrote:А где можно посмотреть, как работать с far.CreateSettings? Особенно интересует Enum.
Ну естественно в мануале LuaFAR. Описания там очень краткие, но если что - объясню.
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 12 times

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

Post by Max Rusov »

Shmuel wrote:Ну естественно в мануале LuaFAR. Описания там очень краткие, но если что - объясню.
Я, конечно, извиняюсь, но где этот мануал брать?
2useven10
Posts: 4118
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 195 times

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

Post by 2useven10 »

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

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

Post by Max Rusov »

Code: Select all

F = io.open("temp.txt", "w+")
F:write(Editor.SelValue)
F:close()
В результате исполнения фрагмент текста со стандартными разделителями CR LF превращается в файл с разделителями CR CR LF. Непорядок.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 155 times
Contact:

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

Post by zg »

Max Rusov wrote:

Code: Select all

F = io.open("temp.txt", "w+")
F:write(Editor.SelValue)
F:close() 
В результате исполнения фрагмент текста со стандартными разделителями CR LF превращается в файл с разделителями CR CR LF. Непорядок.
"w+b". и в принципе это стандартное поведение msvcrt.
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 12 times

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

Post by Max Rusov »

Да, так работает, спасибо.
User avatar
DAtaMan
Posts: 262
Joined: Wed 24 Jun, 2009 10:01
Location: не отсюда

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

Post by DAtaMan »

Будут ли приниматься виши (и патчи) по расширению стандартной библиотеки Win?
В частности, хотелось бы read/write таблиц переменных среды и окон Windows.
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

DAtaMan wrote:Будут ли приниматься виши (и патчи) по расширению стандартной библиотеки Win?
В частности, хотелось бы read/write таблиц переменных среды и окон Windows.
Переменные среды: win.GetEnv и win.SetEnv - это не то?

Подход "в стиле Lua" - это отдельные внешние специализированные библиотеки. Согласно этому подходу, библиотеки win, unicode и bit64 тоже должны были бы быть внешними, а в LuaFAR должно было бы быть только Far API, как следует из названия. При этом подходе в память грузится только то, чем пользуешься.

В Интернете лежит несколько готовых библиотек с Windows API, может быть правильнее будет воспользоваться ими? Иначе, боюсь, библиотека LuaFAR может раздуться сильно, чего бы не хотелось.

Впрочем, поскольку я уже не являюсь единоличным хозяином данной библиотеки, моё мнение по данному вопросу не является определяющим.

Ещё один вариант, о котором уже упоминалось, - библиотека Alien, позволяющая вызывать функции внешних DLL прямо из Lua.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 155 times
Contact:

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

Post by zg »

вопрос включения чего-либо — вопрос, на сколько это что-либо широко востребовано. если что-то нужно трём пользователям — проще воспользоваться либо alien/luajit, либо написать свой модуль, который к готовой функциональности реально пишется за пол часа.
User avatar
DAtaMan
Posts: 262
Joined: Wed 24 Jun, 2009 10:01
Location: не отсюда

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

Post by DAtaMan »

Shmuel wrote:Переменные среды: win.GetEnv и win.SetEnv - это не то?
Нет, поскольку необходимо знать имя переменной.
А желательна таблица со всеми переменными.
В Интернете лежит несколько готовых библиотек с Windows API
Ещё один вариант, о котором уже упоминалось, - библиотека Alien, позволяющая вызывать функции внешних DLL прямо из Lua.
Да, но когда есть "из коробки", то "рядовым" пользователям проще. :)
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

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

Post by Shmuel »

DAtaMan wrote:
Shmuel wrote:Переменные среды: win.GetEnv и win.SetEnv - это не то?
Нет, поскольку необходимо знать имя переменной.
А желательна таблица со всеми переменными.

Code: Select all

function GetEnvTable()
  local fp=io.popen("set")
  local s = fp:read("*all")
  fp:close()
  local t = {}
  for k,v in s:gmatch("([^=\n]+)=([^\n]+)") do t[k]=v end
  return t
end
User avatar
DAtaMan
Posts: 262
Joined: Wed 24 Jun, 2009 10:01
Location: не отсюда

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

Post by DAtaMan »

Спасибо, конечно.
А со списком окон с атрибутами так же "просто"? :)
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©
Post Reply

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