zg 30.09.2012 03:26:20 +0200 - build 2851
1. слияние с проектом Spring (https://github.com/shmuz/Spring).
в связи с этим вместо встроенного макроязыка используется скриптовый язык Lua 5.1 (http://www.lua.org).
после перехода на Lua: macroapi_manual.ru.chm.
(Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел
Shmuel wrote: Для запуска файла-скрипта есть синтаксис lua:@filename, описанный в мануале.
Хотелось бы, чтобы при вызове lua: (без параметров) в том или ином виде (например, в виде окошка с сообщением прямо в Фаре) выводилась краткая справка по синтаксису — подобно тому, как это сделано для view:/edit:.
LuaMacro — Lua как язык макросов
Posted: Wed 10 May, 2017 16:53
by Shmuel
HaRT wrote: Хотелось бы, чтобы при вызове lua: (без параметров) в том или ином виде (например, в виде окошка с сообщением прямо в Фаре) выводилась краткая справка по синтаксису — подобно тому, как это сделано для view:/edit:.
DirMacros уже содержит завершающий бэкслэш, поэтому в результате конкатенации получаем его удвоение.
Следствие: загружаемые скрипты получают первым параметром путь с удвоенным слэшем, например: C:\APPs\Far3\Profile\Macros\\scripts\_macroinit.lua
LuaMacro — Lua как язык макросов
Posted: Thu 03 Aug, 2017 14:20
by Shmuel
John Doe, спасибо. Исправлено.
LuaMacro — Lua как язык макросов
Posted: Sat 05 Aug, 2017 12:37
by John Doe
И ещё один вопрос касающийся нормализации передаваемых путей с помощью far.ConvertPath.
При загрузке макрофайлов используется CPM_FULL (utils.lua:772), а при исполнении файлов (через lua:@) используется CPM_NATIVE (luamacro.lua:180).
Было бы удобнее в обоих случаях CPM_FULL (если конечно это различие существует не преднамерено).
LuaMacro — Lua как язык макросов
Posted: Sat 05 Aug, 2017 13:33
by Shmuel
CPM_FULL не работает с очень длинными путями.
CPM_NATIVE даёт не очень дружественное имя файла.
То есть сделано это преднамеренно. Но это не значит, что нельзя обсуждать и трогать.
LuaMacro — Lua как язык макросов
Posted: Sat 05 Aug, 2017 13:52
by John Doe
Shmuel wrote: ↑Sat 05 Aug, 2017 13:33CPM_FULL не работает с очень длинными путями.
Как это увидеть?
LuaMacro — Lua как язык макросов
Posted: Sat 05 Aug, 2017 14:00
by Shmuel
John Doe wrote: ↑Sat 05 Aug, 2017 13:52Как это увидеть?
Замените в luamacro.lua CPM_NATIVE на CPM_FULL. Перезагрузите Фар. Скопируйте в буфер обмена строку из 100 единиц. 10 раз создавайте по F7 вложенные папки, копируя из буфера. Положите любой Lua-файл в самую вложенную папку и попробуйте запустить его через lua:@<filename>.
LuaMacro — Lua как язык макросов
Posted: Sat 05 Aug, 2017 14:09
by John Doe
А если профиль фара расположен в такой вот папке, то при загрузке макросов проблем нет?
LuaMacro — Lua как язык макросов
Posted: Sat 05 Aug, 2017 14:11
by Shmuel
John Doe wrote: ↑Sat 05 Aug, 2017 14:09А если профиль фара расположен в такой вот папке, то при загрузке макросов проблем нет?
Думаю, что есть, но до сих пор никто не жаловался.
LuaMacro — Lua как язык макросов
Posted: Sat 05 Aug, 2017 14:52
by John Doe
Проверил, lm:load . в такой папке действительно приводит к ошибке.
Впрочем, я не утверждаю, что надо исправлять, просто хотелось разобраться.
LuaMacro — Lua как язык макросов
Posted: Mon 07 Aug, 2017 11:55
by John Doe
Полагаю, что всё-таки правильнее ориентироваться на то, как поступает с путями сам фар, то есть:
— обращается к системным функциям всегда используя префиксы
— в собственное апи префиксы не передаёт
LuaMacro — Lua как язык макросов
Posted: Mon 07 Aug, 2017 14:41
by Shmuel
John Doe wrote: ↑Mon 07 Aug, 2017 11:55Полагаю, что всё-таки правильнее ориентироваться на то, как поступает с путями сам фар
Если есть конкретные предложения, можно поместить на мантис.
╔════════════════════════════ LuaMacro ═════════════════════════════╗
║ ...am Files (x86)\Far Manager\Plugins\LuaMacro\LuaMacro.lua:363: ║
║ invalid format of arg. #1 ║
║ stack traceback: ║
║ [C]: in function 'error' ║
║ C:\Program Files (x86)\Far Manager\Plugins\LuaMacro\api.lua: ║
║ 301: in function 'f1' ║
║ ...am Files (x86)\Far Manager\Plugins\LuaMacro\LuaMacro.lua: ║
║ 363: in function <...am Files (x86)\Far Manager\Plugins\LuaMacro\ ║
║ LuaMacro.lua:363> ║
╟───────────────────────────────────────────────────────────────────╢
║ { OK } ║
╚═══════════════════════════════════════════════════════════════════╝
.
Наверно, это не то, что было задумано в такой ситуации?
P.S.
GetConfig wrote:Примечание:
В случае ошибки (некорректный аргумент, или Far Manager не нашёл указанной опции)
данная функция прерывает исполнение (вызывает error()).
читал.
LuaMacro — Lua как язык макросов
Posted: Wed 09 Aug, 2017 21:29
by Shmuel
Предложите лучшую формулировку, я исправлю.
Аргумент Far.Config должен иметь вид типа xxxx.yyyy (например, Viewer.ShowKeyBar), в данном случае он не соответствует требуемому шаблону (формату).