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

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

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

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

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

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post by John Doe »

Latest post of the previous page:

Функция panel.Get/SetUserScreen принимает первый [опциональный] параметр хэндл панели.
От этого параметра в настоящий момент не зависит ничего (да и в перспективе сложно представить, на что бы он мог влиять).

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

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

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

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

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post by John Doe »

В мануале стоит добавить ссылку на https://api.farmanager.com/ru/fsf/farclock.html

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

Ссылка добавлена.

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post by John Doe »

Несколько методов объекта Settings Control принимают параметр Root, тип которого в мануале указан как integer.
Однако если передать nil, то это не приведёт к ошибке.

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

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

John Doe, да, несоответствие документации и реализации.
В реализации тип этого параметра не "integer", а "flag", а для "флагов" значение nil всегда является допустимым и трансформируется в 0.
Может просто документацию поправить?

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post by John Doe »

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

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

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

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post 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
Last edited by John Doe on Tue 30 Oct, 2018 11:35, edited 1 time in total.

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

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

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post by John Doe »

far.FreeSettings
Желательно в мануале добавить примечание, поясняющее особенности функции, с перекрёстной ссылкой на метод схожего назначения.

Update
https://bugs.farmanager.com/view.php?id=3665
Last edited by John Doe on Tue 30 Oct, 2018 15:49, edited 1 time in total.

User avatar
DrKnS
Posts: 5635
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 9 times
Been thanked: 305 times

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

Post by DrKnS »

Не холивара ради - а какова вообще область применения этой функции? Особенно учитывая то, что пока настройки не освободишь - они не запишутся?

User avatar
John Doe
Бюрократ
Posts: 12831
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post by John Doe »

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

Shmuel
Posts: 6144
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 318 times

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

Post by Shmuel »

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

User avatar
DrKnS
Posts: 5635
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 9 times
Been thanked: 305 times

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

Post by DrKnS »

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

User avatar
DrKnS
Posts: 5635
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 9 times
Been thanked: 305 times

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

Post by DrKnS »

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

Post Reply

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