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, в дистрибутиве)
Дополнения к мануалу:
far.Menu: в описании приведена ссылка на статью Энциклопедии Виртуальные коды клавиш. Однако не все перечисленные там клавиши на самом деле обрабатываются фаром. В частности, в качестве BreakKey не могут выступать кнопки мыши.
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Sat 27 Jan, 2018 13:55
by John Doe
Latest post of the previous page:
Функция 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
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 применима лишь в одном методе:
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Где можно почитать подробнее?
LuaFAR — библиотека для создания плагинов на языке Lua
Posted: Tue 30 Oct, 2018 12:36
by DrKnS
Shmuel wrote: ↑Tue 30 Oct, 2018 12:24без необходимости отслеживать каждый из них
Ну это как бы не память, которую можно доверить garbage collector'у и оставить на потом. При освобождении этих хендлов происходят сайд-эффекты, так что их откладывание, накапливание и закрытие в неизвестном порядке, наверное, может иметь неожиданные последствия.