View Issue Details

IDProjectCategoryView StatusLast Update
0002365Far ManagerMacropublic2013-05-23 15:49
ReporterSmitisAssigned Toshmuel 
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Product Version3.0 
Target VersionFixed in Version3.0 
Summary0002365: Передавать макросам полный путь к файлу скрипта при загрузке
DescriptionИз макроса невозможно получить полный путь к файлу lua, из которого макрос загружается. Наличие такой информации облегчило бы использование вместе с макросом сопровождающих его дополнительных файлов - файлов данных, конфигураций, языкавых файлов и т.п. Всё можно было бы сложить в одну папку, путь к которой макрос определит самостоятельно.
Steps To ReproduceНа момент загрузки макроса, полный путь к нему уже известен. Это переменная FullPath в функции LoadMacros файла utils.lua плагина LuaMacro. Передавать FullPath можно первым параметром в вызове pcall там же:
local ok, msg = pcall(f,FullPath)
вместо
local ok, msg = pcall(f)
При загрузке скрипт с макросом получит путь первым параметром.
Сохранить можно так:
local FullPath = ...
Далее с ним можно делать всё что угодно - выделить путь, имя файла и т.д. и использовать их из макросов, событий, непосредственно из скрипта.
Additional InformationОбсуждение http://forum.farmanager.com/viewtopic.php?f=15&t=7881
TagsNo tags attached.
Build3422

Activities

Smitis

2013-05-01 13:57

reporter   bugnote:0010937

Ещё один вариант решения, в utils.lua заменить
{Macro=AddMacro,Event=AddEvent,NoMacro=DummyFunc,NoEvent=DummyFunc}
на
{Macro=AddMacro,Event=AddEvent,NoMacro=DummyFunc,NoEvent=DummyFunc,arg={[0]=FullPath}}
Тогда скрипт получит arg[0] содержащий полный путь к скрипту.
При этом в старых макросах ничего не ломается.

shmuel

2013-05-01 19:13

developer   bugnote:0010938

Вижу, что этот вопрос у вас прямо больное место. Обещаю, что в текущем месяце это будет. Дальнейшие подстёгивания ничего не ускорят.

Smitis

2013-05-01 20:20

reporter   bugnote:0010939

Просто уже использую, но приходится патчить utils.lua

shmuel

2013-05-22 23:51

developer   bugnote:0011002

А такое решение (уже известное вам) не устроит:
  local MacroFileName = debug.getinfo(1,"S").source:match("^@(.+)") ?

JohnDoe

2013-05-23 10:59

updater   bugnote:0011003

Имхо если признать что использование скриптом собственного имени (и пути) это нормальная практика, то это имя должно быть доступно обычными средствами, без использования debug.

Smitis

2013-05-23 11:30

reporter   bugnote:0011005

Лично меня это устраивает. Хотя, имхо, это какой-то обходной путь.

shmuel

2013-05-23 13:23

developer   bugnote:0011006

Сделал в соответствии с исходным предложением, то-есть:
    local ok, msg = pcall(f, FullPath)

Smitis

2013-05-23 15:28

reporter   bugnote:0011009

сенкс

Issue History

Date Modified Username Field Change
2013-04-10 15:46 Smitis New Issue
2013-05-01 13:57 Smitis Note Added: 0010937
2013-05-01 19:13 shmuel Note Added: 0010938
2013-05-01 20:20 Smitis Note Added: 0010939
2013-05-22 23:51 shmuel Note Added: 0011002
2013-05-23 10:59 JohnDoe Note Added: 0011003
2013-05-23 11:30 Smitis Note Added: 0011005
2013-05-23 13:23 shmuel Note Added: 0011006
2013-05-23 13:23 shmuel Assigned To => shmuel
2013-05-23 13:23 shmuel Status new => feedback
2013-05-23 15:28 Smitis Note Added: 0011009
2013-05-23 15:28 Smitis Status feedback => assigned
2013-05-23 15:49 shmuel Build => 3422
2013-05-23 15:49 shmuel Status assigned => closed
2013-05-23 15:49 shmuel Resolution open => fixed
2013-05-23 15:49 shmuel Fixed in Version => 3.0