Page 31 of 36

LuaMacro — Lua как язык макросов

Posted: Mon 16 Jul, 2012 13:44
by John Doe
Проект Spring (обсуждение) влился в стабильную версию Far Manager 3.0.

Таким образом, в макросах сейчас доступны:
  • Стандартные функции и библиотеки Lua.
  • В фаре используется LuaJIT (обсуждение), что (в частности) даёт доступ к библиотеке FFI (обсуждение).
  • "Надстройка" над Lua: MoonScript (Подробности и обсуждение)
  • Функции API плагинов, посредством библиотеки LuaFAR (см. luafar_manual.chm)
  • Функции старого макроязыка (API макросов) (Обновление)
    Актуальный мануал, отражающий после перехода на Lua: macroapi_manual.ru.chm.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:

LuaMacro — Lua как язык макросов

Posted: Wed 10 May, 2017 16:19
by HaRT

Latest post of the previous page:

Shmuel wrote: Для запуска файла-скрипта есть синтаксис lua:@filename, описанный в мануале.
Хотелось бы, чтобы при вызове lua: (без параметров) в том или ином виде (например, в виде окошка с сообщением прямо в Фаре) выводилась краткая справка по синтаксису — подобно тому, как это сделано для view:/edit:.

LuaMacro — Lua как язык макросов

Posted: Wed 10 May, 2017 16:53
by Shmuel
HaRT wrote: Хотелось бы, чтобы при вызове lua: (без параметров) в том или ином виде (например, в виде окошка с сообщением прямо в Фаре) выводилась краткая справка по синтаксису — подобно тому, как это сделано для view:/edit:.
Нормальный виш для мантиса.

LuaMacro — Lua как язык макросов

Posted: Wed 10 May, 2017 17:02
by HaRT
Shmuel wrote: виш для мантиса
#3432

LuaMacro — Lua как язык макросов

Posted: Thu 03 Aug, 2017 13:43
by John Doe
utils.lua:759

Code: Select all

      paths = DirMacros.."\\scripts"
utils:lua:783

Code: Select all

    far.RecursiveSearch (DirMacros.."\\internal", "*.lua", LoadRecordedFile, 0)
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:33
CPM_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 — Lua как язык макросов

Posted: Wed 09 Aug, 2017 21:11
by HaRT
Вызываю lua: = Far.GetConfig('ShowKeyBar') (ключ ошибочный) — получаю .
Наверно, это не то, что было задумано в такой ситуации?

P.S.
читал.

LuaMacro — Lua как язык макросов

Posted: Wed 09 Aug, 2017 21:29
by Shmuel
Предложите лучшую формулировку, я исправлю.
Аргумент Far.Config должен иметь вид типа xxxx.yyyy (например, Viewer.ShowKeyBar), в данном случае он не соответствует требуемому шаблону (формату).

LuaMacro — Lua как язык макросов

Posted: Wed 09 Aug, 2017 21:39
by HaRT
Shmuel wrote:
Wed 09 Aug, 2017 21:29
Предложите лучшую формулировку
Например, KeyName does not match 'ConfigArea.SettingName'. Лично меня вообще сбило с толку то, что ошибка как бы происходит внутри ф-ии error(), но это, как я понимаю, мы вряд ли исправим.