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

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

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

Post by John Doe » Wed 29 Jul, 2009 21:41

Библиотека LuaFAR делает возможным написание плагинов на языке Lua, предоставляя им адаптированную версию FAR API.

Входит в состав FAR manager (начиная с 3.0 build 2851), и доступна для использования в макросах.

Справка по функциям библиотеки — luafar_manual.chm (в дистрибутиве, папка Encyclopedia).
Мануал весьма лаконичен, предполагает что вы ориентируетесь в FAR Plugins API (FarEncyclopedia.ru.chm, в дистрибутиве)

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

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

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Fri 09 Oct, 2015 19:06

Latest post of the previous page:

HaRT, этот макрос у вас не установлен?

User avatar
HaRT
Moderator
Posts: 8048
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

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

Post by HaRT » Fri 09 Oct, 2015 19:15

Shmuel, нет — я только что перепроверил.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Fri 09 Oct, 2015 19:26

Исследовать это проблематично, поскольку проявляется крайне нерегулярно, но рабочее предположение - что Фар вызывает функции плагина из неосновного потока, причём перекрывая эти вызовы во времени с вызовами из основного потока. Это только в AltF7 Фар делает, насколько мне известно. В LuaFAR-плагинах есть защита от этого, но, как видно, не полная. Вообще Фар не должен был бы этого делать, по крайней мере плагинам в отношении FAR API это не разрешается.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Fri 18 Dec, 2015 16:06

В библиотеке явно "потерялась" функция для удаления значений в реестре. Всё остальное есть, перечисление, установка значения, а удаления нет. Может добавите win.DeleteRegValue (по аналогии с win.DeleteRegKey)?
Разум когда-нибудь победит.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Fri 18 Dec, 2015 17:51

Smitis wrote: Может добавите win.DeleteRegValue (по аналогии с win.DeleteRegKey)?
Добавлено.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Fri 18 Dec, 2015 18:55

Спасибо, только там ошибка, в win_DeleteRegValue обработка двух параметров (Root, ValueName), а надо три (Root, Key, ValueName), ну и в RegDeleteValueW соответственно

Ошибка.
Тут получается, что в winapi есть RegDeleteValueW с двумя параметрами и RegDeleteKeyValueW с тремя параметрами.
По логике, win.DeleteRegValue нужно делать с тремя параметрами, RootKey и Key раздельно, по аналогии с другими функциями.
Разум когда-нибудь победит.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Fri 18 Dec, 2015 19:20

Спасибо, исправлено.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Fri 18 Dec, 2015 19:55

Заработало! Спасибо.
Разум когда-нибудь победит.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Sun 20 Dec, 2015 13:06

Баг: win.SetRegKey не правильно определяет длину expandstring
lua:win.SetRegKey("HKCU","Environment","A","string","%systemroot%") - пишет правильно
lua:win.SetRegKey("HKCU","Environment","A","expandstring","%systemroot%") - пишет ровно половину
multistring не проверял multistring вообще непонятно что пишется
Разум когда-нибудь победит.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Sun 20 Dec, 2015 14:11

Smitis wrote: Баг:
Пробуйте.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Mon 21 Dec, 2015 09:06

Спасибо, пробую
Разум когда-нибудь победит.

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Tue 22 Dec, 2015 08:12

Справка macroapi_manual.ru.chm (+en) раздел Плагин LuaMacro\Работа с командной строки - упоминание macro: и lm: можно уже убирать.
Разум когда-нибудь победит.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Tue 22 Dec, 2015 08:26

Smitis wrote: Справка macroapi_manual.ru.chm (+en) раздел Плагин LuaMacro\Работа с командной строки - упоминание macro: и lm: можно уже убирать.
Не понял. Почему можно уже убирать? Что изменилось?

Smitis
Posts: 1455
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 13 times
Been thanked: 23 times
Contact:

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

Post by Smitis » Tue 22 Dec, 2015 09:09

А, сорри, оказывается это ещё работает. Пребывал в абсолютной уверенности, что эти префиксы давно убрали, что даже не проверил. :oops:
Разум когда-нибудь победит.

IgorZ
Posts: 459
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Wed 23 Dec, 2015 06:47

win.SetRegKey портит записываемое значение.

Code: Select all

far.Show(win.GetRegKey("HKCU","Environment","TMP"))
win.SetRegKey("HKCU","Environment","TMP","expandstring",[[%USERPROFILE%\Local Settings\Temp]])
far.Show(win.GetRegKey("HKCU","Environment","TMP"))
Значение до:

Code: Select all

  ╔═══════════════════════════════════════╗
  ║  1│ %USERPROFILE%\Local Settings\Temp ║
  ║  2│ expandstring                      ║
  ╚═════════════ 2 arguments ═════════════╝
Значение после:

Code: Select all

  ╔══════════════════════════════╗
  ║  1│ %USERPROFILE%\Loc炂<c♠ij♀ ║
  ║  2│ expandstring             ║
  ╚════════ 2 arguments ═════════╝
Проверено на Windows XP, Far 3.04479 x86.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Wed 23 Dec, 2015 07:16

IgorZ, это было исправлено 3 дня назад.

IgorZ
Posts: 459
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Wed 23 Dec, 2015 12:15

Shmuel wrote:IgorZ, это было исправлено 3 дня назад.
Спасибо за сверхоперативную реакцию. :)

Post Reply

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