Page 47 of 53

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

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

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

Редактор БД плагинов

Posted: Fri 02 Nov, 2018 08:24
by Shmuel

Latest post of the previous page:

John Doe wrote: Fri 02 Nov, 2018 08:02 Другой скрипт (не ваш) создал настройки, которыми намерен пользоваться некоторое время.
Совет пользовать метод Free() вместо ф-ции FreeSettings() конечно проавильный, но этот "другой скрипт" по идее не должен так делать. По-видимому, этот другой скрипт сохраняет свои настройки по событию ExitFar, но ведь оно может и не произойти (в случае крэша Фар).
Правильная тактика: тебя вызвали - сохрани настройки перед возвращением управления (если их изменял).

Редактор БД плагинов

Posted: Fri 02 Nov, 2018 08:29
by John Doe
Shmuel wrote: Fri 02 Nov, 2018 08:24 По-видимому, этот другой скрипт сохраняет свои настройки по событию ExitFar
Другой скрипт, например, только читает настройки фара.
Shmuel wrote: Fri 02 Nov, 2018 08:24 но ведь оно может и не произойти (в случае крэша Фар).
Строго говоря и это нормально, ведь сам фар ведёт себя аналогично (теряет изменённые настройки при крэше).

P.S.
Что касается скриптов luamacro, то в них однозначно НИКОГДА нельзя откладывать освобождение настроек при работе с базой плагина (в примере выше - база фара).

Редактор БД плагинов

Posted: Fri 02 Nov, 2018 14:39
by DrKnS
John Doe wrote: Fri 02 Nov, 2018 08:02скрипт берёт и закрывает настройки ВСЕХ скриптов
Опа, так этот список хендлов - он что, не per script, а глобальный, один на всех? Весело тут у вас.

Редактор БД плагинов

Posted: Fri 02 Nov, 2018 15:08
by Shmuel
DrKnS wrote: Fri 02 Nov, 2018 14:39 Весело тут у вас.
В чём веселье-то? Есть функция, потенциально опасная, оставшаяся по историческим причинам. Никто ж не заставляет ею пользоваться. Есть полно других потенциально опасных функций, не так ли?

Редактор БД плагинов

Posted: Fri 02 Nov, 2018 15:49
by DrKnS
Shmuel wrote: Fri 02 Nov, 2018 15:08потенциально опасная, оставшаяся по историческим причинам
Я бы из этих соображений выкинул (тем более, что заменяется элементарно), но хозяин - барин.

Редактор БД плагинов

Posted: Fri 02 Nov, 2018 15:53
by Shmuel
Мне не мешает, давно ею не пользуюсь. Если кто-то создаст тикет на трекере, можно и выкинуть.

Редактор БД плагинов

Posted: Fri 02 Nov, 2018 16:15
by John Doe
Я использовал для отладки.
Выкидывать имхо незачем, достаточно добавить предупреждение.
Тикет об этом есть.

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

Posted: Sun 04 Nov, 2018 01:56
by buniak_a_h
Shmuel wrote: Fri 02 Nov, 2018 15:08 Есть функция, потенциально опасная, оставшаяся по историческим причинам. Никто ж не заставляет ею пользоваться.
По-видимому, причиной "подъёма" этой темы был мой скрипт, в котором я неосторожно закрывал settings как раз указанной "небезопасной" функцией. Поясню, почему.
far.FreeSettings присутствует в индексе в верхнем уровне и потому бросается в глаза, а settings:Free() не виден. Кроме того, я знаю, как посмотреть список функций таблица (в частности, _G.far), но я не знаю, как получить (используя терминологию object Pascal-я) список методов объекта определённого класса. А закрыть settings хочется - не только для выполнения commit-а, а просто: я же не знаю, какие ресурсы он использует при этом! Мало ли - ветка реестра заблокирована, хендлер занят и т.п. ... Именно поэтому John Doe (я так думаю) и предлагает поправить документацию с предупреждением и перекрёстной ссылкой на :Free(). Во всяком случае, мне бы это помогло.
Кстати, раз уж она такая "небезопасная", то, может, имело бы смысл расширить её функционал, передавая ей settings (optional). Хотя мне бы хватило ссылки в документации...

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

Posted: Sun 04 Nov, 2018 03:15
by DrKnS
John Doe wrote: Fri 02 Nov, 2018 16:15Выкидывать имхо незачем
А ей есть недеструктивное применение?
достаточно добавить предупреждение
Так их же никто не читает.

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

Posted: Mon 05 Nov, 2018 12:07
by John Doe
DrKnS wrote: Sun 04 Nov, 2018 03:15 А ей есть недеструктивное применение?
Я применял для отладки. Чтобы гарантированно освободить настройки.
DrKnS wrote: Sun 04 Nov, 2018 03:15 Так их же никто не читает.
Думаю что немножко всё-таки читают)

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

Posted: Mon 05 Nov, 2018 14:15
by DrKnS
John Doe wrote: Mon 05 Nov, 2018 12:07Чтобы гарантированно освободить настройки.
Caedite eos. Novit enim Dominus qui sunt eius.

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

Posted: Mon 05 Nov, 2018 14:34
by John Doe
Увы.
И я бы предпочёл сохранить эту функцию, пока апи работы с базой у нас глючное.

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

Posted: Mon 05 Nov, 2018 16:43
by zg
John Doe wrote: Mon 05 Nov, 2018 14:34И я бы предпочёл сохранить эту функцию, пока апи работы с базой у нас глючное.
я не знаю в чём вам в данном конкретном случае поможет far.FreeSettings, но так делать нельзя. в будущем far.CreateSettings будет возвращать ошибку.

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

Posted: Thu 15 Nov, 2018 08:54
by John Doe

Code: Select all

colordata = editor.GetColor(EditorId, StringNumber, ColorItem)
ColorItem нумеруется с 0
Забыт при ломке апи?
Будет ли меняться теперь?

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

Posted: Thu 15 Nov, 2018 09:33
by Shmuel
John Doe wrote: Thu 15 Nov, 2018 08:54 ColorItem нумеруется с 0
Забыт при ломке апи?
Навряд ли забыт, учитывая, что в мануале явно указано, что нумерация с нуля. Однако сейчас не помню, почему так было сделано.
Поиск по скриптам и LuaFAR-плагинам у меня на диске показал, что эта функция в них не используется.
Если считаете нужным изменить эту ситуацию - на Мантис.

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

Posted: Thu 15 Nov, 2018 13:14
by John Doe
Shmuel wrote: Thu 15 Nov, 2018 09:33 Если считаете нужным изменить эту ситуацию - на Мантис.
Я не вижу общей картины, поэтому затрудняюсь определить необходимость.
Кажется что в большинстве подобных случаев нумерация в LuaFAR изменена.
Но поскольку здесь база отсчёта документирована в описании функции, то проблемы никакой нет.