Ликбез по Lua

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Ликбез по Lua

Post by John Doe »

В данной теме задаём вопросы по Lua.

Для того, чтобы получить начальное представление о языке достаточно почитать какую-нибудь короткую обзорную статью, например:
Для более близкого знакомства рекомендую эти документы:
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

Latest post of the previous page:

Shmuel wrote:Но я обычно собираю все библиотеки, которыми пользуюсь, сам, поэтому данный вопрос для меня не актуален.
Может когда нибудь выложите архивчик с бинарниками используемых вами библиотек, чтобы это вопрос и для нас стал неактуален?

В частности интересует SeleneUnicode.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Ликбез по Луа

Post by Shmuel »

John Doe wrote:
Shmuel wrote:Но я обычно собираю все библиотеки, которыми пользуюсь, сам, поэтому данный вопрос для меня не актуален.
Может когда нибудь выложите архивчик с бинарниками используемых вами библиотек, чтобы это вопрос и для нас стал неактуален?

В частности интересует SeleneUnicode.
Выкладывать не буду, в частном порядке могу послать.
А SeleneUnicode встроена в LuaFAR.
gotar
Posts: 420
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: Ликбез по Луа

Post by gotar »

local path,name = fullname:match("(.-)([^\\/]+)$")
Спасибо
Если Вы будете выкладавать библиотеки, желательно чтобы они были совместимыми с luamacro.dll собираемым t-rex в wine
Docent1
Posts: 561
Joined: Thu 31 Mar, 2005 23:13
Been thanked: 1 time

Re: Ликбез по Луа

Post by Docent1 »

John Doe
Ты можешь дать пример макроса, чтобы при присутствии плагина (Колорера, напимер) по хоткею включать и отключать его? И куда его поместить? Дальше я сам потихоньку разберусь. Спасибо.
Docent1
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

В данной теме задаём вопросы по Lua, а не по макросам, и их миграции из прошлых версий фара.
Зато есть спецтема Перенос макросов из прошлых версий фара в LuaMacro, туда и перенёс последние несколько сообщений.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

Напоролся на одну особенность:
Выдаёт

Code: Select all

test1
test1
Что интересно в luajit нормально

Code: Select all

test1
test2
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Ликбез по Луа

Post by Shmuel »

John Doe wrote:Напоролся на одну особенность
Измените имя переменной arg, и поведение Lua и LuaJIT станет одинаковым в отношении этого скрипта.

В Lua есть опция компиляции LUA_COMPAT_VARARG, по умолчанию включенная.
arg="test2" в функции test2 присваивает величину не переменной окружения, а скрытой локальной переменной arg.

LuaJIT вроде бы даже такой опции не предоставляет, то-есть у него она всегда выключена.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

Да, я в курсе, что это не простое имя, собственно именно поэтому изначально его и хотел использовать.
Цель: не только выполнять скрипты из командной строки (lm:post @filename), но и передавать им параметры.

Типа arg={1,2,3} eval(@filename), но всё это обернуть в функцию do_script(name,...), которая избавит от необходимости указывать полный путь к filename (посредством far.RecursiveSearch)
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

P.S.
Можно конечно пойти дальше, и заменить loadfile какой-нибудь собственной функцией loadscript, которая будет текст скрипта оборачивать в return function(...) end.
Другого пути использовать "честное" обращение к аргументам {...} не вижу.


loadfile так и работает в lua, и чего я спрашивается мудрил...
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Ликбез по Луа

Post by Shmuel »

Сделаем параметры, просто до сих пор никому не надо было.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

Как-то так:

Code: Select all

local path = win.GetEnv("FARPROFILE")..[[\Macros\utils]]

local function execfile(name,...)
  local args = {...}
  far.RecursiveSearch (path,name,function(Item,fullname)
    dofile(fullname,unpack(args))
    return true
  end,far.Flags.FRS_RECUR)
end

_G.lm = execfile

--lm:post lm("someluascript",params)
Только dofile работает немного не так, поэтому

Update
Данный пример нуждается в исправлении, как-то так:
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

Кстати хотел спросить: в примере выше никак не избежать сворачивания/разворачивания varargs?
Или не стоит об этом беспокоиться?
Shmuel wrote:Сделаем параметры, просто до сих пор никому не надо было.
Речь о параметрах для команды lm:post @ , или о чём-то другом?
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Ликбез по Луа

Post by Shmuel »

John Doe wrote:Кстати хотел спросить: в примере выше никак не избежать сворачивания/разворачивания varargs?
Или не стоит об этом беспокоиться?
Прямая передача невозможна, так как ... относится всегда к той функции, которой он передан.
Если беспокоит, можно ограничиться, например, тремя-четырьмя параметрами без vararg.
John Doe wrote:
Shmuel wrote:Сделаем параметры, просто до сих пор никому не надо было.
Речь о параметрах для команды lm:post @ , или о чём-то другом?
Об этом. А вы о чём?
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Ликбез по Луа

Post by John Doe »

Shmuel wrote:Если беспокоит, можно ограничиться, например, тремя-четырьмя параметрами без vararg.
Да вроде бы не беспокоит )
Shmuel wrote:
Речь о параметрах для команды lm:post @ , или о чём-то другом?
Об этом. А вы о чём?
Уточняю что мы об одном и том же.
А что насчёт возможности указывать имя без пути? Не планируется?
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Ликбез по Луа

Post by Shmuel »

John Doe wrote:А что насчёт возможности указывать имя без пути? Не планируется?
Это несложно, но надо продумать всё равно. Мантис, наверное.
Misha60
Posts: 1
Joined: Wed 03 Apr, 2013 14:30

Re: Ликбез по Lua

Post by Misha60 »

Помогите, пожалуйста, исправить ошибку в строке 43 (\?r). xupnpd_ex.lua:

Из-за этой ошибки не запускается xupnpd.
Заранее благодарю.
Last edited by Misha60 on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: [codebox=lua file=untitled.lua]
Post Reply

Return to “Нужна помощь”