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

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

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

Post by John Doe » Mon 16 Jul, 2012 13:44

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

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

2useven10
Posts: 3982
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 172 times

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

Post by 2useven10 » Thu 17 Oct, 2013 21:25

Latest post of the previous page:

3696

ccaid
Posts: 846
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 17 times
Been thanked: 5 times

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

Post by ccaid » Mon 02 Dec, 2013 13:14

возник вопрос с таким макросом (выжимка из реального):
  1. Macro {
  2.   area="Menu"; key="1"; flags=""; description="";
  3.   action=function()
  4.     Keys("Esc F9 Home Right Right Enter Up Up Up Up Up Up Enter 1")
  5.   end;
  6. }
вызывать его надо из меню выбора шортката, и на первой кнопке должно быть назначено хотя бы два шортката.
одиночные нажатия "1" работают ожидаемо, даже если нажатия следуют друг за другом очень быстро. если же придавить кнопку "1", то почти сразу влетаем в диалог поиска файлов.
если длинную цепочку нажатий клавиш курсора в макросе заменить на переходы по подсвеченным буквам, то такого эффекта не возникает.
хомут в Far, или что-то я недоделал?

Far 3.0.3727 x86
win xp sp3
Фар делают добрые люди

Shmuel
Posts: 5916
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

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

Post by Shmuel » Mon 02 Dec, 2013 14:49

ccaid wrote:хомут в Far, или что-то я недоделал?
Похоже на хомут в Фар, а именно: не перескакивает вниз с верхней позиции меню при нажатии Up.
Если заменить 6 раз Up на 11 раз Down, то работает правильно.

ccaid
Posts: 846
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 17 times
Been thanked: 5 times

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

Post by ccaid » Mon 02 Dec, 2013 15:50

на мантис?
Фар делают добрые люди

Shmuel
Posts: 5916
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

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

Post by Shmuel » Mon 02 Dec, 2013 16:53

Лучше на Мантис, хотя бы не затеряется.

ccaid
Posts: 846
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 17 times
Been thanked: 5 times

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

Post by ccaid » Mon 02 Dec, 2013 17:27

Фар делают добрые люди

2useven10
Posts: 3982
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 4 times
Been thanked: 172 times

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

Post by 2useven10 » Mon 02 Dec, 2013 17:44

состояние RepeatedKey переносится с '1' на 'Up'.
в этом случае переход из первой строки в последнюю не происходит.
можно наверное отличать настоящие и макросные клавиши, но не уверен, что надо...
замените первый Up на End, и будет работать, и более наглядно.

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 229 times

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

Post by John Doe » Tue 21 Jan, 2014 12:23

В результате тикета 0002561: far.MacroPost: возможность задавать SequenceText функцией (а не строкой) реализована функция mf.postmacro

Code: Select all

result = mf.postmacro (func, ...)

Параметры:
  func:    function
  ...:     0 или более Lua-величин

Возвращает:
  result:  boolean

Описание:
  Функция помещает новый макрос в очередь для исполнения. При исполнении макроса
  будет вызвана функция func, которой будут переданы аргументы ...
Не углубляясь в детали: новая функция намного удобнее для использования в макросах.
Следует учитывать, что Lua также позволяет определить параметр func на месте, как анонимную функцию:

Code: Select all

mf.postmacro(function()
  --
  --какие-то действия
  --
end)
P.S.
В разделе мануала Ограничения в использовании некоторых функций упоминается о возможности обхода ограничений с помощью far.MacroPost. Предлагаю добавить туда же упоминание о mf.postmacro

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 229 times

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

Post by John Doe » Thu 20 Feb, 2014 12:02

В мануале (macroapi_manual.ru.chm::/64.html) нет примера использования функции cfind, но очевидно что предполагается аналогично остальным функциям, т.е. как метод:

Code: Select all

local s = "*йцуке*"
return s:сfind"(%*).-(%*)"
Однако в результате ошибка:

Code: Select all

[string "local s = "*йцуке*"..."]:2: attempt to call method 'сfind' (a nil value)
При вызове через unicode.utf8.cfind всё работает как надо.

Shmuel
Posts: 5916
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

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

Post by Shmuel » Thu 20 Feb, 2014 12:13

У вас в сfind русское "с".

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 229 times

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

Post by John Doe » Thu 20 Feb, 2014 12:15

:facepalm:

Shmuel
Posts: 5916
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

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

Post by Shmuel » Thu 20 Feb, 2014 12:18

И кстати, то, что LuaJIT допускает не-ASCII символы в идентификаторах, мне кажется сомнительным решением.

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 229 times

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

Post by John Doe » Thu 24 Apr, 2014 10:27

Используются ли сейчас опции Macros.MacroReuseRules и Macros.CONVFMT?
(и прочие, описанные в http://api.farmanager.com/ru/macro/techinfo.html)

Shmuel
Posts: 5916
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

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

Post by Shmuel » Thu 24 Apr, 2014 11:23

John Doe wrote:Используются ли сейчас опции Macros.MacroReuseRules и Macros.CONVFMT?
(и прочие, описанные в http://api.farmanager.com/ru/macro/techinfo.html)
MacroReuseRules на данной странице не нашёл, и в коде Фара тоже.
DateFormat и CONVFMT используются в некоторых ф-циях mf.
KeyRecordCtrlDot и KeyRecordCtrlShiftDot вроде используются.

User avatar
John Doe
Бюрократ
Posts: 12526
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 229 times

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

Post by John Doe » Thu 24 Apr, 2014 11:40

Shmuel wrote:MacroReuseRules на данной странице не нашёл, и в коде Фара тоже.
Выходит кто-то на днях молча грохнул, уже и в far:config нет

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 4 times

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

Post by Skirda » Thu 24 Apr, 2014 14:39

John Doe wrote:
Shmuel wrote:MacroReuseRules на данной странице не нашёл, и в коде Фара тоже.
Выходит кто-то на днях молча грохнул, уже и в far:config нет
в build 3876
We are the Borg. You will be assimilated.
So Say We All!

eugene1287
Posts: 41
Joined: Sat 02 Oct, 2010 00:25

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

Post by eugene1287 » Fri 25 Apr, 2014 12:20

как определить что элемент панели - папка?

Post Reply

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