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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 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, в дистрибутиве)

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

Полезное по теме: См. также:
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Latest post of the previous page:

Shmuel wrote:Скорее неполнота документации.
Общее правило таково, что т.н. "функции с ограничением в использовании" могут работать только из функции action макроса. Все прочие варианты пролетают (Event, CommandLine, MenuItem, condition).
OK. Тогда хотелось бы поправки документации. Даже не столько для себя - я раз нарвался, теперь, скорее всего, буду помнить - для остальных.
Last edited by IgorZ on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Удалён оверквотинг
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Получилась некоторая избыточность с DeleteRegKeyEx и DeleteRegKey. Может лучше одну DeleteRegKey из которой сначала попытаться вызвать DeleteRegKeyExW, а если не получилось, то DeleteRegKeyW игнорируя AccessMask? А то для DeleteRegKeyEx сейчас возврат непонятный, то ли просто удалить не удалось (раздела нет), то ли функция не поддерживается и надо вызывать DeleteRegKey.
Разум когда-нибудь победит.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Smitis
Две функции сделаны, чтобы не изменять логику старой. Обе останутся.
Что касается win.DeleteRegKeyEx, то можно дифференцировать причину неудачи вторым возвращаемым значением, например числом 1 или 2. Можно и кодом ошибки Windows (кажется он всегда неотрицательный) и -1.
Высказывайтесь.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Намутили MS с этим WOW :facepalm:

Может для DeleteRegKeyEx в случае невозможности вызвать DeleteRegKeyExW возвращать nil?
Разум когда-нибудь победит.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Shmuel wrote:Можно и кодом ошибки Windows (кажется он всегда неотрицательный) и -1.
Код ошибки только для одной функции как-то нелогично. Тогда уж для всех :) Например, переменная win.LastError
Разум когда-нибудь победит.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Smitis wrote: Может для DeleteRegKeyEx в случае невозможности вызвать DeleteRegKeyExW возвращать nil?
Не, это изощрение, проверять, что вернулось: nil или false. Путь лучше API будет тяжелее (возвращение двух значений), но прямолинейнее. Тем более, что это функция не частого применения. Ну, а если кого-то будет раздражать "тяжёлое" API, может легко сделать обёртку на Lua.
Smitis wrote: Код ошибки только для одной функции как-то нелогично. Тогда уж для всех
Значит просто 2 варианта второй возвращаемой величины. Ломку/развитие всего API сейчас делать не в планах.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Shmuel wrote:Не, это изощрение, проверять, что вернулось: nil или false.
Ну почему же, от текущего поведения почти не отличается, что nil, что false логически ведут себя одинаково.
Зато можно писать типа if win.DeleteRegKeyEx(RootKey, Key, "KEY_WOW64_64KEY")==nil then win.DeleteRegKey(RootKey, Key) end когда результат не интересует.
Разум когда-нибудь победит.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Smitis wrote: Ну почему же, от текущего поведения почти не отличается
Потому что так не делает ни одна уважающая себя библиотека. Даже возвращать разные числовые значения (как это делают многие ф-ции Macro API) - и то предпочтительней.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

Многие функции из win, конечно, возвращают true или значение в случае удачи и nil+errormessage в случае ошибки, но достаточно и таких, которые этого принципа совершенно не придерживаются.
Но если в планах привести все к одному поведению, то тогда должно быть что-то типа true или nil + "Можно и кодом ошибки Windows (кажется он всегда неотрицательный) и -1."
Разум когда-нибудь победит.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Smitis wrote: Но если в планах привести все к одному поведению
Я уже сказал чуть выше, что на данный момент таких планов нет. Давайте закроем ф-цию win.DeleteRegKeyEx, остальное не будем трогать.
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 »

Те ОС, в которых нет RegDeleteKeyEx, и 64-битными не бывают, поэтому выключать редирект там необходимости нет.

Т. е. внутри вашего win.DeleteRegKeyEx вполне можно при отсутствии RegDeleteKeyEx вызывать RegDeleteKey, игнорируя флаги, это не повлияет на наблюдаемое поведение.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

DrKnS wrote:Т. е. внутри вашего win.DeleteRegKeyEx вполне можно при отсутствии RegDeleteKeyEx вызывать RegDeleteKey, игнорируя флаги, это не повлияет на наблюдаемое поведение.
Собственно, это я и предлагал. Тогда необходимость в функции RegDeleteKey отпадёт. Поэтому можно оставить одну функцию RegDeleteKey, в которую перенести весь функционал RegDeleteKeyEx.
Разум когда-нибудь победит.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

DrKnS
А как тогда понимать
Minimum supported client Windows Vista, Windows XP Professional x64 Edition [desktop apps only]
Я не в курсе, а что Windows XP x64 Home Edition не существует?

P.S. Посмотрел в википедии - таки существуют Windows XP x64, в которых нет RegDeleteKeyEx. Другой вопрос, стоит ли их поддержка свеч.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

Shmuel wrote:P.S. Посмотрел в википедии - таки существуют Windows XP x64, в которых нет RegDeleteKeyEx. Другой вопрос, стоит ли их поддержка свеч.
только Windows XP 64-Bit Edition for Itanium systems, Version 2002, не? а фар разве под итаниум собирается?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

zg wrote: а фар разве под итаниум собирается?
Чего не знаю, того не знаю.
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 »

zg wrote: а фар разве под итаниум собирается?
Теоретически собрать было возможно, но реально ни одной официальной версии не было (и не будет, т. к. поддержку итаниума в VS > 2010 дропнули).
Post Reply

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