Page 2 of 2

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

Posted: Tue 15 Jul, 2014 20:19
by zg

Latest post of the previous page:

John Doe wrote:Это userdata, а panel.ClosePanel ожидает integer.
значит там ошибка.
John Doe wrote:Да и логически не сходится: обе панели могут принадлежать одному плагину, значит хэндлы должны отличаться?
да. именно по этому хендлу плагин и отличает разные экземпляры своих панелей. об этом, кстати написано в FarEncyclopedia.ru.chm.

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

Posted: Tue 15 Jul, 2014 20:31
by John Doe
zg wrote:да. именно по этому хендлу плагин и отличает разные экземпляры своих панелей. об этом, кстати написано в FarEncyclopedia.ru.chm.
http://api.farmanager.com/ru/exported_f ... openw.html
Здесь?

Меня смутило то, что в описании PanelInfo этот хендл неудачно назван описателем плагина. Теперь буду знать, спасибо.

А с другой стороны, разве мою задачу нельзя решить проще?
В описании PanelControl вроде бы недвусмысленно разрешают в качестве описателя использовать константы PANEL_ACTIVE/PANEL_PASSIVE.
Поэтому мне не очень непонятно, зачем в LuaFAR два отдельных параметра (handle, whatpanel), когда можно было бы использовать один.
Или нельзя? Во всяком случае у меня константы PANEL_ACTIVE/PANEL_PASSIVE работают.

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

Posted: Tue 15 Jul, 2014 20:47
by John Doe
John Doe wrote:
zg wrote:да. именно по этому хендлу плагин и отличает разные экземпляры своих панелей. об этом, кстати написано в FarEncyclopedia.ru.chm.
http://api.farmanager.com/ru/exported_f ... openw.html
Здесь?
Ан нет, не так всё просто...
Формат и содержание описателя не важны для Far Manager'а - они могут быть, к примеру, адресом внутреннего объекта плагина, или адресом структуры с данными плагина, или любым другим уникальным идентификатором, отличным от нуля.
Из этого вытекает, что если панели принадлежат разные плагинам, то их описатели могут не быть уникальны.

Следовательно использовать этот описатель вне плагина как минимум ненадёжно (если вообще возможно).

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

Posted: Tue 31 Dec, 2019 10:49
by John Doe
panel.GetPanelInfo (handle, whatpanel)
После вчерашнего фикса функция требует первых аргументом значение типа uservalue.

Подозреваю что это поломалось случайно, поскольку в Энциклопедии сказано:
https://api.farmanager.com/ru/service_functions/panelcontrol.html wrote:hPanel
Текущий описатель панели. При запросе информации относительно активной панели установите этот параметр равным PANEL_ACTIVE, для пассивной - PANEL_PASSIVE. Это позволяет использовать эту функцию в командах плагина без создания новой панели. Также PANEL_ACTIVE(PANEL_PASSIVE) можно использовать для неплагиновой панели.

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

Posted: Tue 31 Dec, 2019 11:00
by Shmuel
- Данное изменение не было случайным, а вполне намеренным.
- Энциклопедия в данном случае не определяющий документ, смотреть надо в мануале LuaFAR. (Да, там не сказано прямо "userdata").
- Если 1-й аргумент был number, и это работало, то только благодаря "чётному количеству багов". Теперь стало нечётным.

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

Posted: Tue 31 Dec, 2019 11:24
by John Doe
Shmuel wrote: Tue 31 Dec, 2019 11:00 - Данное изменение не было случайным, а вполне намеренным.
Теперь вы объяснили, но из changelog этого не следует:

Code: Select all

shmuel 30.12.2019 16:05:03 +0200 - build 721

1. A fix in GetOpenPanelInfo() for LuaMacro panel modules.
Shmuel wrote: Tue 31 Dec, 2019 11:00 Если 1-й аргумент был number, и это работало, то только благодаря "чётному количеству багов"
Баги действительно надо искоренять.

Но предлагаю рассмотреть возможность реализации number в качестве фичи.
Мы использовали поскольку было удобно:
- один параметр вместо двух.
- ближе к C API.
А для чего дополнительные абстракции, если они не упрощают использование?

Безусловно, на этот счёт могут быть и иные мнения, иначе второй аргумент и не появился бы.
Но ведь можно сделать всё совместимым образом.

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

Posted: Tue 31 Dec, 2019 11:30
by Shmuel
John Doe wrote: Tue 31 Dec, 2019 11:24 Теперь вы объяснили, но из changelog этого не следует:
Данное изменение относится к пункту 2 в чейнжлоге.

Насчёт вашего предложения по модификации данного API (кажется есть и тикет на мантисе), то проблема видимо именно в трудности сделать это совместимым образом.

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

Posted: Tue 31 Dec, 2019 13:04
by John Doe
Shmuel wrote: Tue 31 Dec, 2019 11:30 кажется есть и тикет на мантисе
Нет, до сих пор не было надобности таком тикета, поскольку всё работало желаемым образом (во всяком случае создавалось такое впечатление).

P.S.
https://bugs.farmanager.com/view.php?id=3760