Пример применения
if ({ far.AdvControl("ACTL_GETFARMANAGERVERSION", true) })[4] < 5171 then return end local F = far.Flags local Title ="Demo panel in LuaMacro" local mod = {} mod.Info = { Guid = win.Uuid("715E5E90-DEB9-470A-84CE-7CF8D92A7B05") } local function FileToObject(FileName) FileName = far.ConvertPath(FileName, "CPM_FULL") local fp = io.open(FileName) if fp then local obj = { HostFile=FileName; List={} } for line in fp:lines() do table.insert(obj.List, {FileName=line}) end fp:close() return obj end end function mod.Analyse(Data) return Data.FileName and Data.FileName:sub(-5):lower() == ".abcd" end function mod.Open(OpenFrom, Guid, Item) if OpenFrom == F.OPEN_ANALYSE then return FileToObject(Item.FileName) elseif OpenFrom == F.OPEN_SHORTCUT then return FileToObject(Item.HostFile) elseif OpenFrom == F.OPEN_FINDLIST then -- If we uncomment the line "return {}", then this module will be -- used instead of TmpPanel for displaying search results. ---- return {} end end function mod.GetFindData(object, handle, OpMode) return object.List end function mod.GetOpenPanelInfo(object, handle) return { HostFile = object.HostFile; PanelTitle = Title; StartSortMode = F.SM_UNSORTED; StartSortOrder = 0; ShortcutData = ""; Flags = bit64.bor(F.OPIF_SHORTCUT, F.OPIF_ADDDOTS); } end function mod.SetFindList (object, handle, Items) object.List = Items return true end MenuItem { description = Title; menu = "Plugins"; area = "Shell"; guid = "5E1ECBD6-F6E1-4A02-AC90-DB49DB6E350C"; text = Title; action = function(OpenFrom, Item) return mod, FileToObject(APanel.Current) end; } CommandLine { description = Title; prefixes = "abcd"; action = function(prefix,text) if text then return mod, FileToObject(text); end end; } PanelModule(mod)