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

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

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

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

Полезное по теме: См. также:
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Latest post of the previous page:

John Doe wrote: Fri 02 Nov, 2018 08:02 Другой скрипт (не ваш) создал настройки, которыми намерен пользоваться некоторое время.
Совет пользовать метод Free() вместо ф-ции FreeSettings() конечно проавильный, но этот "другой скрипт" по идее не должен так делать. По-видимому, этот другой скрипт сохраняет свои настройки по событию ExitFar, но ведь оно может и не произойти (в случае крэша Фар).
Правильная тактика: тебя вызвали - сохрани настройки перед возвращением управления (если их изменял).
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

P.S.
Что касается скриптов luamacro, то в них однозначно НИКОГДА нельзя откладывать освобождение настроек при работе с базой плагина (в примере выше - база фара).
Last edited by John Doe on Fri 02 Nov, 2018 12:11, edited 1 time in total.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

John Doe wrote: Fri 02 Nov, 2018 08:02скрипт берёт и закрывает настройки ВСЕХ скриптов
Опа, так этот список хендлов - он что, не per script, а глобальный, один на всех? Весело тут у вас.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

DrKnS wrote: Fri 02 Nov, 2018 14:39 Весело тут у вас.
В чём веселье-то? Есть функция, потенциально опасная, оставшаяся по историческим причинам. Никто ж не заставляет ею пользоваться. Есть полно других потенциально опасных функций, не так ли?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

Shmuel wrote: Fri 02 Nov, 2018 15:08потенциально опасная, оставшаяся по историческим причинам
Я бы из этих соображений выкинул (тем более, что заменяется элементарно), но хозяин - барин.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Мне не мешает, давно ею не пользуюсь. Если кто-то создаст тикет на трекере, можно и выкинуть.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Я использовал для отладки.
Выкидывать имхо незачем, достаточно добавить предупреждение.
Тикет об этом есть.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

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

Post 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). Хотя мне бы хватило ссылки в документации...
Last edited by buniak_a_h on Sun 04 Nov, 2018 01:58, edited 1 time in total.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

John Doe wrote: Fri 02 Nov, 2018 16:15Выкидывать имхо незачем
А ей есть недеструктивное применение?
достаточно добавить предупреждение
Так их же никто не читает.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

DrKnS wrote: Sun 04 Nov, 2018 03:15 А ей есть недеструктивное применение?
Я применял для отладки. Чтобы гарантированно освободить настройки.
DrKnS wrote: Sun 04 Nov, 2018 03:15 Так их же никто не читает.
Думаю что немножко всё-таки читают)
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

John Doe wrote: Mon 05 Nov, 2018 12:07Чтобы гарантированно освободить настройки.
Caedite eos. Novit enim Dominus qui sunt eius.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Увы.
И я бы предпочёл сохранить эту функцию, пока апи работы с базой у нас глючное.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote: Mon 05 Nov, 2018 14:34И я бы предпочёл сохранить эту функцию, пока апи работы с базой у нас глючное.
я не знаю в чём вам в данном конкретном случае поможет far.FreeSettings, но так делать нельзя. в будущем far.CreateSettings будет возвращать ошибку.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Code: Select all

colordata = editor.GetColor(EditorId, StringNumber, ColorItem)
ColorItem нумеруется с 0
Забыт при ломке апи?
Будет ли меняться теперь?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

John Doe wrote: Thu 15 Nov, 2018 08:54 ColorItem нумеруется с 0
Забыт при ломке апи?
Навряд ли забыт, учитывая, что в мануале явно указано, что нумерация с нуля. Однако сейчас не помню, почему так было сделано.
Поиск по скриптам и LuaFAR-плагинам у меня на диске показал, что эта функция в них не используется.
Если считаете нужным изменить эту ситуацию - на Мантис.
Last edited by Shmuel on Thu 15 Nov, 2018 09:33, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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