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

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

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, в дистрибутиве)

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

Полезное по теме: См. также:
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post 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 хотелось бы, на будущее.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

IgorZ wrote: Mon 16 Dec, 2019 06:43Я хочу из своего GetFiles, в зависимости от того, что пришло, или самому обработать, или вернуть Far, чтобы работал он.
нет такой возможности.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post by buniak_a_h »

IgorZ wrote: Mon 16 Dec, 2019 06:43 копирование/перенос делать самому, а всё остальное Far и без меня отлично обрабатывает
Если Вы имеете в виду панель для показа результатов поиска, то не согласен:
1. Удаление ФАР не делает, надо реализовывать экспортируемую функцию;
2. Отметку ([Ins] на строке с "корневым" каталогом) - хочется, чтоб отмечались все файлы в этой папке
3. Вас JD просил сделать "внутренние" файлы. Если сделаете (я там, вроде, почти сделал - кроме случая когда архив единственный (ошибка в бинарном поиске)), то просмотр/редактирование тоже придётся делать самому.
Правда, я не знаю, насколько уместно обсуждение Вашего же панельного модуля в этой теме.
Last edited by buniak_a_h on Mon 16 Dec, 2019 15:31, edited 1 time in total.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

zg wrote: Mon 16 Dec, 2019 12:07
IgorZ wrote: Mon 16 Dec, 2019 06:43Я хочу из своего GetFiles, в зависимости от того, что пришло, или самому обработать, или вернуть Far, чтобы работал он.
нет такой возможности.
Жаль. Значит, будет, как сделал. Дополирую и выложу.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post 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 его передачу;
(б) забыли указать в документации
(в) так и задумано
? В случае (в) это как-то трудно объяснимо и зря.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

(д) не посчитали нужным реализовывать

Если у вас есть стоящий юзкейс, то могут и реализовать.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post 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. Хотя вряд ли это стоит усилий. Я ответ получил; не особо и нужно. ( (д) == (в) )
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Thu 07 May, 2020 08:53 Хотя вряд ли это стоит усилий
Может стоит, а может нет.
Без кода мне например не очень понятно чего вы хотите.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Параметр Param используется в LuaFAR для внутренних нужд.
При необходимости можно его сэмулировать средствами Lua, возможно даже разными способами.
Смутно припоминаю его использование во времена Far1, но сейчас неохота искать в старом коде.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

buniak_a_h wrote: Thu 07 May, 2020 00:54(в) так и задумано
? В случае (в) это как-то трудно объяснимо и зря.
оригинальное апи для C, там по другому сложно передать в функцию состояние, в луа же это делается элементарно far.DialogInit(…,function (...) DlgProc(Param,...) end). поэтому сишные костыли не нужны.
Last edited by zg on Thu 07 May, 2020 15:20, edited 1 time in total.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

zg, красиво, только наверное надо вставить return перед DlgProc.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

@Far Group: приложен патч, исправляющий file:seek() для файлов размером более 2 гига.
patch-1.diff
(1.06 KiB) Downloaded 118 times
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

@Shmuel Верно ли я понимаю что uliolib52.c не был подвержен аналогичной проблеме?

P.S.
Патч оформил https://github.com/FarGroup/FarManager/pull/392
Last edited by John Doe on Fri 30 Apr, 2021 11:24, edited 1 time in total.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

John Doe, uliolib52.c все годы исключён из компиляции, его содержимое не имеет значения.
(Это была заготовка для LuaFAR, работающего с Lua 5.2).
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Shmuel wrote: Fri 30 Apr, 2021 10:24 (Это была заготовка для LuaFAR, работающего с Lua 5.2).
Пребывал в заблуждении что это не просто заготовка, а более/менее поддерживаемый вариант компиляции.
https://t.me/FarManager — Telegram чат
Post Reply

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