LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Wed 29 Jul, 2009 21:41
by John Doe
Библиотека LuaFAR делает возможным написание плагинов на языке Lua, предоставляя им адаптированную версию FAR API.
Входит в состав FAR manager (начиная с 3.0 build 2851), и доступна для использования в макросах.
Справка по функциям библиотеки — luafar_manual.chm (в дистрибутиве, папка Encyclopedia).
Мануал весьма лаконичен, предполагает что вы ориентируетесь в FAR Plugins API (FarEncyclopedia.ru.chm, в дистрибутиве)
Дополнения к мануалу:
far.Menu: в описании приведена ссылка на статью Энциклопедии Виртуальные коды клавиш. Однако не все перечисленные там клавиши на самом деле обрабатываются фаром. В частности, в качестве BreakKey не могут выступать кнопки мыши.
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Thu 24 Dec, 2015 05:08
by aflexus
Latest post of the previous page:
Как из меню фара при помощи lua запустить консольное приложение с повышенными правами? Что-то на подобие sudo, но чтобы можно было использовать переменные lua
LuaFAR — библиотека для создания плагинов на языке Lua
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Sat 26 Dec, 2015 09:51
by aflexus
2useven10 wrote: попробуйте плагин Sudo.
Плагин давно пользую. Прекрасно работает. Но необходимо запустить процесс при помощи lua из пользовательского меню. После префикса lua: префикс sudo: уже не работает.
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Sat 26 Dec, 2015 14:18
by cmd.exe
Из юзер меню возвожно запускать внешние макросы по префиксу.
А что вам мешает по макроапи обратится к библиотеке? Можно и по плагин апи через ffi.
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Sat 26 Dec, 2015 22:25
by Smitis
aflexus wrote:После префикса lua: префикс sudo: уже не работает.
Plugin.Command не оно?
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Sun 27 Dec, 2015 17:00
by aflexus
Smitis wrote: Plugin.Command не оно?
Как? Можно какой-либо пример, плиз? В добавок, у Sudo даже настроек нет, как узнать его ID? А что если мне нужна функциональность с запросом. К примеру:
set FW_Port=!?Enter Port?!
netsh advfirewall firewall add rule name="Allow in TCP port %FW_Port%" protocol=TCP localport=%FW_Port% action=allow dir=IN
Теперь это не работает по причине UAC плюс сам sudo не подхватывает установленную переменную через set. А целиком через lua это можно реализовать? Плюс вызвать процесс с повышенными привилегиями?
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Mon 28 Dec, 2015 07:48
by Smitis
Как-то так lua:local port=far.InputBox(nil,"Enter port","") if port then Plugin.Command("C5DA0A14-FFAF-453E-9C3A-10B4C0FC0804",('sudo:netsh advfirewall firewall add rule name="Allow in TCP port %s" protocol=TCP localport=%s action=allow dir=IN'):format(port,port)) end
Я sudo не использую, показываю сам принцип, как подобное можно сделать через пользовательское меню или комстроку.
Если строка получается слишком сложной, делайте как здесь http://forum.farmanager.com/viewtopic.p ... ss#p132691
Т.е. создайте свою глобальную функцию, а лучше таблицу с функцией, чтобы избежать случайного конфликта имён, типа
_G.aflexus = aflexus or {} -- Ваша таблица
aflexus.netsh_advfirewall = function() -- Ваша функция
local port=far.InputBox(nil,"Enter port","")
if port then
Plugin.Command("C5DA0A14-FFAF-453E-9C3A-10B4C0FC0804",('sudo:netsh advfirewall firewall add rule name="Allow in TCP port %s" protocol=TCP localport=%s action=allow dir=IN'):format(port,port))
end
end
А в меню вставляйте lua:aflexus.netsh_advfirewall()
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Mon 28 Dec, 2015 08:34
by aflexus
Smitis, О!!! Как раз то, что мне было нужно! Спасибо огромное!
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Mon 08 Feb, 2016 08:01
by Smitis
Функция GetRegKey на ФАР x86 на Windows x64 работает с редиректом WOW64 (или как там он правильно называется), т.е., например, вместо HKLM\SOFTWARE читает из HKLM\SOFTWARE\Wow6432Node
Остальные функции для работы с реестром не проверял, подозреваю, что там может быть также. Это как-то лечится? Ведь сам ФАР с той же файловой системой работает нормально.
LuaFAR — библиотека для создания плагинов на языке Lua
╔════════════════════════════════════════ Error ═════════════════════════════════════════╗
║ C:\DISTRIB\SHELLS\FAR\Far30b4539.x86.20160205\Plugins\LuaMacro\LuaMacro.dll: ║
║ ...AR\Far30b4539.x86.20160205\Plugins\LuaMacro\LuaMacro.lua:72: attempt to yield ║
║ across C-call boundary ║
║ stack traceback: ║
║ [C]: in function 'co_yield' ║
║ ...AR\Far30b4539.x86.20160205\Plugins\LuaMacro\LuaMacro.lua:72: in function 'Keys' ║
║ ...0b4539.x86.20160205\Profile\Macros\scripts\test_Keys.lua:3: in function 'action' ║
║ ...AR\Far30b4539.x86.20160205\Plugins\LuaMacro\LuaMacro.lua:365: in function <... ║
║ AR\Far30b4539.x86.20160205\Plugins\LuaMacro\LuaMacro.lua:326> ║
╟────────────────────────────────────────────────────────────────────────────────────────╢
║ { OK } ║
╚════════════════════════════════════════════════════════════════════════════════════════╝
Следует либо исправить ошибку, либо, если это так и задумано, явно прописать в документации, что в CommandLine не работает Keys и, видимо, остальные функции, на использование которых есть ограничения.
Проверено на Far 3.0.4539 x86 под Windows XP - профиль нулевой, других скриптов нет, из плагинов только LuaMacro.
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Thu 11 Feb, 2016 07:44
by Shmuel
IgorZ wrote: Вероятно, обнаружена ошибка в CommandLine. Или в документации.
Скорее неполнота документации.
Общее правило таково, что т.н. "функции с ограничением в использовании" могут работать только из функции action макроса. Все прочие варианты пролетают (Event, CommandLine, MenuItem, condition).