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

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

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: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

Latest post of the previous page:

cio у меня есть. А что, такие сложные условия?

Видимо, это то сообщение об ошибке, которое посылает библиотека cio.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

lm:post require"cio".buffersize{width=cio.buffersize().width-1}
Если ширина буфера равна ширине окна, то возникает ошибка

При использовании lua.exe всё как-то понятнее:

Code: Select all

Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> require"cio".buffersize{width=cio.buffersize().width-1}
╧рЁрьхЄЁ чрфрэ эхтхЁэю.
code: 87

stack traceback:
        [C]: in function 'buffersize'
        stdin:1: in main chunk
        [C]: ?
>
Сообщение "Параметр задан неверно" не в той кодировке, но зато в стеке видно виновника (buffersize)

Update http://bugs.farmanager.com/view.php?id=2388
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:Сообщение "Параметр задан неверно" не в той кодировке, но зато в стеке видно виновника (buffersize)
Это системное сообщение. Винда его посылает в 1251, а LuaMacro ожидает UTF-8 и обламывается. Надо подумать, что можно сделать.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

В данном случае сообщение всё равно неинформативно, а источник ошибки не видно.
Ни номера строки, ни стека.

P.S.
Главное что ошибки-то быть не должно, видимо это cio глючит.
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:В данном случае сообщение всё равно неинформативно, а источник ошибки не видно.
Ни номера строки, ни стека.
Замените строку 143 в luamacro.lua на

Code: Select all

        ErrMsg(debug.traceback(macro.coro, ret1))
перезапустите Фар и попробуйте ещё раз.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Какие преимущества перед макросом могут сейчас быть у скрипта, оформленного как LuaFAR плагин? например

Update: ещё одна тема: http://forum.farmanager.com/viewtopic.php?f=15&t=9024
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:Какие преимущества перед макросом могут сейчас быть у скрипта, оформленного как LuaFAR плагин? например
1. Независимость от системы макросов / плагина LuaMacro.
2. Возможность создавать панельные плагины.
3. Доступ к меню плагинов и меню конфигурации плагинов. (уже доступно и макросам)

Линки так плохо выделяются, что я не сразу понял, что "например" - это линк.
LF_FIN как раз легко реализуется макросом: http://forum.farmanager.com/viewtopic.php?f=60&t=7864
Last edited by John Doe on Fri 20 Jun, 2014 15:41, edited 3 times in total.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Shmuel wrote:1. Независимость от системы макросов / плагина LuaMacro.
А когда может понадобиться такая независимость, учитывая что LuaMacro присутствует в дистрибутиве?
Или система макросов накладывает какие-то ограничения?

И не нашёл где взять. Ни в теме, ни на плагринге нет.

На github только исходники
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:
Shmuel wrote:1. Независимость от системы макросов / плагина LuaMacro.
А когда может понадобиться такая независимость, учитывая что LuaMacro присутствует в дистрибутиве?
Или система макросов накладывает какие-то ограничения?

И не нашёл где взять. Ни в теме, ни на плагринге нет.

На github только исходники
Насчёт независимости - трудно сходу ответить небанально. Но думаю, что понадобиться может.
А LuaFAR уже давно не на github, а в Far SVN.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Судя по тому, что doc и examples только на github я подумал что это основное место.
Но сейчас вижу, что тот репозиторий давно не обновлялся, и всё на farmanager.com

Кажется когда-то в дистрибутиве была некая универсальная dll (generic plugin)?
Shmuel
Posts: 6167
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 330 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel »

John Doe wrote:Кажется когда-то в дистрибутиве была некая универсальная dll (generic plugin)?
Generic plugin на месте - это файл luaplug.c. Он используется при сборке luamacro.dll - можете взять это как образец.

P.S. Если вы не хотите ничего собирать - возьмите luamacro.dll - он тоже "generic" и переименуйте в <plugname>.dll на ваш выбор. Далее создайте файлы <plugname>.lua и _globalinfo.lua.
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Понятно, я думал что можно не собирать, а просто использовать одну и ту же dll для разных плагинов (переименовывая, и дополняя соответствующим скриптом)
Shmuel wrote:P.S. Если вы не хотите ничего собирать - возьмите luamacro.dll - он тоже "generic" и переименуйте в <plugname>.dll на ваш выбор. Далее создайте файлы <plugname>.lua и _globalinfo.lua.
Так и собирался, но насторожило что например fin.dll в 3 раза меньше luamacro.dll.
Видимо они просто по-разному собирались, и у luamacro нет зависимости от msvcrt.dll
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

Shmuel wrote:LF_FIN как раз легко реализуется макросом:
Вначале показалось что не работает.
На самом деле всё в порядке, просто удаление точек не предусмотрено: local Pattern = "%s+$"

Чтобы было как в исходном плагине можно сделать local Pattern = "[%s%.]+$"
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by John Doe »

John Doe wrote:Чтобы было как в исходном плагине можно сделать local Pattern = "[%s%.]+$"
Ан нет, так съедается и ".."
Пришлось добавить ещё условие if not FarDialogItem[10]:find("^%.+$")
2useven10
Posts: 4072
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 189 times

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

Post by 2useven10 »

что будет с

Code: Select all

'..\name   '
?
User avatar
John Doe
Бюрократ
Posts: 12872
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 293 times

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

Post by John Doe »

'..\name'
А если вы имеете ввиду прямо в кавычках, то ничего не будет, так и останется.
Post Reply

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