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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Проект Spring (обсуждение) влился в стабильную версию Far Manager 3.0.

Таким образом, в макросах сейчас доступны:
  • Стандартные функции и библиотеки Lua.
  • В фаре используется LuaJIT (обсуждение), что (в частности) даёт доступ к библиотеке FFI (обсуждение), и некоторые другие расширения.
  • "Надстройка" над Lua: MoonScript (Подробности и обсуждение)
  • Функции API плагинов, посредством библиотеки LuaFAR (см. luafar_manual.chm)
  • Функции старого макроязыка (API макросов) (Обновление)
    Актуальный мануал, отражающий после перехода на Lua: macroapi_manual.ru.chm.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

Latest post of the previous page:

Shmuel wrote: Для запуска файла-скрипта есть синтаксис lua:@filename, описанный в мануале.
Хотелось бы, чтобы при вызове lua: (без параметров) в том или ином виде (например, в виде окошка с сообщением прямо в Фаре) выводилась краткая справка по синтаксису — подобно тому, как это сделано для view:/edit:.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

HaRT wrote: Хотелось бы, чтобы при вызове lua: (без параметров) в том или ином виде (например, в виде окошка с сообщением прямо в Фаре) выводилась краткая справка по синтаксису — подобно тому, как это сделано для view:/edit:.
Нормальный виш для мантиса.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

Shmuel wrote: виш для мантиса
#3432
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post 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
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe, спасибо. Исправлено.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

И ещё один вопрос касающийся нормализации передаваемых путей с помощью far.ConvertPath.
При загрузке макрофайлов используется CPM_FULL (utils.lua:772), а при исполнении файлов (через lua:@) используется CPM_NATIVE (luamacro.lua:180).

Было бы удобнее в обоих случаях CPM_FULL (если конечно это различие существует не преднамерено).
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

CPM_FULL не работает с очень длинными путями.
CPM_NATIVE даёт не очень дружественное имя файла.
То есть сделано это преднамеренно. Но это не значит, что нельзя обсуждать и трогать.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Shmuel wrote: Sat 05 Aug, 2017 13:33CPM_FULL не работает с очень длинными путями.
Как это увидеть?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote: Sat 05 Aug, 2017 13:52Как это увидеть?
Замените в luamacro.lua CPM_NATIVE на CPM_FULL. Перезагрузите Фар. Скопируйте в буфер обмена строку из 100 единиц. 10 раз создавайте по F7 вложенные папки, копируя из буфера. Положите любой Lua-файл в самую вложенную папку и попробуйте запустить его через lua:@<filename>.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

А если профиль фара расположен в такой вот папке, то при загрузке макросов проблем нет?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote: Sat 05 Aug, 2017 14:09А если профиль фара расположен в такой вот папке, то при загрузке макросов проблем нет?
Думаю, что есть, но до сих пор никто не жаловался.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Проверил, lm:load . в такой папке действительно приводит к ошибке.
Впрочем, я не утверждаю, что надо исправлять, просто хотелось разобраться.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Полагаю, что всё-таки правильнее ориентироваться на то, как поступает с путями сам фар, то есть:
— обращается к системным функциям всегда используя префиксы
— в собственное апи префиксы не передаёт
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote: Mon 07 Aug, 2017 11:55Полагаю, что всё-таки правильнее ориентироваться на то, как поступает с путями сам фар
Если есть конкретные предложения, можно поместить на мантис.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

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

P.S.
читал.
Last edited by HaRT on Wed 09 Aug, 2017 21:22, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Предложите лучшую формулировку, я исправлю.
Аргумент Far.Config должен иметь вид типа xxxx.yyyy (например, Viewer.ShowKeyBar), в данном случае он не соответствует требуемому шаблону (формату).
Post Reply

Return to “Обсуждение макросов”