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

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

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

Post by John Doe »

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

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

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

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

Полезное по теме: См. также:
Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

Re: LuaFAR — помощь в написании плагинов для FAR на языке Lua

Post by Shmuel »

Latest post of the previous page:

gotar wrote:Я так понял, что использовать lf4ed_emb.dll то функция Addytomenu из программ на Lua, а если использовать luaplug.dll то нужно самим заботиться о доступе к своим программам на lua путем правки luaplug.lua. Мне бы хотелось иметь возможность быстро писать маленкие скриптики как для редактора фара так и для самого фара не заводя два плагина с одной функциональностью
Выбор - за плагинописателем (т.е., за тобой) :) Для редактора - самый безболезненный вариант - LuaFAR for Editor. Возьми fl_scripts и посмотри, как автор добавил кучу нужной ему функциональности. Делай как он, делай лучше его. :ha:
Если же нужно соорудить что-то существенное с панелями (масштаба TmpPanel, например), то, конечно, нужно писать отдельный плагин.

Да, не пользуйся lf4ed_emb.dll - он не предназначен для тех, кто что-то добавляет сам. См. файл readme2.txt.
gotar
Posts: 330
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 9 times
Been thanked: 1 time

Re: LuaFAR — помощь в написании плагинов для FAR на языке Lua

Post by gotar »

Не моuли бы Вы проверить что luafar.dll ищется в %FARHOME%
Last edited by gotar on Sun 06 Sep, 2009 15:38, edited 1 time in total.
Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

Re: LuaFAR — помощь в написании плагинов для FAR на языке Lua

Post by Shmuel »

gotar wrote:Правильно ли я понял, что вся функциональность luafar.dll есть и в lf4ed_51.dll? И еще не моuли бы Вы проверить что luafar.dll ищется в %FARHOME%
1. Правильно
2. Ищется на %PATH%, а %FARHOME% всегда там. Так что нечего и проверять, результат предрешён. (Но если используется lf4ed_51.dll - он должен быть в папке плагина, а luafar.dll в этом случае не нужен - см. пункт 1 выше).

Вместо файла luaplug.lua - lf4ed_51.lua - имя должно совпадать с именем длл.
Update
блин, совсем замотался, речь ведь идёт о плагине lf4ed - не нужен lf4ed_51.lua, нужен _usermenu.lua, читай доки на плагин. Далее на вопросы по плагину буду отвечать только в ветке плагина.
Last edited by Shmuel on Sun 06 Sep, 2009 15:50, edited 3 times in total.
Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

LuaFAR

Post by Shmuel »

Для информации: юникодные версии библиотеки и плагинов должны появиться уже в этом месяце.
Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

Re: LuaFAR — помощь в написании плагинов для FAR на языке Lu

Post by Shmuel »

Версия 2.7.1 содержит фикс весьма неприятного бага, существовавшего, начиная с версии 2.0.0. Этот баг, в частности, приводил к созданию ключей с "мусорными" именами под HKCU\Software\Far2\SavedDialogHistory. Это никак не опасно, но естественно, кто обнаружит у себя эти "мусорные" ключи, может их спокойно удалить.
Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

Re: LuaFAR — помощь в написании плагинов для FAR на языке Lu

Post by Shmuel »

Вышеупомянутый баг был связан с тем, что после вызова Info.DialogInit() плагин мог освобождать память, выделенную под имена ключей истории (FarDialogItem::History). Однако мне не удалось найти в Писании, что плагин должен сохранять эти строки в целости между вызовами DialogInit и DialogFree.
Поэтому кажется целесообразным:
-- либо внести такое указание в Писание
-- либо чтобы Фар в DialogInit() копировал строки, а не указатели
User avatar
HaRT
Moderator
Posts: 9689
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 124 times
Been thanked: 249 times

Post by HaRT »

Shmuel wrote:Поэтому кажется целесообразным:
-- либо внести такое указание в Писание
-- либо чтобы Фар в DialogInit() копировал строки, а не указатели
Тут эти благие пожелания почти наверняка потеряются. Предлагаю написать в раздел “Разработка плагинов”.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13067
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 42 times
Been thanked: 319 times

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

Post by John Doe »

Тогда уж сразу мантис.
Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

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

Post by Shmuel »

Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

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

Post by Shmuel »

changelog wrote:zg 08.02.2012 02:03:12 +0200 - build 2443
1. в ситуации, когда плагин статически импортирует dll, расположенную в %FARHOME%, %FARHOME% отсутствует в %PATH% и фар запущен не из своей папки, плагин не загружался.
Благодаря данному изменению, LuaFAR можно теперь устанавливать и в %FARHOME%, что делает его более "portable". Спасибо!
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

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

Post by zg »

ACTL_GETWINDOWINFO не возвращает WindowInfo.Id.
Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

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

Post by Shmuel »

Сделал, но хотел бы уточнить: в какие функции полученный Id может быть впоследствии передан как аргумент?
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

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

Post by zg »

Shmuel wrote:Сделал, но хотел бы уточнить: в какие функции полученный Id может быть впоследствии передан как аргумент?
EditorControl/ViewerControl/SendDlgMessage на текущий момент. можно в принципе не Id делать а в зависимости от типа ViewerId, EditorId, DialogHandle.

ps: а вообще я ожидал конечно функцию, которая возвращает таблицу с информацией о всех окнах :)
Shmuel
Posts: 6217
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 348 times

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

Post by Shmuel »

zg wrote:
Shmuel wrote:Сделал, но хотел бы уточнить: в какие функции полученный Id может быть впоследствии передан как аргумент?
EditorControl/ViewerControl/SendDlgMessage на текущий момент. можно в принципе не Id делать а в зависимости от типа ViewerId, EditorId, DialogHandle.
Тогда ещё вопрос: поскольку Id является INT_PTR, то по идее он может быть произвольным указателем? То-есть, не "влезть" в 32 бита в 64-битной системе? Дело в том, что EditorId и ViewerId определены как int, а DialogHandle вроде как указатель?
zg wrote:ps: а вообще я ожидал конечно функцию, которая возвращает таблицу с информацией о всех окнах :)
LuaFAR является "тонким" враппером вокруг Far API - это сознательное решение. Всё остальное, функции более высокого уровня, лучше делать на Lua (я имею в виду "модули" или "библиотеки"). Лучше потому, что легче поддерживать и модифицировать. То, что таких модулей пока немного - есть результат малого количества людей, вовлечённых в LuaFAR.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 158 times
Contact:

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

Post by zg »

Shmuel wrote:Тогда ещё вопрос: поскольку Id является INT_PTR, то по идее он может быть произвольным указателем?
сейчас — только для диалога. для редактора просмотра — чистый инт. поэтому я и предложил разделить в зависимости от типа, чтобы не было ненужных сложностей.
То-есть, не "влезть" в 32 бита в 64-битной системе?
да.
Дело в том, что EditorId и ViewerId определены как int, а DialogHandle вроде как указатель?
да.
Post Reply

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