Page 44 of 46

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 30 Oct, 2017 17:39
by John Doe

Latest post of the previous page:

Shmuel wrote:
Mon 30 Oct, 2017 17:32
Вы специально сочинили пример, где BreakKey==Esc
Увы, это как раз пример из реального скрипта, и смысл указывать эту клавишу заключается в том, чтобы иметь возможность перед закрытием меню запомнить позицию.

Но соль ведь совсем в другом: позиция (в этом частном случае) возвращается несуществующая, что не было предусмотрено в моём скрипте (поскольку данный случай нигде не документирован), и приводило к падению.
В рамках данной темы дискутировать не о чем, да.

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

Posted: Sat 27 Jan, 2018 13:55
by John Doe
Функция panel.Get/SetUserScreen принимает первый [опциональный] параметр хэндл панели.
От этого параметра в настоящий момент не зависит ничего (да и в перспективе сложно представить, на что бы он мог влиять).

Может быть убрать его совсем?

P.S.
Раньше это не имело никакого значения, но теперь есть и второй параметр, а значит первый придётся всё-таки указывать хотя бы как nil.

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

Posted: Sat 27 Jan, 2018 14:10
by Shmuel
John Doe wrote:
Sat 27 Jan, 2018 13:55
Может быть убрать его совсем?
Убрать легко, но я склоняюсь к тому, чтобы оставить - для консистентности с прочими функциями таблицы panel.

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

Posted: Mon 14 May, 2018 08:30
by John Doe
В мануале стоит добавить ссылку на https://api.farmanager.com/ru/fsf/farclock.html

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

Posted: Mon 14 May, 2018 13:50
by Shmuel
Ссылка добавлена.

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

Posted: Mon 29 Oct, 2018 09:37
by John Doe
Несколько методов объекта Settings Control принимают параметр Root, тип которого в мануале указан как integer.
Однако если передать nil, то это не приведёт к ошибке.

Не правильнее в этом случае вызывать runtime error, как это происходит если например передать в параметре Root строку, или логическое значение?

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

Posted: Mon 29 Oct, 2018 10:11
by Shmuel
John Doe, да, несоответствие документации и реализации.
В реализации тип этого параметра не "integer", а "flag", а для "флагов" значение nil всегда является допустимым и трансформируется в 0.
Может просто документацию поправить?

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

Posted: Mon 29 Oct, 2018 11:40
by John Doe
Shmuel wrote:
Mon 29 Oct, 2018 10:11
Может просто документацию поправить?
Я рассуждаю так: nil в данном контексте смысла заведомо не имеет, и если он всё же передаётся, то может означать лишь то, что в коде ошибка (неинициализированная переменная).
Если передавать nil как 0 то ошибку можно замаскировать, что не очень хорошо.

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

Posted: Mon 29 Oct, 2018 11:51
by Shmuel
Этот параметр - флаг. Для флагов nil -> 0. 0 == FSSF_ROOT.
В LuaFAR API есть много функций с опциональными параметрами и не обязательно последними в списке параметров. Во всех этих случаях передача неинициализированной переменной может быть отловлена только ран-тайм тестированием. Данный случай подпадает под эту категорию (после правки документации). Если вы убеждены, что это не тот случай, откройте тикет на Мантисе.

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

Posted: Mon 29 Oct, 2018 13:15
by John Doe
В данном контексте опциональность параметра Root применима лишь в одном методе:

Code: Select all

items = obj:Enum (Root[, from[, to]])
На мой взгляд, пользы от возможности опустить этот параметр мало.
Shmuel wrote:
Mon 29 Oct, 2018 11:51
Если вы убеждены, что это не тот случай, откройте тикет на Мантисе.
Если вы решите, что изменения документации достаточно, то спорить не стану.

Update
https://bugs.farmanager.com/view.php?id=3663

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

Posted: Mon 29 Oct, 2018 13:42
by Shmuel
John Doe wrote:
Mon 29 Oct, 2018 13:15
Если вы решите, что изменения документации достаточно, то спорить не стану.
Скажем так, мне сейчас как бы не хочется этим заниматься. Поэтому (как уже сказано выше) можно открыть тикет на мантисе.

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

Posted: Tue 30 Oct, 2018 11:16
by John Doe
far.FreeSettings
Желательно в мануале добавить примечание, поясняющее особенности функции, с перекрёстной ссылкой на метод схожего назначения.

Update
https://bugs.farmanager.com/view.php?id=3665

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

Posted: Tue 30 Oct, 2018 12:06
by DrKnS
Не холивара ради - а какова вообще область применения этой функции? Особенно учитывая то, что пока настройки не освободишь - они не запишутся?

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

Posted: Tue 30 Oct, 2018 12:11
by John Doe
DrKnS wrote:
Tue 30 Oct, 2018 12:06
Особенно учитывая то, что пока настройки не освободишь - они не запишутся?
А вот это не очевидно. Где можно почитать подробнее?

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

Posted: Tue 30 Oct, 2018 12:24
by Shmuel
John Doe wrote:
Tue 30 Oct, 2018 11:16
far.FreeSettings
Желательно в мануале добавить примечание, поясняющее особенности функции, с перекрёстной ссылкой на метод схожего назначения.
Мантис.
DrKnS wrote:
Tue 30 Oct, 2018 12:06
а какова вообще область применения этой функции?
Область применения - освободить все открытые хэндлы скопом, без необходимости отслеживать каждый из них (иногда можно забыть).
В период до LuaMacro, эта функция вообще вызывалась луафар'ом автоматически при возвращении управления от плагина Фару, впоследствии я автоматическое освобождение убрал.

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

Posted: Tue 30 Oct, 2018 12:26
by DrKnS
John Doe wrote:
Tue 30 Oct, 2018 12:11
Где можно почитать подробнее?
В changelog

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

Posted: Tue 30 Oct, 2018 12:36
by DrKnS
Shmuel wrote:
Tue 30 Oct, 2018 12:24
без необходимости отслеживать каждый из них
Ну это как бы не память, которую можно доверить garbage collector'у и оставить на потом. При освобождении этих хендлов происходят сайд-эффекты, так что их откладывание, накапливание и закрытие в неизвестном порядке, наверное, может иметь неожиданные последствия.