View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002365 | Far Manager | Macro | public | 2013-04-10 11:46 | 2013-05-23 11:49 |
Reporter | Smitis | Assigned To | shmuel | ||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0002365: Передавать макросам полный путь к файлу скрипта при загрузке | ||||
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 | ||||
Tags | No tags attached. | ||||
Build | 3422 | ||||
|
Ещё один вариант решения, в utils.lua заменить {Macro=AddMacro,Event=AddEvent,NoMacro=DummyFunc,NoEvent=DummyFunc} на {Macro=AddMacro,Event=AddEvent,NoMacro=DummyFunc,NoEvent=DummyFunc,arg={[0]=FullPath}} Тогда скрипт получит arg[0] содержащий полный путь к скрипту. При этом в старых макросах ничего не ломается. |
|
Вижу, что этот вопрос у вас прямо больное место. Обещаю, что в текущем месяце это будет. Дальнейшие подстёгивания ничего не ускорят. |
|
Просто уже использую, но приходится патчить utils.lua |
|
А такое решение (уже известное вам) не устроит: local MacroFileName = debug.getinfo(1,"S").source:match("^@(.+)") ? |
|
Имхо если признать что использование скриптом собственного имени (и пути) это нормальная практика, то это имя должно быть доступно обычными средствами, без использования debug. |
|
Лично меня это устраивает. Хотя, имхо, это какой-то обходной путь. |
|
Сделал в соответствии с исходным предложением, то-есть: local ok, msg = pcall(f, FullPath) |
|
сенкс |
Date Modified | Username | Field | Change |
---|---|---|---|
2013-04-10 11:46 | Smitis | New Issue | |
2013-05-01 09:57 | Smitis | Note Added: 0010937 | |
2013-05-01 15:13 | shmuel | Note Added: 0010938 | |
2013-05-01 16:20 | Smitis | Note Added: 0010939 | |
2013-05-22 19:51 | shmuel | Note Added: 0011002 | |
2013-05-23 06:59 | JohnDoe | Note Added: 0011003 | |
2013-05-23 07:30 | Smitis | Note Added: 0011005 | |
2013-05-23 09:23 | shmuel | Note Added: 0011006 | |
2013-05-23 09:23 | shmuel | Assigned To | => shmuel |
2013-05-23 09:23 | shmuel | Status | new => feedback |
2013-05-23 11:28 | Smitis | Note Added: 0011009 | |
2013-05-23 11:28 | Smitis | Status | feedback => assigned |
2013-05-23 11:49 | shmuel | Build | => 3422 |
2013-05-23 11:49 | shmuel | Status | assigned => closed |
2013-05-23 11:49 | shmuel | Resolution | open => fixed |
2013-05-23 11:49 | shmuel | Fixed in Version | => 3.0 |