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

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

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.
    (Мануал весьма лаконичен, вместо описания функции старого макроязыка приведены ссылки на устаревший раздел )
См. также:

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Latest post of the previous page:

Tim Sobolev wrote:
Shmuel wrote:А можно попросить вас опубликовать этот макрос ?
Данный макрос наверняка был создан в версии >= 3054, и это всё объясняет.
Tim Sobolev wrote:Хотелось бы в каком-либо файле из .\Encyclopedia видеть описание размещения и формата всех типов поддерживаемых макросов.
Безусловно, это должно быть задокументировано (и не только это).

User avatar
Tim Sobolev
Posts: 705
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 2 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Tim Sobolev »

To install any of the provided .lua files just copy them to
%FARPROFILE%\Macros\scripts directory (or any of its subdirectories).
Ещё лучше было бы вынести это счастье в Far.ini, как сделано с профилями, или, ещё лучше, как с User Menu (указывается путь к глобальным, локальные, по-умолчанию, в профилях).

Мне, к примеру, было бы удобно держать всё в %FARHOME%\Scripts.

User avatar
SUSim
Posts: 1538
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by SUSim »

Модификаторы в макросах поменяли, это хорошо, а не стоит ли теперь поменять названия клавиш для единообразия в самом фаре?
Keys()
akey()
mf.key()
SimSU ··· ·· -- ··· ··-

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

SUSim wrote:а не стоит ли теперь поменять названия клавиш для единообразия в самом фаре?
Keys()
akey()
mf.key()
Наверное, стоит, только вот макросы у людей поломаются.

Smitis
Posts: 1605
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 39 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Smitis »

К слову пришлось - меня всё мучает вопрос, почему в mf все функции строчными буквами, а Keys с заглавной? ;)
Разум когда-нибудь победит.

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Smitis wrote:К слову пришлось - меня всё мучает вопрос, почему в mf все функции строчными буквами, а Keys с заглавной? ;)
Вы уже не первый, кто это спрашивает. :)
Никакого особого смысла в этом нет. Эта функция дважды переименовывалась, и вначале была только глобальной, то-есть не имела синонима в mf. В своё время (ещё до замены макроязыка на Lua) эта функция обсуждалась в форуме, там её так впервые назвали, и так оно и осталось.

Smitis
Posts: 1605
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 39 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Smitis »

Shmuel wrote:Никакого особого смысла в этом нет. Эта функция дважды переименовывалась, и вначале была только глобальной, то-есть не имела синонима в mf. В своё время (ещё до замены макроязыка на Lua) эта функция обсуждалась в форуме, там её так впервые назвали, и так оно и осталось.
А если навести порядок - все в mf строчными, а их копии в глобальных - с заглавных (Keys, Eval, Exit и пр.)? (Да, да, я знаю, некоторые макросы отвалятся :) ) Типа, рефакторинг так рефакторинг...
Разум когда-нибудь победит.

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

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

macroapi_manual.chm wrote:Far.Cfg.Get -> Far.Cfg_Get.
KeyBar.Show -> Far.KeyBar_Show
Window.Scroll -> Far.Window_Scrol
А давайте уберём подчёркивания. Как-то не принято в макроязыке.

Smitis
Posts: 1605
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 18 times
Been thanked: 39 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Smitis »

И надо сделать mf.clip глобальным
Разум когда-нибудь победит.

User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by Aidar »

Лучше сделать таблицу Clip с набором функций. А mf.clip -- в deprecated.

User avatar
SUSim
Posts: 1538
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by SUSim »

condition = function() return akey(1) end;

Code: Select all

╔═════════════════════ Исключительная ситуация ══════════════════════╗
║ Исключение:  Нарушение доступа (чтение из 0x0000001A)              ║
║ Адрес:       0x0054AAC8                                            ║
║ Функция:     OpenW                                                 ║
║ Модуль:      E:\FAR3_lua\Plugins\LuaMacro\LuaMacro.dll             ║
╟────────────────────────────────────────────────────────────────────╢
Поясню:
key="/[A-Z0-9,<ю>;:\'\"\[{\\]}`~_]/"; хватает много лишнего и хотелось отсечь небуквы следующим образом:
condition = function() return akey(1):find("[%w_]") end;
SimSU ··· ·· -- ··· ··-

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

build 3122 wrote:1. Функции 'akey' и 'mmode', будучи вызваны из функции 'condition' макроса, возвращают false.
Насчёт akey, возможно, нужно будет доработать, чтобы возвращалось в соответствии с нажатой клавишей (на мантис?).
Пока что только предотвращены падения.

User avatar
SUSim
Posts: 1538
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by SUSim »

Наверно, на мантис, если конечно клавиши как нибудь не доделать...

Вас не настораживает задание клавишь?
key="/[A-Z0-9,<ю>;:\'\"\[{\\]}`~_]/";
SimSU ··· ·· -- ··· ··-

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

SUSim wrote:Вас не настораживает задание клавишь?
key="/[A-Z0-9,<ю>;:\'\"\[{\\]}`~_]/";
Давайте без намёков, пожалуйста. Расскажите просто, что это такое.

User avatar
SUSim
Posts: 1538
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by SUSim »

Это просто русские буквы и цифры :) ну и американские тоже и ещё подчёркивание "_".
Особенно меня порадовала "ю" в этой последовательности (кстати почему её пришлось ввести? и почему только её?)
Shmuel, напрямую, это к вам не относится, это к фару с его неоднозначностями и многосущьностями...
SimSU ··· ·· -- ··· ··-

Shmuel
Posts: 5961
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 256 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Да я и не воспринял на свой счёт...
По поводу 'ю', объясните, не понял. Это выражение никаким русским буквам, кроме 'ю', и не соответствует.
И вообще, нельзя ли без недомолвок? Чего вы хотите этим выражением достичь?

Post Reply

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