LuaFAR — библиотека для создания плагинов на языке Lua

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

LuaFAR — библиотека для создания плагинов на языке Lua

Post by John Doe » Wed 29 Jul, 2009 21:41

Библиотека LuaFAR делает возможным написание плагинов на языке Lua, предоставляя им адаптированную версию FAR API.

Входит в состав FAR manager (начиная с 3.0 build 2851), и доступна для использования в макросах.

Справка по функциям библиотеки — luafar_manual.chm (в дистрибутиве, папка Encyclopedia).
Мануал весьма лаконичен, предполагает что вы ориентируетесь в FAR Plugins API (FarEncyclopedia.ru.chm, в дистрибутиве)

Дополнения к мануалу:

Полезное по теме: См. также:

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

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel » Wed 06 Nov, 2019 08:32

Latest post of the previous page:

IgorZ wrote:
Wed 06 Nov, 2019 07:22
Как видно из примера, совершенно корректный синтаксически паттерн работает, повторённый 199 и менее раз, но вызывает ошибку pattern too complex, повторённый 200 и более раз.
Это же поведение у стандартного string.match. Ограничение вводится, чтобы предотвратить экспоненциальный рост времени исполнения с увеличением n.
IgorZ wrote:
Wed 06 Nov, 2019 07:22
Вторая ошибка относится к regex.match:
И это тоже не ошибка. Для того, чтоб regex.match с паттерном "." находил "\n", ему нужно указать флаг "s" (см. документацию).
IgorZ wrote:
Wed 06 Nov, 2019 07:22
changelog LuaMacro до билда 698 включительно идёт по-русски, а начиная с билда 699 - по-английски. Это так и задумано?
Да. По здравому размышлению пришёл к выводу, что так будет правильнее. Английский знают во всём мире, а русский, к сожалению, нет.
Last edited by Shmuel on Wed 06 Nov, 2019 08:41, edited 1 time in total.

IgorZ
Posts: 643
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 11 times
Been thanked: 48 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by IgorZ » Fri 08 Nov, 2019 06:12

Shmuel wrote:
Wed 06 Nov, 2019 08:32
IgorZ wrote:
Wed 06 Nov, 2019 07:22
Как видно из примера, совершенно корректный синтаксически паттерн работает, повторённый 199 и менее раз, но вызывает ошибку pattern too complex, повторённый 200 и более раз.
Это же поведение у стандартного string.match. Ограничение вводится, чтобы предотвратить экспоненциальный рост времени исполнения с увеличением n.
Не баг, а фича? А она описана где-то? А то я, вроде бы, не видел в докуметации на Lua упоминания такого ограничения.
Shmuel wrote:
Wed 06 Nov, 2019 08:32
IgorZ wrote:
Wed 06 Nov, 2019 07:22
Вторая ошибка относится к regex.match:
И это тоже не ошибка. Для того, чтоб regex.match с паттерном "." находил "\n", ему нужно указать флаг "s" (см. документацию).
Про "s" я знаю... А, понял, в чём нюанс, действительно, мой косяк.
Shmuel wrote:
Wed 06 Nov, 2019 08:32
IgorZ wrote:
Wed 06 Nov, 2019 07:22
changelog LuaMacro до билда 698 включительно идёт по-русски, а начиная с билда 699 - по-английски. Это так и задумано?
Да. По здравому размышлению пришёл к выводу, что так будет правильнее. Английский знают во всём мире, а русский, к сожалению, нет.
Oll korrekt. :)

IgorZ
Posts: 643
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 11 times
Been thanked: 48 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by IgorZ » Mon 02 Dec, 2019 11:10

Есть ли возможность, зная GUID панельного плагина, достать текущий каталог его панели (если их несколько, то той панели, что станет активной при активации плагина, например при выполнении команды tmp:)? Плагин, в общем случае, не открыт ни на одной из панелей. Я так понимаю, plugin_handle, который возвращает far.FindPlugin, не то же самое, что plugin object, который требует export.GetOpenPanelInfo?

buniak_a_h
Posts: 1241
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 89 times
Been thanked: 79 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by buniak_a_h » Mon 02 Dec, 2019 12:11

IgorZ wrote:
Mon 02 Dec, 2019 11:10
текущий каталог его панели
Интересно... Я сделал панельный модуль, отображающий на панели структуру таблиц Lua (_G со вложениями). И что тут называть "каталогом"? И, кстати, плагин там - тот же, что в
Вашем скрипте - LuaMacro...

buniak_a_h
Posts: 1241
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 89 times
Been thanked: 79 times
Contact:

LuaFAR — библиотека для создания плагинов на языке Lua

Post by buniak_a_h » Mon 02 Dec, 2019 12:26

IgorZ, ну и вдобавок… Видимо, не для всех плагиновых панелей определен каталог.У панели, принадлежащей временной панели, например, нет Path … Видимо, нужно более развёрнуто сформулировать вопрос.

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

LuaFAR — библиотека для создания плагинов на языке Lua

Post by Shmuel » Mon 02 Dec, 2019 16:32

IgorZ wrote:
Mon 02 Dec, 2019 11:10
Есть ли возможность, зная GUID панельного плагина, достать текущий каталог его панели (если их несколько, то той панели, что станет активной при активации плагина, например при выполнении команды tmp:)?
Такой возможности нет. Когда Фар закрывает панель плагина, то с точки зрения Фара её больше не существует. Плагин при этом может хранить состояние одной или более панелей в своей памяти и воссоздавать их впоследствии, но это уже внутренняя кухня плагина.
IgorZ wrote:
Mon 02 Dec, 2019 11:10
Я так понимаю, plugin_handle, который возвращает far.FindPlugin, не то же самое, что plugin object, который требует export.GetOpenPanelInfo?
Для LuaFAR-плагинов, plugin handle - это то, как Фар видит панель плагина (величина, возвращённая из ф-ции OpenW), а plugin object - это то, как плагин видит свою панель (чаще всего это Lua-таблица, содержащая элементы панели и прочую информацию).

IgorZ
Posts: 643
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 11 times
Been thanked: 48 times

LuaFAR — библиотека для создания плагинов на языке Lua

Post by IgorZ » Tue 03 Dec, 2019 04:38

Shmuel wrote:
Mon 02 Dec, 2019 16:32
IgorZ wrote:
Mon 02 Dec, 2019 11:10
Есть ли возможность, зная GUID панельного плагина, достать текущий каталог его панели (если их несколько, то той панели, что станет активной при активации плагина, например при выполнении команды tmp:)?
Такой возможности нет. Когда Фар закрывает панель плагина, то с точки зрения Фара её больше не существует. Плагин при этом может хранить состояние одной или более панелей в своей памяти и воссоздавать их впоследствии, но это уже внутренняя кухня плагина.
Ясно, спасибо. Значит, не выйдет каменный цветок.
Last edited by IgorZ on Tue 03 Dec, 2019 05:13, edited 1 time in total.

Post Reply

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