Page 50 of 53

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

Posted: Wed 29 Jul, 2009 21:41
by John Doe
Библиотека LuaFAR делает возможным написание плагинов на языке Lua, предоставляя им адаптированную версию FAR API.

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

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

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

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

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

Posted: Mon 16 Dec, 2019 06:43
by IgorZ

Latest post of the previous page:

zg wrote: Fri 13 Dec, 2019 11:54 в GetOpenPanelInfo возвращаете соответствующие флаги, в зависимости от них будет или не будет вызываться GetFiles.
Это я знаю. Я хочу из своего GetFiles, в зависимости от того, что пришло, или самому обработать, или вернуть Far, чтобы работал он. Задача - копирование/перенос делать самому, а всё остальное Far и без меня отлично обрабатывает. С удалением всё просто - оно GetFiles не касается, там свой обработчик. А вот Enter,PgDn,CtrlQ...
Я, конечно, с момента предыдущего поста не сидел на месте и уже сваял обход через ProcessPanelInput. Но он мне не совсем нравится. Да и разобраться до конца с нюансами работы с GetFiles хотелось бы, на будущее.

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

Posted: Mon 16 Dec, 2019 12:07
by zg
IgorZ wrote: Mon 16 Dec, 2019 06:43Я хочу из своего GetFiles, в зависимости от того, что пришло, или самому обработать, или вернуть Far, чтобы работал он.
нет такой возможности.

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

Posted: Mon 16 Dec, 2019 15:30
by buniak_a_h
IgorZ wrote: Mon 16 Dec, 2019 06:43 копирование/перенос делать самому, а всё остальное Far и без меня отлично обрабатывает
Если Вы имеете в виду панель для показа результатов поиска, то не согласен:
1. Удаление ФАР не делает, надо реализовывать экспортируемую функцию;
2. Отметку ([Ins] на строке с "корневым" каталогом) - хочется, чтоб отмечались все файлы в этой папке
3. Вас JD просил сделать "внутренние" файлы. Если сделаете (я там, вроде, почти сделал - кроме случая когда архив единственный (ошибка в бинарном поиске)), то просмотр/редактирование тоже придётся делать самому.
Правда, я не знаю, насколько уместно обсуждение Вашего же панельного модуля в этой теме.

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

Posted: Tue 17 Dec, 2019 05:59
by IgorZ
zg wrote: Mon 16 Dec, 2019 12:07
IgorZ wrote: Mon 16 Dec, 2019 06:43Я хочу из своего GetFiles, в зависимости от того, что пришло, или самому обработать, или вернуть Far, чтобы работал он.
нет такой возможности.
Жаль. Значит, будет, как сделал. Дополирую и выложу.

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

Posted: Tue 17 Dec, 2019 06:11
by IgorZ

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

Posted: Thu 07 May, 2020 00:54
by buniak_a_h
Натолкнулся на то ли недоделку, то ли нелогичность.
Цитирую энциклопедию:
%farhome%\Encyclopedia\FarEncyclopedia.ru.chm:\html\service_functions\dialoginit.html wrote: HANDLE WINAPI DialogInit(
… … … … … … …
FARWINDOWPROC DlgProc,
void *Param
);
В то же время в
%farhome%\Encyclopedia\luafar_manual:\378.html wrote: hDlg = far.DialogInit (Guid,X1,Y1,X2,Y2,HelpTopic,Items,Flags,fDlgProc)
Parameters:
… … … … … … …
fDlgProc: function (dialog event handler), or nil
Что с параметром void *Param?
(а)забыли реализовать в LuaFAR его передачу;
(б) забыли указать в документации
(в) так и задумано
? В случае (в) это как-то трудно объяснимо и зря.

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

Posted: Thu 07 May, 2020 07:19
by John Doe
(д) не посчитали нужным реализовывать

Если у вас есть стоящий юзкейс, то могут и реализовать.

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

Posted: Thu 07 May, 2020 08:53
by buniak_a_h
John Doe wrote: Thu 07 May, 2020 07:19 Если у вас есть стоящий юзкейс, то могут и реализовать.
Я попробовал. Вызов DM_GETDLGDATA возвращает число. Это не очень полезно. Гле-то написано было any LUA object - если бы туда можно было запихивать таблицу, было бы удобно.
Я в своих скриптах часто пользуюсь таким приёмом: в массиве Items в некоторых элементах использую именованное поле Name (на самом деле - не только Name). В обработчике я либо ищу по этому полю, либо проверяю его. К сожалению, вызов DM_GETDLGITEM не возвращает ничего "лишнего". Поэтому приходится в обработчик передавать исходный массив Items. Хитрость в том, что сам диалог в модуле, а обработчик - в макросе, вызывающем процедуру с диалогом. Наверно, код несколько уменьшился бы, если б я мог получить эту таблицу через DM_GETDLGDATA. Хотя вряд ли это стоит усилий. Я ответ получил; не особо и нужно. ( (д) == (в) )

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

Posted: Thu 07 May, 2020 09:22
by John Doe
buniak_a_h wrote: Thu 07 May, 2020 08:53 Хотя вряд ли это стоит усилий
Может стоит, а может нет.
Без кода мне например не очень понятно чего вы хотите.

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

Posted: Thu 07 May, 2020 09:32
by Shmuel
Параметр Param используется в LuaFAR для внутренних нужд.
При необходимости можно его сэмулировать средствами Lua, возможно даже разными способами.
Смутно припоминаю его использование во времена Far1, но сейчас неохота искать в старом коде.

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

Posted: Thu 07 May, 2020 15:17
by zg
buniak_a_h wrote: Thu 07 May, 2020 00:54(в) так и задумано
? В случае (в) это как-то трудно объяснимо и зря.
оригинальное апи для C, там по другому сложно передать в функцию состояние, в луа же это делается элементарно far.DialogInit(…,function (...) DlgProc(Param,...) end). поэтому сишные костыли не нужны.

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

Posted: Thu 07 May, 2020 15:36
by Shmuel
zg, красиво, только наверное надо вставить return перед DlgProc.

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

Posted: Thu 29 Apr, 2021 21:14
by Shmuel
@Far Group: приложен патч, исправляющий file:seek() для файлов размером более 2 гига.
patch-1.diff
(1.06 KiB) Downloaded 120 times

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

Posted: Fri 30 Apr, 2021 10:12
by John Doe
@Shmuel Верно ли я понимаю что uliolib52.c не был подвержен аналогичной проблеме?

P.S.
Патч оформил https://github.com/FarGroup/FarManager/pull/392

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

Posted: Fri 30 Apr, 2021 10:24
by Shmuel
John Doe, uliolib52.c все годы исключён из компиляции, его содержимое не имеет значения.
(Это была заготовка для LuaFAR, работающего с Lua 5.2).

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

Posted: Fri 30 Apr, 2021 11:24
by John Doe
Shmuel wrote: Fri 30 Apr, 2021 10:24 (Это была заготовка для LuaFAR, работающего с Lua 5.2).
Пребывал в заблуждении что это не просто заготовка, а более/менее поддерживаемый вариант компиляции.