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

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

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

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

Posted: Thu 11 Feb, 2016 12:42
by IgorZ

Latest post of the previous page:

Shmuel wrote:Скорее неполнота документации.
Общее правило таково, что т.н. "функции с ограничением в использовании" могут работать только из функции action макроса. Все прочие варианты пролетают (Event, CommandLine, MenuItem, condition).
OK. Тогда хотелось бы поправки документации. Даже не столько для себя - я раз нарвался, теперь, скорее всего, буду помнить - для остальных.

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

Posted: Sun 06 Mar, 2016 18:26
by Smitis
Получилась некоторая избыточность с DeleteRegKeyEx и DeleteRegKey. Может лучше одну DeleteRegKey из которой сначала попытаться вызвать DeleteRegKeyExW, а если не получилось, то DeleteRegKeyW игнорируя AccessMask? А то для DeleteRegKeyEx сейчас возврат непонятный, то ли просто удалить не удалось (раздела нет), то ли функция не поддерживается и надо вызывать DeleteRegKey.

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

Posted: Sun 06 Mar, 2016 19:07
by Shmuel
Smitis
Две функции сделаны, чтобы не изменять логику старой. Обе останутся.
Что касается win.DeleteRegKeyEx, то можно дифференцировать причину неудачи вторым возвращаемым значением, например числом 1 или 2. Можно и кодом ошибки Windows (кажется он всегда неотрицательный) и -1.
Высказывайтесь.

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

Posted: Sun 06 Mar, 2016 19:35
by Smitis
Намутили MS с этим WOW :facepalm:

Может для DeleteRegKeyEx в случае невозможности вызвать DeleteRegKeyExW возвращать nil?

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

Posted: Sun 06 Mar, 2016 19:44
by Smitis
Shmuel wrote:Можно и кодом ошибки Windows (кажется он всегда неотрицательный) и -1.
Код ошибки только для одной функции как-то нелогично. Тогда уж для всех :) Например, переменная win.LastError

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

Posted: Sun 06 Mar, 2016 19:48
by Shmuel
Smitis wrote: Может для DeleteRegKeyEx в случае невозможности вызвать DeleteRegKeyExW возвращать nil?
Не, это изощрение, проверять, что вернулось: nil или false. Путь лучше API будет тяжелее (возвращение двух значений), но прямолинейнее. Тем более, что это функция не частого применения. Ну, а если кого-то будет раздражать "тяжёлое" API, может легко сделать обёртку на Lua.
Smitis wrote: Код ошибки только для одной функции как-то нелогично. Тогда уж для всех
Значит просто 2 варианта второй возвращаемой величины. Ломку/развитие всего API сейчас делать не в планах.

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

Posted: Sun 06 Mar, 2016 19:59
by Smitis
Shmuel wrote:Не, это изощрение, проверять, что вернулось: nil или false.
Ну почему же, от текущего поведения почти не отличается, что nil, что false логически ведут себя одинаково.
Зато можно писать типа if win.DeleteRegKeyEx(RootKey, Key, "KEY_WOW64_64KEY")==nil then win.DeleteRegKey(RootKey, Key) end когда результат не интересует.

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

Posted: Sun 06 Mar, 2016 20:03
by Shmuel
Smitis wrote: Ну почему же, от текущего поведения почти не отличается
Потому что так не делает ни одна уважающая себя библиотека. Даже возвращать разные числовые значения (как это делают многие ф-ции Macro API) - и то предпочтительней.

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

Posted: Sun 06 Mar, 2016 20:30
by Smitis
Многие функции из win, конечно, возвращают true или значение в случае удачи и nil+errormessage в случае ошибки, но достаточно и таких, которые этого принципа совершенно не придерживаются.
Но если в планах привести все к одному поведению, то тогда должно быть что-то типа true или nil + "Можно и кодом ошибки Windows (кажется он всегда неотрицательный) и -1."

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

Posted: Sun 06 Mar, 2016 20:41
by Shmuel
Smitis wrote: Но если в планах привести все к одному поведению
Я уже сказал чуть выше, что на данный момент таких планов нет. Давайте закроем ф-цию win.DeleteRegKeyEx, остальное не будем трогать.

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

Posted: Sun 06 Mar, 2016 22:12
by DrKnS
Те ОС, в которых нет RegDeleteKeyEx, и 64-битными не бывают, поэтому выключать редирект там необходимости нет.

Т. е. внутри вашего win.DeleteRegKeyEx вполне можно при отсутствии RegDeleteKeyEx вызывать RegDeleteKey, игнорируя флаги, это не повлияет на наблюдаемое поведение.

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

Posted: Sun 06 Mar, 2016 22:59
by Smitis
DrKnS wrote:Т. е. внутри вашего win.DeleteRegKeyEx вполне можно при отсутствии RegDeleteKeyEx вызывать RegDeleteKey, игнорируя флаги, это не повлияет на наблюдаемое поведение.
Собственно, это я и предлагал. Тогда необходимость в функции RegDeleteKey отпадёт. Поэтому можно оставить одну функцию RegDeleteKey, в которую перенести весь функционал RegDeleteKeyEx.

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

Posted: Sun 06 Mar, 2016 23:01
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. Другой вопрос, стоит ли их поддержка свеч.

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

Posted: Sun 06 Mar, 2016 23:51
by zg
Shmuel wrote:P.S. Посмотрел в википедии - таки существуют Windows XP x64, в которых нет RegDeleteKeyEx. Другой вопрос, стоит ли их поддержка свеч.
только Windows XP 64-Bit Edition for Itanium systems, Version 2002, не? а фар разве под итаниум собирается?

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

Posted: Sun 06 Mar, 2016 23:55
by Shmuel
zg wrote: а фар разве под итаниум собирается?
Чего не знаю, того не знаю.

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

Posted: Mon 07 Mar, 2016 01:03
by DrKnS
zg wrote: а фар разве под итаниум собирается?
Теоретически собрать было возможно, но реально ни одной официальной версии не было (и не будет, т. к. поддержку итаниума в VS > 2010 дропнули).