test.lua ищется и в %FARPROFILE%\Macros\modules\ и в %FARHOME% и в папке с luamacro и в %FARHOME%\lua.
test.dll ищется только в %FARHOME%.
этому поведению есть какой-то глубокий смысл?
package.path и package.cpath
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: LuaMacro — Lua как язык макросов
Поиск в папке с плагином можно было бы убрать (это работа библиотеки LuaFAR), но пока не убираю, т.к. другие мои плагины зависят от этого, а времени на переделку пока нет. С другой стороны, это вроде никому не должно мешать.zg wrote:этому поведению есть какой-то глубокий смысл?
Любой, кто хочет изменить папки поиска или их порядок, может легко это сделать в любом макрофайле (вне макросов), установив свои значения для package.path и package.cpath.
- zg
- zero-gravity
- Posts: 6038
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: LuaMacro — Lua как язык макросов
не, то как ищется lua меня устраивает. вопрос был, почему dll точно так же не ищется?
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: LuaMacro — Lua как язык макросов
Просто используется package.cpath по умолчанию, который lua5.1.dll устанавливает на папку с exe-файлом (в нашем случае - Far.exe). Мы можем это изменить как угодно - предлагайте.zg wrote:не, то как ищется lua меня устраивает. вопрос был, почему dll точно так же не ищется?
Например, можно добавить в package.cpath папки %farprofile%\Macros\CModules32 и %farprofile%\Macros\CModules64.
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
Нужен официальный способ модификации package.path/cpath
Можно делать это в _macroinit.lua , но не всё так просто как хотелось бы, потому что этот код будет исполняться при каждой перезагрузке (в рамках сессии), соответственно переменные будут расти и расти.
Можно написать функцию, которая прежде чем добавить элемент будет проверять а не добавлен ли он уже.
Или можно сохранять где-то изначальное состояние переменных и работать уже с ним.
Или указывать пути в настройках LuaMacro (или в far.exe.ini?)
В любом случае, хотелось бы иметь один рекомендованый способ, описанный в документации.
Можно делать это в _macroinit.lua , но не всё так просто как хотелось бы, потому что этот код будет исполняться при каждой перезагрузке (в рамках сессии), соответственно переменные будут расти и расти.
Можно написать функцию, которая прежде чем добавить элемент будет проверять а не добавлен ли он уже.
Или можно сохранять где-то изначальное состояние переменных и работать уже с ним.
Или указывать пути в настройках LuaMacro (или в far.exe.ini?)
В любом случае, хотелось бы иметь один рекомендованый способ, описанный в документации.
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: LuaMacro — Lua как язык макросов
Не уверен насчёт необходимости официального. Как вариант, можно использовать какое-либо поле таблицы package для запоминания факта инициализации, например:John Doe wrote:Нужен официальный способ модификации package.path/cpath
- John Doe
- Бюрократ
- Posts: 13867
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: LuaMacro — Lua как язык макросов
В этом варианте проблематично изменить путь не перегружая фар или плагин.Shmuel wrote:Как вариант, можно использовать какое-либо поле таблицы package для запоминания факта инициализации
Лучше сохранять начальные значения, и далее работать с ними.
Code: Select all
package.path_bak = package.path_bak or package.path end
package.cpath_bak = package.cpath_bak or package.cpath end
package.path = package.path_bak..somepath
package.cpath = package.path_bak..somepath
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: LuaMacro — Lua как язык макросов
Ну, изощряться можно сколько угодно, и никто не запрещает. Кому-то и ваш способ покажется недостаточно гибким, а мне и этого достаточно (на самом деле я даже этим не пользуюсь).
- Smitis
- Posts: 1709
- Joined: Fri 18 Mar, 2005 12:51
- Location: Питер
- Has thanked: 23 times
- Been thanked: 55 times
Re: LuaMacro — Lua как язык макросов
Как вариант, установить переменные среды LUA_PATH и LUA_CPATH, глобально для Винды или в командном файле, через который запускать ФАР. Но глобальные не всегда удобно, так как влияют на другие приложения, использующие LUA другой версии.
Разум когда-нибудь победит.