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

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

Полезное по теме: См. также:
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 »

Latest post of the previous page:

John Doe wrote: А моё наблюдение подтверждаете? На мантис?
Не могу повторить, вроде всё работает без CtrlR. Распишите подробнее, по шагам, для тупых.
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 »

С единственным плагином действительно не повторяется...
Буду искать "виновника" (пока что выяснил что это не luamacro)
Оказалось что и с единственным повторяется...
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 »

Неверно указал способ воспроизведения.
Похоже надо переключаться не с Medium, а с какого-нибудь другого режима c custom-колонками.

P.S.
По шагам:

Есть созданный ранее режим "test".
Создаю ещё один custom-режим "asdf" N,<asdf>, и включаю его.
Перехожу в любую другую папку.
Открываю список режимов, выбираю "test", и жму CtrlEnter.
По заголовкам видно, что режим включился, но в колонках пусто.
Закрываю список режимов, жму CtrlR, и только после этого колонка заполняется.

http://bugs.farmanager.com/view.php?id=3083
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 Manager.
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 »

Для чего lua-плагины экспортируют GetMinFarVersionW?
Вроде бы в Far 3 это не требуется.

Edit:

Code: Select all

// This is exported in order not to crash when run from under Far 2.0.xxxx
// Minimal Far version = 3.0.0
Для чего такое может понадобиться?
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 wrote: Для чего такое может понадобиться?
Это перестраховка от падения при запуске из-под Far2. Типа, пусть лучше будет сообщение о неправильной версии, чем падение. Практика, однако, показала, что за всё время у меня такого случая не было ни разу.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Вот что я сейчас словил: “PANIC: unprotected error in call to Lua API (attempt to call a nil value)
Image
Траплог не нашёл. Воспроизвести падение пока не получается, но вдруг у авторов появятся какие-то идеи.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

HaRT, этот макрос у вас не установлен?
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Shmuel, нет — я только что перепроверил.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

Исследовать это проблематично, поскольку проявляется крайне нерегулярно, но рабочее предположение - что Фар вызывает функции плагина из неосновного потока, причём перекрывая эти вызовы во времени с вызовами из основного потока. Это только в AltF7 Фар делает, насколько мне известно. В LuaFAR-плагинах есть защита от этого, но, как видно, не полная. Вообще Фар не должен был бы этого делать, по крайней мере плагинам в отношении FAR API это не разрешается.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

В библиотеке явно "потерялась" функция для удаления значений в реестре. Всё остальное есть, перечисление, установка значения, а удаления нет. Может добавите win.DeleteRegValue (по аналогии с win.DeleteRegKey)?
Разум когда-нибудь победит.
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 »

Smitis wrote: Может добавите win.DeleteRegValue (по аналогии с win.DeleteRegKey)?
Добавлено.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Спасибо, только там ошибка, в win_DeleteRegValue обработка двух параметров (Root, ValueName), а надо три (Root, Key, ValueName), ну и в RegDeleteValueW соответственно

Ошибка.
Тут получается, что в winapi есть RegDeleteValueW с двумя параметрами и RegDeleteKeyValueW с тремя параметрами.
По логике, win.DeleteRegValue нужно делать с тремя параметрами, RootKey и Key раздельно, по аналогии с другими функциями.
Разум когда-нибудь победит.
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 »

Спасибо, исправлено.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Заработало! Спасибо.
Разум когда-нибудь победит.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Баг: win.SetRegKey не правильно определяет длину expandstring
lua:win.SetRegKey("HKCU","Environment","A","string","%systemroot%") - пишет правильно
lua:win.SetRegKey("HKCU","Environment","A","expandstring","%systemroot%") - пишет ровно половину
multistring не проверял multistring вообще непонятно что пишется
Разум когда-нибудь победит.
Post Reply

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